๐Ÿฆ Python Online Store ๋งŒ๋“ค๊ธฐ 23ํŽธ - ์ƒํ’ˆ ๊ฒฐ์ œ(4)

yohan-record[web]ยท2022๋…„ 9์›” 3์ผ
0

python onlinestore ๊ฐœ๋ฐœ์ผ์ง€

๋ชฉ๋ก ๋ณด๊ธฐ
23/25
post-thumbnail

๐ŸŽˆ Front End Developer ์˜ Back End ๋„์ „๊ธฐ ! ๐ŸŽˆ

์ด ๊ธ€์€ PROJECT LION : ํ˜ธ์ฝ”์น˜ ๊ฐ•์‚ฌ๋‹˜์˜ ๊ฐ•์˜๋ฅผ ๋“ค์œผ๋ฉฐ ์ฐธ๊ณ ํ•œ ๊ธ€์ž…๋‹ˆ๋‹ค.

์ž‘์—… ์ค‘, ๊ฐœ๋ฐœ๊ณผ์ • ์ •๋ฆฌ ๋ฐ issue๊ฐ€ ๋˜์—ˆ๋˜ ๋ถ€๋ถ„๋“ค์„ ๊ณต์œ  ๋ฐ ๊ธฐ๋กํ•˜๊ณ ์ž ์ž‘์„ฑํ•˜๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

1. payment complete ์„ฑ๊ณต

โœ payment ๊ฒฐ์ œ๊ฐ€ ์™„๋ฃŒ๋œ๋‹ค๋ฉด, ์™„๋ฃŒ๋œ ์ •๋ณด๋ฅผ ajax ๋‚ด๋ถ€ done data์— ์ „๋‹ฌํ•˜๋Š” ์ž‘์—…์„ ํ•ด ๋ณด๊ฒ ๋‹ค.

์ด๋ฒˆ ์ž‘์—…์„ ํ•˜๋ฉด์„œ ๊ตฌ๋ฌธ์— ์ต์ˆ™ํ•˜์ง€๊ฐ€ ์•Š๋‹ค๋ณด๋‹ˆ, ์ •๋ง ๋ณ„๊ฒƒ๋„ ์•„๋‹Œ ๋””๋ฒ„๊น… ๋ฌธ์ œ๋กœ ์ƒˆ๋ฒฝ๊นŒ์ง€ ์žฌ๋ฏธ๋‚˜๊ฒŒ(?) ํ•ด๊ฒฐํ•ด๋ณธ ์ด๋ฒˆ ์ฑ•ํ„ฐ์ด๋‹ค ๐Ÿ˜ตโ€๐Ÿ’ซ

ํ™•์‹คํžˆ ๊ฒช์€ ๋ฌธ์ œ๋ฅผ ํ† ๋Œ€๋กœ ์ž‘์—…๋‚ด์šฉ์„ ๊ณต์œ ํ•ด ๋ณด๊ณ ์ž ํ•œ๋‹ค.

์šฐ์„ , controllers > payment file์—์„œ ์„ฑ๊ณตํ•˜๊ฒŒ ๋˜๋ฉด order id์™€ message๋ฅผ ์ „๋‹ฌํ•ด ์ฃผ๊ฒŒ ๋œ๋‹ค.

๊ทธ ์ „๋‹ฌ๋ฐ›์€ ๊ฐ’์„ ajax done ๊ฐ’์— ํ™œ์šฉํ•  ๊ฒƒ์ด๋‹ค.

  1. ๊ฐ€๋งน์  ์„œ๋ฒ„ ๊ฒฐ์ œ API ์„ฑ๊ณต์‹œ ๋กœ์ง
    = ์„ฑ๊ณต ์‹œ message๋ฅผ success๋กœ ์ „๋‹ฌํ–ˆ์œผ๋ฏ€๋กœ ( return jsonify({'order_id': merchant_uid, 'message': 'success'} = ์ „๋‹ฌ์„ ๋ฐ›๊ธฐ ์œ„ํ•ด jsonify ๊ตฌ๋ฌธ ์‚ฌ์šฉ )
    ), data์˜ message๊ฐ€ success์ผ ๊ฒฝ์šฐ ๊ตฌ๋ฌธ์„ ํ•˜๋‚˜ ์ƒ์„ฑํ•œ๋‹ค.

