๊ธฐ์
์ด ์นด๋์ฌ์๊ฒ ์ง์ ์น์ธ์ ๋ฐ์ ๊ฒฐ์ ์์คํ
์ ๊ตฌ์ถํ๋ ๋ฐฉ๋ฒ์ ๋น์ฉ๊ณผ ์๊ฐ ๋ฉด์์ ๋นํจ์จ์ ์ด๋ค. ๋ฐ๋ผ์ ์ต์ข
์ ์ผ๋ก ๊ฒฐ์ ๊ฐ ์ด๋ฃจ์ด์ง๋ ์นด๋์ฌ์ ๊ธฐ์
๊ฐ์ ๊ฒฐ์ ๋ฅผ ๋ํํด์ฃผ๋ ํ์ฌ(PG์ฌ
: payment gateway)๊ฐ ์๊ณ , ๋ณดํต PG์ฌ๋ฅผ ํตํด์ ๊ฒฐ์ ๋ฅผ ์งํํ๋ค.
PG์ฌ์ ๊ฐ์ด๋์ ๋ง์ถฐ์ ๊ฒฐ์ ์์คํ ์ ๊ฐ๋ฐํ๋ฉด ์ฌ๋ฌ ์นด๋์ฌ๋ค์ ๋ง์ถฐ์ ์ฌ๋ฌ ๋ฒ ๊ฐ๋ฐ ์์ ์ ์งํํ ํ์๊ฐ ์์ด์ง๋ค.
PG์ฌ๋ ๊ธฐ์
๋ค์๊ฒ ๊ฐ๋ฐ ๊ฐ์ด๋๋ฅผ ์ ๋ฌํ๊ณ , ์ฃผ๋ก asp, php, jsp
๋ฑ์ ์ธ์ด๋ก ์์ฑ๋์ด ์๋ค. ํ์ง๋ง ๊ฐ์ด๋๊ฐ ์๋ฐฑ ํ์ด์ง ์ ๋์ ๋ถ๋์ด๊ธฐ ๋๋ฌธ์ ์์
์ ์๋นํ ์๊ฐ์ด ๊ฑธ๋ฆฐ๋ค.
์ด๋ฌํ ์์ ์ ๋์ ํด์ฃผ๋ ๊ฒฐ์ ์๋ฃจ์ ์ ์ฒด๋ ๋ฑ์ฅํ๋ค. PG์ฌ๋ง๋ค ๋ค๋ฅธ ๊ฐ๋ฐ ๊ฐ์ด๋๋ฅผ ๊ฐ๊ณ ์์ด์ ํ๋์ PG์ฌ์ ๊ณ์ฝ์ ํ๊ณ ๊ฒฐ์ ์์คํ ์ ๊ฐ๋ฐํ ํ์๋ ๋ค๋ฅธ ์ ์ฒด๋ก ์ฎ๊ธฐ๊ธฐ ์ด๋ ต๋ค.
๊ฒฐ์ ์๋ฃจ์
(๊ฒฐ์ API)์
์ฒด
๋ ์ด๋ฌํ ๋ฌธ์ ์ ์ ๋ณด์ํด์ค๋ค. ๊ฒฐ์ ์๋ฃจ์
์
์ฒด๋ฅผ ์ด์ฉํ๋ฉด ๊ฐ๋ฐํ๊ฒฝ๊ณผ ์๊ด์์ด ์ํ๋ PG์ฌ์์ ๊ฒฐ์ ์์คํ
์ ์ฐ๊ฒฐ์ํฌ ์ ์๋ค.
์ค๊ฒฌ, ์ค์ ๊ท๋ชจ ๊ธฐ์ ์ ๊ฒฝ์ฐ PG์ฌ์ ์ง์ ๊ณ์ฝํ๋ ๊ฒ๋ณด๋ค ๊ฒฐ์ ์๋ฃจ์ ์ ์ฒด๋ฅผ ์ด์ฉํ๋ ๊ฒ์ด ํจ์จ์ ์ด๋ค.
๊ฒฐ์ ์ค์ต์์๋ ๊ฒฐ์ ์๋ฃจ์
์
์ฒด ์ค ํ๋์ธ ํฌํธ์(๊ตฌ ์์ํฌํธ)
์ ์ด์ฉํ๋ค. ํฌํธ์์ ์ด์ฉํ๋ ๊ฒฝ์ฐ, ์ฌ์ฉ์๊ฐ ๊ฒฐ์ ๋ฅผ ํตํด ํฌ์ธํธ๋ฅผ ์ถฉ์ ํ๋ ๊ณผ์ ์ ๋ค์๊ณผ ๊ฐ๋ค.
- ์ฌ์ฉ์๊ฐ ๋ธ๋ผ์ฐ์ ์์ ์ถฉ์ ํ๊ธฐ ๋ฒํผ์ ํด๋ฆญ
- ์ถฉ์ ํ๊ธฐ ์ฐฝ์์ ์ํ๋ ๊ธ์ก์ ์ ํํ๊ณ ๊ฒฐ์ ๋ฒํผ ํด๋ฆญ
- ํฌํธ์์์ ์ ๊ณตํ๋ Rest-API๋ฅผ ์ด์ฉํด ๊ฒฐ์ ์์ฒญ
- ๊ฒฐ์ ์ฑ๊ณต ์ ํด๋น ๊ฒฐ์ ์ ๋ํ imp_uid์ ๊ฒฐ์ ๊ธ์ก ๋ฑ์ ๋ฐ์ดํฐ๋ฅผ ๋๋ ค๋ฐ์
- ์ฑ๊ณตํ ๊ฒฐ์ ์ ๋ณด๋ฅผ ๋ฐฑ์๋ ์๋ฒ๋ก mutation
- db์ ์ ์ ํฌ์ธํธ ์ ๋ณด์ ๊ฒฐ์ ๋ด์ญ์ ์ ๋ฐ์ดํธ
์์ ๊ฐ์ ๊ฒฐ์ ๊ณผ์ ์ค ํฌํธ์์ ๋ค์๊ณผ ๊ฐ์ ์ญํ ์ ํ๋ค.
์ฐฝ์
ํ ๋ ๊ฒฐ์ ์น์ธ ๊ธฐ๊ฐ
์ ์ด๋ ์ ๋๋ก ์ก๋๊ฒ ์ข์๊น?
์ต์ 1๋ฌ์ ์ก์์ผ ํ๋ค. ํฌํธ์์ ์ฌ์ฉํ๋ค๊ณ ํด๋ ๊ฐ๊ฐ์ PG์ฌ์ ์นด๋์ฌ์๊ฒ ์น์ธ ๋ฐ ์ฌ์ฌ๋ฅผ ๋ฐ์์ผ ํ๊ธฐ ๋๋ฌธ์ด๋ค!
์น์ธ ์ผ์ : PG์ฌ ๊ณ์ฝ์น์ธ(1์ฃผ) + ์นด๋์ฌ ์ฌ์ฌ(2์ฃผ) => ์ต์ 3์ฃผ ์ด์
- ํฌํธ์ ๊ณ์ ๋ง๋ค๊ธฐ
- ํ ์คํธ ๋ชจ๋๋ก ์ค์
- ์ฌ์ฉํ PG์ฌ ์ ํ
ํน์ ์ด๋ฒคํธ๊ฐ ๋ฐ์ํ์ ๋ ํ ์๋น์ค๋ ์์ฉ ํ๋ก๊ทธ๋จ์ผ๋ก ์๋ฆผ(notification)์ ๋ณด๋ด๋ ๊ธฐ๋ฅ
ํํ ์๋ ๋ฌดํต์ฅ ์
๊ธ
์ ๊ตฌํํ๋ ค๋ฉด ์ด๋ป๊ฒ ํด์ผ ํ ๊น? ํฌํธ์์์๋ ๋ค์๊ณผ ๊ฐ์ด ๋ฌดํต์ฅ ์
๊ธ์ด ์งํ๋๋ค.
- ์ฌ์ฉ์๊ฐ ๋ฌดํต์ฅ ์ ๊ธ์ ์ ํ
- ์์ํฌํธ์์ ์ ๊ณตํ๋ API๋ฅผ ์ด์ฉํด ๊ฐ์ ๊ณ์ข ์์ฑ
- ๊ฒฐ์ ์ค์ด๋ ์น๋ธ๋ผ์ฐ์ ๋ฅผ ์คํ ์ข ๋ฃํ๊ณ , ๊ฐ์ ๊ณ์ข๋ฅผ ๋ฐ๊ธํ ์ํ ์๋น์ค์ ์ ์
- ๊ฐ์ ๊ณ์ข ์ ํจ๊ธฐ๊ฐ ๋ด์ ์ ๊ธ ์๋ฃ
ํ์ง๋ง ์ฌ๊ธฐ์ ๋ฌธ์ ๊ฐ ๋ฐ์ํ๋ค. ๋ธ๋ผ์ฐ์ ์์ ๊ฒฐ์ ๊ฐ ์ด๋ฃจ์ด์ง๋ ๊ฒ์ด ์๋๊ธฐ ๋๋ฌธ์ ๊ฒฐ์ ์๋ฃ ์์ ์ ๊ฒฐ์ ๊ธ์ก๊ณผ imp_uid๋ฅผ ๋ฐ์์ ๋ฐฑ์๋๋ก ๋ณด๋ด์ค ์ ์๋ค. ์ด ์์
์ ์ํด ํฌํธ์์ ์นํ
๋
ธํฐํผ์ผ์ด์
(Webhook notification)
์ ์ ๊ณตํ๋ค.
์นํ ๋ ธํฐํผ์ผ์ด์ ์ ํ์ฉํ๋ฉด ๋ค์๊ณผ ๊ฐ์ ๊ธฐ๋ฅ์ ๊ตฌํํ ์ ์๋ค!
1. ๊ฐ์๊ณ์ข๋ฅผ ์ด์ฉํ ๋ฌดํต์ฅ ์ ๊ธ
2. ๊ฒฐ์ ์ทจ์
3. ์์ฝ ๊ฒฐ์
4. ํ๋ถ
์ด ์ธ์๋ ํฌํธ์์์๋ ์์์ฆ, ์ ๊ธฐ ์์ฝ ๊ฒฐ์ ๋ฑ ๋ค์ํ ๊ธฐ๋ฅ์ ๊ฐ์ง Rest-API
๋ฅผ ์ ๊ณตํ๋ค. Rest-API ๊ฐ์ด๋๋ฅผ ์ฐธ๊ณ ํ๋ฉด ์ข๋ค!
ํฌํธ์ DOCS ํ์ด์ง์ ๊นํ๋ธ์๋ ์์ธํ๊ฒ ์ค๋ช ๋์ด ์๋ค.
ํฌํธ์์ ์ง์ ์ฌ์ฉํ๊ธฐ ์ํด์๋ ํฌํธ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ head
๋ถ๋ถ์ ์ถ๊ฐํด์ค์ผ ํ๋ค. Next.js์์๋ HTML์ ์ง์ ์ ๊ทผํ๊ธฐ ์ด๋ ต๊ธฐ ๋๋ฌธ์ Next.js์์ ์ ๊ณตํ๋ Head ํ๊ทธ
๋ฅผ importํด์ผ ํ๋ค.
๋ํ, ํฌํธ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ถ๊ฐํ๊ธฐ ์ํด Head ํ๊ทธ๋ก script ํ๊ทธ
๋ฅผ ๊ฐ์ธ์ ๊ฒฐ์ ๊ธฐ๋ฅ์ ์ฌ์ฉํ ํ์ด์ง์ return ์์ ๋ฃ์ด์ฃผ๋ฉด ๋๋ค.
import Head from 'next/head';
// ์ต์๋จ์ next/head ์ Head ํ๊ทธ ํธ์ถ
<Head>
<script type="text/javascript" src="https://code.jquery.com/jquery-1.12.4.min.js" ></script>
<script type="text/javascript" src="https://cdn.iamport.kr/js/iamport.payment-1.1.5.js"></script>
</Head>
๊ทธ ํ์๋ ์ฌ์ฉํ๋ ค๋ ํฌํธ์์ ๊ฐ๋งน์ ์๋ณ์ฝ๋๋ฅผ ์ค์ ํด์ผ ํ๋ค. ๊ทธ๋ฆฌ๊ณ window.IMP
๋ก ํฌํธ์์ ๋ถ๋ฌ์์ ์ ์ดํ ์ ์๋ค.
const IMP = window.IMP;
IMP.init("๊ฐ๋งน์ ์๋ณ์ฝ๋");
<br/><br/>
๊ฐ๋งน์ ์๋ณ์ฝ๋
๋ ํฌํธ์ ๊ด๋ฆฌ์ ํ์ด์ง์ ์์คํ
์ค์ -> ๋ด ์ ๋ณด -> ๊ฐ๋งน์ ์๋ณ์ฝ๋์์ ํ์ธํ ์ ์๋ค.
๋๋จธ์ง ์ฝ๋๋ฅผ ์๋ณ์ฝ๋๋ฅผ ์์ฑํ๋ ํ์ด์ง ์์ ์๋ก ์ถ๊ฐํด์ค๋ค.
IMP.request_pay({
pg: "html5_inicis",
pay_method: "card",
//merchant_uid: "๊ฒฐ์ ๋ฒํธ",
name: "์์ด๋ฆฌ๋ฒ ๋ฌด์ ๋ง์ฐ์ค ์ธ 1๊ฐ",
amount: 10000,
buyer_email: "์ด๋ฉ์ผ@gmail.com",
buyer_name: "ํ๊ธธ๋",
buyer_tel: "010-4242-4242",
buyer_addr: "์์ธํน๋ณ์ ๊ฐ๋จ๊ตฌ ์ ์ฌ๋",
buyer_postcode: "01181",
m_redirect_url : "/"
}, function (rsp) { // callback
if (rsp.success) {
alert('๊ฒฐ์ ๊ฐ ์ฑ๊ณตํ์ต๋๋ค.');
// ๊ฒฐ์ ์ฑ๊ณต ๋ก์ง
} else {
alert('๊ฒฐ์ ์ ์คํจํ์ต๋๋ค.');
// ๊ฒฐ์ ์คํจ ๋ก์ง
}
});
์ด์ ํฌํธ์ ๊ด๋ฆฌ์ ํ์ด์ง์์ ์ค์ ํด๋์ PG์ฌ์ ๊ฒฐ์ ํ์ด์ง๋ฅผ ํ๋ก์ ํธ์์ ์ฌ์ฉํ ์ ์๊ฒ ๋์๋ค!
๊ฒฐ์ ๊ฐ ์ฑ๊ณตํ๋ฉด, ํฌํธ์์ผ๋ก๋ถํฐ ํด๋น ๊ฒฐ์ ์ ๋ํ rsp(response)
๋ฅผ ๋ฐ์์ฌ ์ ์๋ค. rsp์๋ ํด๋น ๊ฒฐ์ ์ ๋ํ imp_uid์ ๊ฒฐ์ ๊ธ์ก ๋ฑ์ ์ ๋ณด๊ฐ ๋ด๊ฒจ ์๋ค. ์ด rsp๋ฅผ ์ด์ฉํ์ฌ ํฌ์ธํธ ์ถฉ์ API์ ๊ฒฐ์ ์ ๋ณด๋ฅผ ๋๊ฒจ์ค ์ ์๋ค.
ํฌํธ์ ๊ด๋ฆฌ์ ํ์ด์ง์ ๊ฒฐ์ ์น์ธ๋ด์ญ ํ์ด์ง์์๋ ๊ฒฐ์ ๋ด์ญ(์คํจ ๋ฐ ์ฑ๊ณต)์ ํ์ธํ ์ ์๋ค.