๊ด€๋ฆฌ ๋ฉ”๋‰ด

Wookang makes AI

ํฌํŠธ์› ๊ฒฐ์ œ ์ฒ˜๋ฆฌ ์ •๋ฆฌ ๋ณธ๋ฌธ

Moonlit ๊ฐœ๋ฐœ๊ธฐ

ํฌํŠธ์› ๊ฒฐ์ œ ์ฒ˜๋ฆฌ ์ •๋ฆฌ

ํ‘ธ๋ฅธ๊นƒ๋ฐœ๐Ÿณ๏ธ 2023. 11. 28. 19:33

1. ์œ ์ €๊ฐ€ ๊ฒฐ์ œ ๋ฒ„ํŠผ์„ ๋ˆ„๋ฅด๋ฉด
2. ์‚ฌ์ „ ๊ฒ€์ฆ์„ ์œ„ํ•ด ์ƒํ’ˆ์˜ ๊ฐ€๊ฒฉ์„ ํฌํŠธ์›์— ์•Œ๋ ค์ค€๋‹ค
- ajx๋กœ ๋‚ด ์„œ๋ฒ„์— ๊ฐ„ ํ›„ ํฌํŠธ์›์œผ๋กœ request๋ฅผ 2๋ฒˆ ๋‚ ๋ฆฐ๋‹ค
- ์ฒซ๋ฒˆ์งธ๋ฅผ ๋‚ ๋ ค token์„ ๋ฐ›๊ณ 
- ๋‘๋ฒˆ์งธ๋กœ ์œ„ token๊ณผ ํ•จ๊ป˜ merchant_uid (์„œ๋ฒ„์—์„œ ์ง์ ‘ ์ƒ์„ฑํ•œ ์ฃผ๋ฌธ id), ๊ฐ€๊ฒฉ์„ ํ•จ๊ป˜ ๋‚ ๋ ค์ค€๋‹ค.
- order DB์˜ ์ฝœ๋ ‰์…˜์„ ์ƒˆ๋กœ ๋งŒ๋“ค๊ณ  ์œ„์—์„œ ๋งŒ๋“  merchant_uid๋ฅผ ์ €์žฅํ•œ๋‹ค.
- merchant_uid ๋ฅผ ํด๋ผ๋กœ ๋ฆฌํ„ดํ•œ๋‹ค.

3. ๋‹ค์‹œ ํด๋ผ๋กœ ๋Œ์•„์˜จ ํ›„ IMP.request_pay()๋ฅผ ๋‚ ๋ฆฐ๋‹ค.

        this.IMP.request_pay({

           // pg์—๋Š” ํฌํŠธ์› > ๊ฒฐ์ œ์—ฐ๋™์—์„œ PG์ƒ์ ์•„์ด๋”” (์‚ฌ์ดํŠธ์ฝ”๋“œ)๋ฅผ ๋„ฃ์–ด์ฃผ๋ฉด ๋œ๋‹ค

           // pg             : 'html5_inicis',

           // pg             : 'INIBillTst',// ์ •๊ธฐ ๊ฒฐ์ œ KG์ด๋‹ˆ์‹œ์Šค. ์ด๊ฑด ์นด๋“œ์ž…๋ ฅ์ฐฝ์ด ๋œฌ๋‹ค

           // pg             : '9810030929',// ๋‹ค๋‚ . 

           // pg             : 'nice.iamport00m',// ๋‚˜์ด์Šค ํŽ˜์ด๋จผ์ธ 

           // pg             : 'T0000',// NHN KCP

           pg             : 'INIpayTest',// ์ผ๋ฐ˜ ๊ฒฐ์ œ KG์ด๋‹ˆ์‹œ์Šค

           pay_method,

           merchant_uid,

           name           : storeItem.name,

           amount         : storeItem.price.point,

           buyer_email    : this.ownerEmail,

           buyer_name     : this.ownerNickname,

 

           m_redirect_url : `${domain}/store/payment/done`, // ๋ชจ๋ฐ”์ผ์€ ๋ฆฌ๋””๋ ‰์…˜์„ ์‚ฌ์šฉํ•œ๋‹ค. ์•„๋ž˜ ์ฝœ๋ฐฑ์œผ๋กœ ๊ฐ’์ด ๋“ค์–ด์˜ค์ง€ x

           notice_url : `${apiBaseURL}/order/portone_webhook`,// ์›นํ›…์„ ์ˆ˜์‹ ํ•  ์ฃผ์†Œ

 

         }, function(rsp) {// pc์—์„œ๋Š” ์—ฌ๊ธฐ iframe ์ฝœ๋ฐฑ๋ฐฉ์‹์œผ๋กœ ์ฒ˜๋ฆฌํ•œ๋‹ค

           if ( rsp.status == 'paid' ) {// ๋ชจ๋ฐ”์ผ๊ณผ ๋™์ผํ•˜๊ฒŒ ๊ทธ๋Œ€๋กœ redirectํ•œ๋‹ค

             self.$router.push(`/store/payment/done?imp_success=true&imp_uid=${rsp.imp_uid}&merchant_uid=${rsp.merchant_uid}`);

           } else {// ๊ฒฐ์ œ ์‹คํŒจ์‹œ

             self.$router.push('/store/payment/done?imp_success=false');

           }

         });


