๐ Front End Developer ์ Back End ๋์ ๊ธฐ ! ๐
์ด ๊ธ์ PROJECT LION : ํธ์ฝ์น ๊ฐ์ฌ๋์ ๊ฐ์๋ฅผ ๋ค์ผ๋ฉฐ ์ฐธ๊ณ ํ ๊ธ์ ๋๋ค.
์์ ์ค, ๊ฐ๋ฐ๊ณผ์ ์ ๋ฆฌ ๋ฐ issue๊ฐ ๋์๋ ๋ถ๋ถ๋ค์ ๊ณต์ ๋ฐ ๊ธฐ๋กํ๊ณ ์ ์์ฑํ๊ฒ ๋์์ต๋๋ค.
โ payment ๊ฒฐ์ ๊ฐ ์๋ฃ๋๋ค๋ฉด, ์๋ฃ๋ ์ ๋ณด๋ฅผ ajax ๋ด๋ถ done data์ ์ ๋ฌํ๋ ์์ ์ ํด ๋ณด๊ฒ ๋ค.
์ด๋ฒ ์์ ์ ํ๋ฉด์ ๊ตฌ๋ฌธ์ ์ต์ํ์ง๊ฐ ์๋ค๋ณด๋, ์ ๋ง ๋ณ๊ฒ๋ ์๋ ๋๋ฒ๊น ๋ฌธ์ ๋ก ์๋ฒฝ๊น์ง ์ฌ๋ฏธ๋๊ฒ(?) ํด๊ฒฐํด๋ณธ ์ด๋ฒ ์ฑํฐ์ด๋ค ๐ตโ๐ซ
ํ์คํ ๊ฒช์ ๋ฌธ์ ๋ฅผ ํ ๋๋ก ์์ ๋ด์ฉ์ ๊ณต์ ํด ๋ณด๊ณ ์ ํ๋ค.
์ฐ์ , controllers > payment file์์ ์ฑ๊ณตํ๊ฒ ๋๋ฉด order id์ message๋ฅผ ์ ๋ฌํด ์ฃผ๊ฒ ๋๋ค.
๊ทธ ์ ๋ฌ๋ฐ์ ๊ฐ์ ajax done ๊ฐ์ ํ์ฉํ ๊ฒ์ด๋ค.
- ๊ฐ๋งน์ ์๋ฒ ๊ฒฐ์ API ์ฑ๊ณต์ ๋ก์ง
= ์ฑ๊ณต ์ message๋ฅผ success๋ก ์ ๋ฌํ์ผ๋ฏ๋ก ( return jsonify({'order_id': merchant_uid, 'message': 'success'} = ์ ๋ฌ์ ๋ฐ๊ธฐ ์ํด jsonify ๊ตฌ๋ฌธ ์ฌ์ฉ )
), data์ message๊ฐ success์ผ ๊ฒฝ์ฐ ๊ตฌ๋ฌธ์ ํ๋ ์์ฑํ๋ค.
= ์ฑ๊ณตํ๋ค๋ฉด, data์์ ์ ๋ฌ๋ฐ์ id๋ฅผ ์ ์ํ๊ณ , success ์ฃผ์๊ฐ์ ์์ฑํ์ฌ ํด๋น url๋ก ์์ฒญํ๋ค๋ ๊ตฌ๋ฌธ์ด๋ค.
๐งจ๐งจ์ฌ๊ธฐ์ ์ฃผ์๊ฐ์ ๋๊ธธ ๋ ' ๊ฐ ์๋, ` ๋ก ๋๊ฒจ์ฃผ์ด์ผ ํ๋ค. ์ด ๋ฐฑํฑ์ ์ก์๋ด๊ธฐ์ํด ์ ์์ ์ธ ์ฝ๋๋ฅผ ๋ช๋ฒ์ด๋ ์์๋ค ๐๐
ํ์ง๋ง ํ์คํ ์๊ณ ๋๋ฒ๋ค์ ์ค์ํ์ง ์์ ๊ฒ ๊ฐ์ ๋ป๊น์ ๊ฒฝํ์ด์๋ค๊ณ ์๊ฐํ๋ค ๐ ๐งจ๐งจ
- ๊ฒฐ์ ์คํจ ์ ๋ก์ง
= ๋จ์ํ๋ค. alert ์ฐฝ์ ๋์ฐ๊ณ ์ํ list(main) page๋ก ์ด๋ ์์ผ์ฃผ๋ฉด ๋๋ค. ํ์ง๋ง, data alert๋ฅผ ์ฌ์ฉํ๊ธฐ ์ํด์๋ ๋ช๊ฐ์ง ์ธํ ์ด ํ์ํ๋ค.
= (controllers > payment.py) message๋ก ์ ๋ฌ์ ํ๊ณ , alert์ฐฝ์์ data์ message๋ก ๋ฐ์์ค๋ค๋ฉด ํด๋น ๋ด์ฉ์ด ์ ์์ ์ผ๋ก ๋ณด์ฌ ์ง ๊ฒ์ด๋ค.
- SUCCESS API ์์ฑ ( controllers > payment.py )
= ajax ๋ด๋ถ์์๋ order_id๊ฐ์ parameter๋ก ๋ฐ์์๊ธฐ ๋๋ฌธ์ ํด๋น ๊ตฌ๋ฌธ์์๋ order_id๋ฅผ ์์ฒญํด ๋ฐ์์ค๊ณ , ๊ทธ ์์ฒญํ ๊ณ ์ id๊ฐ์ ๋๊ฒจ์ฃผ์๋ค.
- payment_complete.html ๋ด๋ถ์์ ๊ฐ ์ถ๋ ฅ
= ํด๋น ์ฃผ๋ฌธ ๋ด์ญ์ ์์ธํ๊ฒ ํ์ธํ๊ธฐ ์ํด ์ฃผ๋ฌธ ์๋ฃ ๋ฉ์์ง ๋ฐ order_id๊ฐ๋ง ๋๊ฒจ์ฃผ์๋ค.
- ์ฃผ๋ฌธ ๋ฐ ๊ฒฐ์ ํ ์คํธ
= ํ์ง๋ง ๊ฒฐ์ ์ "๋น์ ์์ ์ธ ๊ฒฐ์ ์ ๋๋ค." ๋ผ๋ alert๊ฐ ์ถ๋ ฅ ๋ ๊ฒ์ด๋ค. ์คํจ๋์ด fail ๊ตฌ๋ฌธ์ผ๋ก ํ๊ฒผ๋ค๋ ๋ป์ด๋ค.
= ๋ฐ์ดํฐ๊ฐ ์๊ฑฐ๋ amount์ ์ํ ๊ฐ๊ฒฉ์ด ์ผ์นํ์ง ์์ ๊ฒฝ์ฐ์ else ๊ตฌ๋ฌธ์ด ์๋๋์์ ๊ฒ์ด๋ค.
์ด์ ๋ product์ price๋ string๊ฐ์ผ๋ก ์กด์ฌํ๋๋ฐ, payment_data์ amount๋ int๋ก ๋์ด์๋ค. type์ด ๋ฌ๋ผ์ ๊ฐ์ง ์์ ๋ถ๋ถ์ด ์๊ธด ๊ฒ์ด๋ค.
๋ฐฉ๋ฒ์, product๋ฅผ ์ ์ฅํ ๋ int๊ฐ์ผ๋ก ๋ณ๊ฒฝํด์ฃผ๊ณ
update ๋ฅผ ํด์ค๋๋ price๊ฐ์ int๊ฐ์ผ๋ก ๋ณ๊ฒฝ ์์ผ์ค๋ค.
์ด์ ๋ณ๋ค๋ฅธ ๋ณ์๊ฐ ์๋ค๋ฉด, ์ฃผ๋ฌธ ๋ฐ ๊ฒฐ์ ๊ฐ ์ ์์ ์ผ๋ก ์๋ฃ ๋ ๊ฒ์ด๋ค.
ํ ์คํธ๋ฅผ ํตํด ํ์ธ ํด ๋ณด๊ฒ ๋ค.
= ์ํ์ ๋ณด, ์ฃผ๋ฌธ์ ๋ณด, ๊ฒฐ์ ์ ๋ณด ๋ฑ์ด db์ ๋ด๊ธด ๋ด์ญ์ด๋ฉฐ, ์ค์ ์ฃผ๋ฌธ ํ ๊ฒฐ์ ๊น์ง ๊ฑฐ์ณ ๊ธ์ก์ด ๋น ์ ธ๋๊ฐ๋ ๊ฒ๋ ์ ์์ ์ผ๋ก ์๋๋๋ ๊ฒ์ ํ์ธํ์๋ค!
์ด๋ ๊ฒ ์ฃผ๋ฌธ ํ ๊ฒฐ์ ๊น์ง ๊ตฌํ์ ํด ๋ณด์๋ค.
์จ๋ผ์ธ ์คํ ์ด ์์ ์ ํ๋ ์ค ๊ฐ๊ฐ์๊ธฐ๊ฐ ๊ฒน์ณ ๋๊น์ง ๋ง๋ค ์ ์์๊น ๊ฑฑ์ ํ๋๋ฐ, ์์ ์ค๊ฐ๋ง๋ค ์ฌ์ ์๊ฐ์ด ์๊ฒจ ์ฐจ์ง์์ด ๋ง๋ฌด๋ฆฌ ํ ์ ์์ ๊ฒ ๊ฐ๋ค ๐
๋ค์์๊ฐ์๋ ๊ตฌ๋งค ๋ชฉ๋ก์ ๋ง๋ฌด๋ฆฌ ํด ๋ณด๊ฒ ๋ค.