= ์„ฑ๊ณตํ•œ๋‹ค๋ฉด, data์—์„œ ์ „๋‹ฌ๋ฐ›์€ id๋ฅผ ์ •์˜ํ•˜๊ณ , success ์ฃผ์†Œ๊ฐ’์„ ์ƒ์„ฑํ•˜์—ฌ ํ•ด๋‹น url๋กœ ์š”์ฒญํ•œ๋‹ค๋Š” ๊ตฌ๋ฌธ์ด๋‹ค.

๐Ÿงจ๐Ÿงจ์—ฌ๊ธฐ์„œ ์ฃผ์†Œ๊ฐ’์„ ๋„˜๊ธธ ๋•Œ ' ๊ฐ€ ์•„๋‹Œ, ` ๋กœ ๋„˜๊ฒจ์ฃผ์–ด์•ผ ํ•œ๋‹ค. ์ด ๋ฐฑํ‹ฑ์„ ์žก์•„๋‚ด๊ธฐ์œ„ํ•ด ์ •์ƒ์ ์ธ ์ฝ”๋“œ๋ฅผ ๋ช‡๋ฒˆ์ด๋‚˜ ์—Ž์—ˆ๋‹ค ๐Ÿ˜‚๐Ÿ˜‚
ํ•˜์ง€๋งŒ ํ™•์‹คํžˆ ์•Œ๊ณ  ๋‘๋ฒˆ๋‹ค์‹œ ์‹ค์ˆ˜ํ•˜์ง€ ์•Š์„ ๊ฒƒ ๊ฐ™์•„ ๋œป๊นŠ์€ ๊ฒฝํ—˜์ด์—ˆ๋‹ค๊ณ  ์ƒ๊ฐํ•œ๋‹ค ๐Ÿ˜Ž ๐Ÿงจ๐Ÿงจ


  1. ๊ฒฐ์ œ ์‹คํŒจ ์‹œ ๋กœ์ง
    = ๋‹จ์ˆœํ•˜๋‹ค. alert ์ฐฝ์„ ๋„์šฐ๊ณ  ์ƒํ’ˆ list(main) page๋กœ ์ด๋™ ์‹œ์ผœ์ฃผ๋ฉด ๋œ๋‹ค. ํ•˜์ง€๋งŒ, data alert๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ๋ช‡๊ฐ€์ง€ ์„ธํŒ…์ด ํ•„์š”ํ•˜๋‹ค.
    = (controllers > payment.py) message๋กœ ์ „๋‹ฌ์„ ํ•˜๊ณ , alert์ฐฝ์—์„œ data์˜ message๋กœ ๋ฐ›์•„์ค€๋‹ค๋ฉด ํ•ด๋‹น ๋‚ด์šฉ์ด ์ •์ƒ์ ์œผ๋กœ ๋ณด์—ฌ ์งˆ ๊ฒƒ์ด๋‹ค.

  1. SUCCESS API ์ƒ์„ฑ ( controllers > payment.py )
    = ajax ๋‚ด๋ถ€์—์„œ๋„ order_id๊ฐ’์„ parameter๋กœ ๋ฐ›์•„์™”๊ธฐ ๋•Œ๋ฌธ์— ํ•ด๋‹น ๊ตฌ๋ฌธ์—์„œ๋„ order_id๋ฅผ ์š”์ฒญํ•ด ๋ฐ›์•„์˜ค๊ณ , ๊ทธ ์š”์ฒญํ•œ ๊ณ ์œ  id๊ฐ’์„ ๋„˜๊ฒจ์ฃผ์—ˆ๋‹ค.

  1. payment_complete.html ๋‚ด๋ถ€์—์„œ ๊ฐ’ ์ถœ๋ ฅ
    = ํ•ด๋‹น ์ฃผ๋ฌธ ๋‚ด์—ญ์„ ์ƒ์„ธํ•˜๊ฒŒ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•ด ์ฃผ๋ฌธ ์™„๋ฃŒ ๋ฉ”์‹œ์ง€ ๋ฐ order_id๊ฐ’๋งŒ ๋„˜๊ฒจ์ฃผ์—ˆ๋‹ค.

  1. ์ฃผ๋ฌธ ๋ฐ ๊ฒฐ์ œ ํ…Œ์ŠคํŠธ
    = ํ•˜์ง€๋งŒ ๊ฒฐ์ œ ์‹œ "๋น„์ •์ƒ์ ์ธ ๊ฒฐ์ œ์ž…๋‹ˆ๋‹ค." ๋ผ๋Š” alert๊ฐ€ ์ถœ๋ ฅ ๋  ๊ฒƒ์ด๋‹ค. ์‹คํŒจ๋˜์–ด fail ๊ตฌ๋ฌธ์œผ๋กœ ํŠ•๊ฒผ๋‹ค๋Š” ๋œป์ด๋‹ค.
    = ๋ฐ์ดํ„ฐ๊ฐ€ ์—†๊ฑฐ๋‚˜ amount์™€ ์ƒํ’ˆ ๊ฐ€๊ฒฉ์ด ์ผ์น˜ํ•˜์ง€ ์•Š์€ ๊ฒฝ์šฐ์— else ๊ตฌ๋ฌธ์ด ์ž‘๋™๋˜์—ˆ์„ ๊ฒƒ์ด๋‹ค.