- 2๋ฒˆ์—์„œ ๋ฐ›์€ merchant_uid๋ฅผ ์ธ์ž๋กœ ํ•จ๊ป˜ ๋‚ ๋ฆฐ๋‹ค.
- ๊ทธ๋Ÿผ merchant_uid๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํฌํŠธ์›์—์„œ ๊ฒฐ์ œ๋ฅผ ์ง„ํ–‰ํ•˜๋ฉฐ ๊ฐ€๊ฒฉ์— ํ‹€๋ฆผ์ด ์—†๋Š”์ง€ ํ™•์ธํ•˜๊ณ  ๋ฌธ์ œ๊ฐ€ ์—†๋‹ค๋ฉด ๊ฒฐ์ œ๋ฅผ ํ•œ๋‹ค.
- m_redirect_url ์™€ notice_url ๊ฐ€ ํ•ต์‹ฌ์ด๋‹ค.
- m_redirect_url ๊ฒฐ์ œ๊ฐ€ ๋๋‚˜๋ฉด ์ด๋™ํ•  ํด๋ผ url์„ ๋„ฃ๋Š”๋‹ค. 
- pc๋Š” ์ฝœ๋ฐฑ์œผ๋กœ ๋“ค์–ด์˜ค๊ณ  ๋ชจ๋ฐ”์ผ์—์„œ๋Š” ์—ฌ๊ธฐ๋กœ ๋“ค์–ด์˜จ๋‹ค. ๋”ฐ๋ผ์„œ ๊ฒฐ์ œ๋ฐฉ๋ฒ•์„ ํ†ต์ผํ•˜๊ธฐ ์œ„ํ•ด pc์˜ ์ฝœ๋ฐฑ์„ ์“ฐ์ง€ ์•Š๊ณ  ๊ฒฐ์ œ ์™„๋ฃŒ ํ›„์—๋Š” ํ•ญ์ƒ ์—ฌ๊ธฐ๋กœ ์ด๋™ํ•˜๊ฒŒ ํ•œ๋‹ค.
- ์ฟผ๋ฆฌ์ŠคํŠธ๋ง์œผ๋กœ 3๊ฐœ์˜ ๊ฐ’์ด ํ•จ๊ป˜ ๋“ค์–ด์˜จ๋‹ค.  imp_success๋Š” ๊ฒฐ์ œ์„ฑ๊ณต์—ฌ๋ถ€, imp_uid, merchant_uid ๋“ฑ์ด๋‹ค
- notice_url ๋Š” ๊ฒฐ์ œ๊ฐ€ ์™„๋ฃŒ๋˜์—ˆ์„ ๋•Œ ํฌํŠธ์›์—์„œ ๋‚ด๊ฒŒ ๋ณด๋‚ผ ์›นํ›… ์ฃผ์†Œ๋ฅผ ๋„ฃ์–ด์ค€๋‹ค.
- ์›นํ›…์œผ๋กœ๋Š” 2๊ฐœ์˜ ์ฟผ๋ฆฌ ์ŠคํŠธ๋ง์ด ๋“ค์–ด์˜จ๋‹ค. imp_uid, merchant_uid


4. ํฌํŠธ์› doc์„ ๋ณด๋ฉด ์ฝœ๋ฐฑ ์œ„์ฃผ๋กœ ์„ค๋ช…์ด ๋˜์–ด ์žˆ๋Š”๋ฐ ์ด๊ฑด ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š”๋‹คx
- ์™œ๋ƒ๋ฉด ์ฝœ๋ฐฑ์„ ์ด์šฉํ•  ๊ฒฝ์šฐ ๋„คํŠธ์› ์ƒํ™ฉ์— ๋”ฐ๋ผ ๊ฒฐ์ œ๊ฐ€ ๋ˆ„๋ฝ๋ ์ˆ˜๋„ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ด๋ž€๋‹ค.
https://developers.portone.io/docs/ko/auth/guide/5/post?v=v1

5. ๋”ฐ๋ผ์„œ ๋ชจ๋“  ๊ฒฐ์ œ ์ฒ˜๋ฆฌ๋Š” notice_url๋กœ ๋“ค์–ด์˜จ ์›นํ›… ์ •๋ณด๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•œ๋‹ค. 
- ํ•˜์ง€๋งŒ ์ด ๊ฒฝ์šฐ์—๋Š” ํ•ญ์ƒ ์›นํ›…์œผ๋กœ ๋จผ์ € ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ๊ฐ€ ๋œ ํ›„์— ์ฝœ๋ฐฑ์ด ํ˜ธ์ถœ๋˜์•ผ๋งŒ pc์—์„œ $router.push() ํ–ˆ์„ ๋•Œ ์ •๋ณด์˜ ๋ˆ„๋ฝ์ด ์—†๊ฒŒ ๋œ๋‹ค.
- ํฌํŠธ์›์—์„œ๋Š” ์ด๋ฅผ ์œ„ํ•ด ์ˆœ์„œ ๋ณด์žฅ์ด ํ•„์š”ํ•˜๋‹ค๋ฉด ๋ฉ”์ผ๋กœ ์•Œ๋ ค๋‹ฌ๋ž€๋‹ค.

https://developers.portone.io/docs/ko/result/webhook?v=v1 
- ๋ฉ”์ผ์„ ๋ณด๋‚ด ์ˆœ์„œ ๋ณด์žฅ์„ ์š”์ฒญํ–ˆ๋”๋‹ˆ ๋ฐ”๋กœ ์ฒ˜๋ฆฌ๋˜์—ˆ๋‹ค.

 

6. ์ด์ œ ์›นํ›…์—์„œ ๊ฐ€๊ฒฉ์ด ๋ฐ”๋€Œ์ง€ ์•Š์•˜๋Š”์ง€๋งŒ ํ™•์ธํ•˜๋ฉด ๋œ๋‹ค.
- ์›นํ›…์œผ๋กœ imp_uid, merchant_uid ๊ฐ’์ด ๋“ค์–ด์˜จ๋‹ค.
- ๋จผ์ € ํฌํŠธ์›์—์„œ ํ† ํฐ์„ ๋ฐ›์€ ํ›„ imp_uid ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ๋‹ค์‹œ ํฌํŠธ์›์— ๊ฒฐ์ œ ์ •๋ณด๋ฅผ ์š”์ฒญํ•ด ๋ฐ›์•„์˜จ๋‹ค.
- ๊ฒฐ์ œ ์ •๋ณด ์•ˆ์—๋Š” ๊ฒฐ์ œ์™€ ๊ด€๋ จํ•œ ๋ชจ๋“  ์ •๋ณด๋“ค์ด ๋“ค์–ด์žˆ๋‹ค.
- ์ด์ œ merchant_uid ๋กœ ๋‚ด db์—์„œ 2๋ฒˆํ• ๋•Œ ์ €์žฅํ•ด ๋‘” order๋ฅผ ๋ถˆ๋Ÿฌ์˜จ๋‹ค.
- ๊ทธ๋ฆฌ๊ณ  ์ด order์— ์žˆ๋Š” ๊ฐ€๊ฒฉ๊ณผ ํฌํŠธ์›์—์„œ ๋ฐ›์•„์˜จ ์ตœ์ข… ๊ฒฐ์ œ ์ •๋ณด์˜ ๊ฐ€๊ฒฉ์„ ๋น„๊ตํ•˜์—ฌ ํ‹€๋ฆฐ๊ฒŒ ์žˆ๋Š”์ง€ ํ™•์ธํ•œ๋‹ค. ์ด๊ฒŒ ์‚ฌํ›„๊ฒ€์ฆ์ด๋‹ค.
- ๋‘˜์˜ ๊ฐ’์ด ๊ฐ™๋‹ค๋ฉด ์™„์ „ํžˆ ์•ˆ์ „ํ•œ ๊ฒฐ์ œ๋ผ๋Š” ๋œป์ด๋‹ค.
- ๊ฐ™๋‹ค๋ฉด ์ด์ œ ํฌํŠธ์›์—์„œ ๋ฐ›์•„์˜จ ๊ฒฐ์ œ์ •๋ณด๋ฅผ ๋‚ด order์— ์ €์žฅํ•˜๋ฉด๋œ๋‹ค. ํ‹€๋ฆฌ๋‹ค๋ฉด ํ•ด๋‹น order์— ๊ธฐ๋ก์„ ๋‚จ๊ธฐ๊ณ  ์ทจ์†Œํ•˜๋ฉด ๋œ๋‹ค.
- ๋ฆฌํ„ด์€ ์•„๋ฌด๊ฒƒ๋„ ํ•  ํ•„์š” ์—†๋‹ค.