์ด์œ ๋Š” product์˜ price๋Š” string๊ฐ’์œผ๋กœ ์กด์žฌํ•˜๋Š”๋ฐ, payment_data์˜ amount๋Š” int๋กœ ๋˜์–ด์žˆ๋‹ค. type์ด ๋‹ฌ๋ผ์„œ ๊ฐ™์ง€ ์•Š์€ ๋ถ€๋ถ„์ด ์ƒ๊ธด ๊ฒƒ์ด๋‹ค.


๋ฐฉ๋ฒ•์€, product๋ฅผ ์ €์žฅํ•  ๋•Œ int๊ฐ’์œผ๋กœ ๋ณ€๊ฒฝํ•ด์ฃผ๊ณ 


update ๋ฅผ ํ•ด์ค„๋•Œ๋„ price๊ฐ’์„ int๊ฐ’์œผ๋กœ ๋ณ€๊ฒฝ ์‹œ์ผœ์ค€๋‹ค.


์ด์ œ ๋ณ„๋‹ค๋ฅธ ๋ณ€์ˆ˜๊ฐ€ ์—†๋‹ค๋ฉด, ์ฃผ๋ฌธ ๋ฐ ๊ฒฐ์ œ๊ฐ€ ์ •์ƒ์ ์œผ๋กœ ์™„๋ฃŒ ๋  ๊ฒƒ์ด๋‹ค.
ํ…Œ์ŠคํŠธ๋ฅผ ํ†ตํ•ด ํ™•์ธ ํ•ด ๋ณด๊ฒ ๋‹ค.
= ์ƒํ’ˆ์ •๋ณด, ์ฃผ๋ฌธ์ •๋ณด, ๊ฒฐ์ œ์ •๋ณด ๋“ฑ์ด db์— ๋‹ด๊ธด ๋‚ด์—ญ์ด๋ฉฐ, ์‹ค์ œ ์ฃผ๋ฌธ ํ›„ ๊ฒฐ์ œ๊นŒ์ง€ ๊ฑฐ์ณ ๊ธˆ์•ก์ด ๋น ์ ธ๋‚˜๊ฐ€๋Š” ๊ฒƒ๋„ ์ •์ƒ์ ์œผ๋กœ ์ž‘๋™๋˜๋Š” ๊ฒƒ์„ ํ™•์ธํ•˜์˜€๋‹ค!

์ด๋ ‡๊ฒŒ ์ฃผ๋ฌธ ํ›„ ๊ฒฐ์ œ๊นŒ์ง€ ๊ตฌํ˜„์„ ํ•ด ๋ณด์•˜๋‹ค.

์˜จ๋ผ์ธ ์Šคํ† ์–ด ์ž‘์—…์„ ํ•˜๋˜ ์ค‘ ๊ฐœ๊ฐ•์‹œ๊ธฐ๊ฐ€ ๊ฒน์ณ ๋๊นŒ์ง€ ๋งŒ๋“ค ์ˆ˜ ์žˆ์„๊นŒ ๊ฑฑ์ •ํ–ˆ๋Š”๋ฐ, ์ˆ˜์—… ์ค‘๊ฐ„๋งˆ๋‹ค ์—ฌ์œ ์‹œ๊ฐ„์ด ์ƒ๊ฒจ ์ฐจ์งˆ์—†์ด ๋งˆ๋ฌด๋ฆฌ ํ•  ์ˆ˜ ์žˆ์„ ๊ฒƒ ๊ฐ™๋‹ค ๐Ÿ˜Ž

๋‹ค์Œ์‹œ๊ฐ„์—๋Š” ๊ตฌ๋งค ๋ชฉ๋ก์„ ๋งˆ๋ฌด๋ฆฌ ํ•ด ๋ณด๊ฒ ๋‹ค.

profile
๐Ÿฑโ€๐Ÿ Front End Developer

0๊ฐœ์˜ ๋Œ“๊ธ€