7. ์‹คํŒจํ–ˆ๋˜ ์„ฑ๊ณตํ–ˆ๋˜ ๊ฒฐ์ œ๊ฐ€ ๋๋‚˜๋ฉด m_redirect_url ๋กœ imp_success, imp_uid, merchant_uid ๋“ฑ 3๊ฐœ์˜ ์ฟผ๋ฆฌ์ŠคํŠธ๋ง์ด ํ•จ๊ป˜ ๋“ค์–ด์˜จ๋‹ค. 
- ์ด๊ฑด ํฌํŠธ์›์—์„œ ๋‚ ๋ ค์ฃผ๋Š” ๊ฒƒ์ด๋‹ค.
- ์ด ์ •๋ณด๋“ค์„ ๋ฐ›์•„์„œ ๊ทธ๋Œ€๋กœ ๋‹ค์‹œ ๋‚ด ์„œ๋ฒ„๋กœ ๋ณด๋‚ด์ค€๋‹ค.
- ๋‚ด ์„œ๋ฒ„์—์„  ์ด ์ฟผ๋ฆฌ์ŠคํŠธ๋ง์„ ๋‹ค์‹œ ํฌํŠธ์›์— ๋‚ ๋ ค ์ตœ์ข… ๊ฒฐ์ œ ์ •๋ณด๋ฅผ ๋ฐ›์•„์˜จ๋‹ค. 
- ๋‚ด DB๋Š” ๋’ค์งˆ ํ•„์š”๊ฐ€ ์—†๋‹ค. ๊ทธ๋ƒฅ ํฌํŠธ์›์— ์ ‘์†ํ•ด์„œ ์ •๋ณด๋ฅผ ๊ฐ€์ ธ์˜ค๊ณ  ๊ทธ๊ฑธ ๋‹ค์‹œ ํด๋ผ๋กœ ๋ณด๋‚ด์ฃผ๋ฉด ๋œ๋‹ค.
- ํด๋ผ์—์„œ๋Š” ํ•ด๋‹น ๊ฒฐ์ œ ์ •๋ณด๊ฐ€ ์„ฑ๊ณต์ด๋ผ๋ฉด ์„ฑ๊ณตํŽ˜์ด์ง€๋ฅผ ๋ณด์—ฌ์ฃผ๊ณ  ์‹คํŒจ๋ผ๋ฉด ์‹คํŒจ ํŽ˜์ด์ง€๋ฅผ ๋ณด์—ฌ์ฃผ๋ฉด ๋œ๋‹ค.

8. ๊ฒฐ์ œ๋ฃจํ‹ด์ด ์™„์ „ํžˆ ๋‹ฌ๋ผ์ง€๋ฉด์„œ ํฌ์ธํŠธ ์•„์ดํ…œ ๊ฒฐ์ œ๋Š” ๋ถ„๊ธฐ์‹œ์ผœ ๋”ฐ๋กœ ์ฒ˜๋ฆฌํ–ˆ๋‹ค.

 

์ด๊ฑธ๋กœ ๋ชจ๋“ ๊ธฐ๊ธฐ์—์„œ ๊ฒฐ์ œ, ํ™˜๋ถˆ, ์ทจ์†Œ ์‹œ์Šคํ…œ ๊ฐœ๋ฐœ ์™„๋ฃŒ

์ด์ œ pg์‚ฌ ๊ณ„์•ฝ ์ง„ํ–‰ํ•œ๋‹ค.

Comments