Bootpay JS
ํ์ฌ ๋ฒ์ API-v1 ์ ์ฅ์์ ๋๋ค
- API-v2 (SDK 4.0.0) ๋ฒ์ ์ private ์ ์ฅ์๋ก ๋ณ๊ฒฝ๋์๊ณ , https://www.npmjs.com/package/@bootpay/client-js ๋ก ๋ณ๊ฒฝ๋์์ต๋๋ค.
- API-v2 (SDK 4.0.0) ๋ฒ์ ์ typescript๋ก ์์ฑ๋์์ผ๋ฉฐ, SSR ๊ธฐ๋ฐ ํ๋ ์์ํฌ, CDN๋ฑ ๋ชจ๋ ์ง์ํฉ๋๋ค.
- ๊ธฐ๋ณธ v1 ๋ฒ์ ์ ๊ณ์ํด์ ์ ์ง๋ณด์ํ ์์ ์ด๊ณ , ์ ๊ท ๊ธฐ๋ฅ์ v2๋ก ์ง์๋ฉ๋๋ค.
Change Log
3.3.6 (Stable)
์ค๋๋ development-package-dependency ์ ๋ฆฌ
3.3.5
babel-cli > glob-parent ๋ฒ์ ์ผ๋ก ์ธํ ๋ณด์ ์ทจ์ฝ์ ์ ๊ฑฐ
3.3.4
์ค๋ฅ ๋ฐ์์ event ์ ์ก ๋ฒ๊ทธ ์์ ( error event์ Message๊ฐ null์ธ ๊ฒฝ์ฐ ์ฒ๋ฆฌ ์๋จ )
SuperAgent์์ ์ด๋ฒคํธ ์ ์ก์ ์ํธํ๋ ๋ ์ค๋ฅ ์์ธ์ฒ๋ฆฌ ์ถ๊ฐ
3.3.3
๊ฒฐ์ ์ฐฝ ์ํ ์ ๋ณด ์ ์ก์ ์ค๋ฅ๊ฐ ๋๋ฉด ๊ด๋ จ ์๋ฌ์ฒ๋ฆฌ ๋ฒ๊ทธ ์์
์นด์นด์ค ์ ๊ธฐ๊ฒฐ์ 0์ ๊ฒฐ์ ๋ก ์ค์ ํ๋ฉด ๋น๋งํค๋ง ๊ฐ์ ธ์ฌ ์ ์๋๋ก ๊ฐ์
3.3.2
์์ปดํ์ด๋จผ์ธ ์นด๋์ ๊ธฐ๊ฒฐ์ (๋์งํธ) ๋ฒ๊ทธ ์์
- ๊ฒฐ์ ๋ฐฉ๋ฒ digital_card_rebill ์ถ๊ฐ
3.3.1
ํตํฉ๊ฒฐ์ 1000์ ๋ฏธ๋ง ๊ฒฐ์ ํ์ ๋ฒ๊ทธ ์์
- method blank ์ฒ๋ฆฌ ์ถ๊ฐ, methods ๋ค๊ฒฐ์ ์์ฒญ์ validation ์ถ๊ฐ
3.3.0
popupAsyncRequest ์ถ๊ฐ
- promise ๊ธฐ๋ฐ์ผ๋ก ๋์ํ๋ ํจ์๋ฅผ ์ ๋ฌํ ๊ฒฝ์ฐ resolveํจ์์ request์ ํ์ํ ๋ฐ์ดํฐ๋ฅผ ์ ๋ฌํ๋ฉด ํ์ ์ด ๋จ๋ฉด์ ๊ฒฐ์ ์ฐฝ์ด ์์ฑ
- ios safari์ ๊ฒฝ์ฐ scroll๋ก ์ธํด iFrame์ ํฐ์น์์ญ์ ๋ฒ๊ทธ๊ฐ ์๊ธฐ๋ ๋ณ์๋ก ์ธํด ํด๋น ๋ฌธ์ ๋ฅผ ํ์ ์ผ๋ก ๋์ฒด
- popupAsyncRequest๋ฅผ ํ ๊ฒฝ์ฐ ์กฐ๊ฑด์ ์ค์ ํ์ ์ฐฝ์ ๋์ธ์ง ์๋๋ฉด ์ผ๋ฐ์ ์ธ iFrame์ ๋์ธ์ง ์ ํ์ด ๊ฐ๋ฅ
๋ชจ๋ฐ์ผ custom method ์คํ ์ต์ ํ
- ๋ชจ๋ฐ์ผ์์ custom ํจ์ ์คํ์ ๊ฐ์ thread ์์ ๋์ ์คํ๋ ๊ฒฝ์ฐ ๋ฌด์๋๋ ํ์ ์ ๊ฑฐ
ํ์ ์ผ๋ก ํตํฉ๊ฒฐ์ ์ฐฝ ์งํ
- ํ์ ์ผ๋ก ํตํฉ์ฐฝ์ด ๊ฐ๋ฅํ๋๋ก ์์
3.2.6
๋ฒ๊ทธ ์์
- ๊ฒฐ์ ์์ ์ค ๊ธ์ก์ผ๋ก ์ธํ ์ค๋ฅ๊ฐ ๋ฐ์๋์์ ๋ ๋ค์ ๊ฒฐ์ ์ฐฝ์ด ๋จ์ง ์๋ ๋ฒ๊ทธ ์์
3.2.5
๊ธฐ๋ฅ ์ถ๊ฐ
- ๊ฐ์๊ณ์ข ํ์ ์ผ๋ก ๋์ ์ ๊ฒฝ์ฐ iFrame์ฐฝ์ผ๋ก ๊ฐ์๊ณ์ข ์ ๊ธ ๊ฒฐ๊ณผ๋ฅผ ๋ณผ ์ ์๋๋ก ๊ธฐ๋ฅ ์ถ๊ฐ
3.2.4
๊ธฐ๋ฅ ์ถ๊ฐ
- ํ์ ์ผ๋ก ๊ฒฐ์ ์ฐฝ ์งํ์ ๋ถ๋ชจ์ฐฝ์์ ๊ฒฐ์ ์ฐฝ ๋ซ๊ธฐ ๋ฒํผ ํ์ฑํ๊ธฐ๋ฅ ์ถ๊ฐ
- ํ์ ๊ด๋ จ ์ด๋ฒคํธ ๋ฒ๊ทธ ์์
- ๋จ์ผ ๊ฒฐ์ Lock ์ถ๊ฐ
3.2.3
๊ธฐ๋ฅ ๋ณ๊ฒฝ
- ๋ชจ๋ฐ์ผ ์ฌํ๋ฆฌ์์ ํ์ ๊ฒฐ์ ์ฐฝ์ ๋์ธ ๊ฒฝ์ฐ ๋์์ฐฝ์ด ๋์์ง๋ง ๋ชจ๋ ๋ธ๋ผ์ฐ์ ๋ชจ๋ OS์ ๋ํด ๋์์ฐฝ์ด ๋จ๋๋ก ๋ณ๊ฒฝ ( window.opener ๊ด๋ จ ๋ฒ๊ทธ ํํผ )
- quick_popup ๊ธฐ๋ฅ ์ถ๊ฐ ( ๊ฒฐ์ ํ๊ธฐ ๋ฒํผ์ ๋๋ฅธ ํ ํ์ ์ด ๋จ๊ธฐ ๊น์ง ajax(ํํญ&ํฌ๋กฌ)๋ 300ms์ด์ ์ง์ฐ(์ฌํ๋ฆฌ) ์์ด ํ์ ์ฐจ๋จ ์์ด ๋ฐ๋ก ๊ฒฐ์ ์ฐฝ์ ํ์ ์ผ๋ก ๋์ฐ๊ธฐ ์ํ ๋ ์ฐ๋ ๊ธฐ๋ฅ )
3.2.2
์๋ก์ด ๊ธฐ๋ฅ
- Easy Card ๊ธฐ๋ฅ ์ถ๊ฐ ( ๋ถํธํ์ด์์ ์ ๊ณตํ๋ ๊ฐํธ๊ฒฐ์ ์นด๋ ๊ธฐ๋ฅ ์ถ๊ฐ )
3.2.1
๋ฒ๊ทธ ์์
- ๊ฒฐ์ ์๋ฃ ํ ์ผ๋ถ ์ํ๋ช ์ ์กฐ๊ฑด์์ ํ์ ์ฐฝ์์ ๋ชป๋์์ค๋ ๋ฒ๊ทธ ์์
- UserToken ์ ๋ณด๋ฅผ ๋ณด๋ด๋ Params ์ถ๊ฐ ( ๊ฐํธ๊ฒฐ์ ์ฉ )
- ๊ฒฐ์ ํ์ spec์ด undefined์ผ ๊ฒฝ์ฐ ๊ฒฐ์ ์งํ ๋ถ๊ฐ ๋ฒ๊ทธ ์์
3.2.0
์๋ก์ด ๊ธฐ๋ฅ
- ๋ค์ด๋ฒํ์ด ํ์ ์ ๋ ๋ฒํผ์ด ๋ค์ด๋ฒํ์ด ์์์ผ๋ก ํต์ผ ๋์์ต๋๋ค.
- ํ์ ์ ๋์ฐ๊ธฐ ์ about:blank๋ก ๋งํ๋์ง ํ์ธํ๊ณ ์๋งํ์ผ๋ฉด ๋ฐ๋ก ๋์ฐ๊ณ ๋งํ์ผ๋ฉด ํ์ ์ฐฝ์ผ๋ก ์ ๋ํ๋ ๋ฒํผ์ ๋ณด์ฌ์ฃผ๋ ๋ก์ง์ด ์ถ๊ฐ๋์์ต๋๋ค.
๋ฒ๊ทธ ์์
- ํ์ด์ฑ ๋ค์ด๋ฒํ์ด IE11์์ ๊ฒฐ์ ์๋ฃ ์ฒ๋ฆฌ ์๋๋ ๋ฒ๊ทธ ์์ ๋์์ต๋๋ค.
๋ฏธํด๊ฒฐ ์ด์
- ํ์ด์ฑ ๋ค์ด๋ฒํ์ด๋ ๋ค์ด๋ฒ ๋ณด์์ ์ฑ ์ผ๋ก ์ธํด ํ์ ์ผ๋ก ์งํ๋ฉ๋๋ค. PC ์ฌํ๋ฆฌ์ ๊ฒฝ์ฐ ์ฌํ๋ฆฌ ๋ฒ๊ทธ๋ก ์ธํด ํ์ ์์์ ๋ค๋ฅธ ํ์ ์ ๋์ธ ๋ ๋ค์ด๋ฒํ์ด์ชฝ์์ ํ์ (์ด๋ฏธ ์ฐจ๋จํด์ ๊ฐ ๋์์ผ๋) ์ฐจ๋จํด์ ๋ฅผ ํด๋ฌ๋ผ๋ ๋ฌธ์ ๊ฐ ์์ต๋๋ค. ํ์ฌ๋ ๋ค์ด๋ฒํ์ด๊ฐ PC ์ฌํ๋ฆฌ์์๋ ์งํ์ด ๋์ง ์์ต๋๋ค.
3.1.1
์๋ก์ด ๊ธฐ๋ฅ
- delivery_price ( ๋ฐฐ์ก๋น ) ๋ฅผ ์ถ๊ฐ๋ก ๋ฐ์ต๋๋ค.
๋ณ๊ฒฝ๋ ์
- ๋ค๋ ๋ณธ์ธ์ธ์ฆ ๊ด๋ จ ์๋ก์ด ์ํธํ ๋ฐฉ์์ผ๋ก ์ฌ์ฉ๋ฉ๋๋ค. ( ๊ธฐ์กด 3.1.0 ์ดํ ์ฌ์ฉ์๋ถ๋ค์ unique๊ฐ์ด ๋ฌ๋ผ์ง ์ ์์ต๋๋ค. ์ ์ํด์ฃผ์๊ธฐ ๋ฐ๋๋๋ค. )
3.1.0
๋ณ๊ฒฝ๋ ์
- Progress ์ ๋๋ฉ์ด์ ๋ณ๊ฒฝ
- ๊ฒฐ์ ์ฐฝ Size Stylesheet ๋ณ๊ฒฝ
3.0.8
์๋ก์ด ๊ธฐ๋ฅ
- ๊ฒฐ์ ๋งํฌ ์์ฑ ํ ๊ฒฐ์ ์ฐฝ์ ๋์ฐ๋ ๊ธฐ๋ฅ ์ถ๊ฐ ( ๊ฒฐ์ ์์ฒญ REST API๋ ๊ณต๊ฐ ์์ )
3.0.7
๊ธฐ๋ฅ๋ณ๊ฒฝ
- ํ์ ๊ฒฐ์ ์ ํ์ Instance ์ฒดํฌ interval 3000ms -> 1000ms๋ก ๋ณ๊ฒฝ
- extra popup option ( ๊ฐ์ ์ ์ผ๋ก ํ์ ์ ๋์์ ๊ฒฐ์ ํ๋ ๊ธฐ๋ฅ ) ๊ธฐ๋ฅ ์ถ๊ฐ ( ์ผ๋ถ PG๋ง ์ฌ์ฉ ๊ฐ๋ฅ )
3.0.6
๋ฒ๊ทธ ์์
- close ํจ์ ์คํ ์ ์ต๋ช ํจ์๊ฐ ๊ฐํ์ ์ผ๋ก ๋ชจ๋ ์คํ๋๋ ๋ฒ๊ทธ ์์ ( ajax ์ดํ ์คํ๋๋ ๊ฒฝ์ฐ )
3.0.5
์๋ก์ด ๊ธฐ๋ฅ
- Stage ์๋ฒ ์ถ๊ฐ
- JS Version ๊ธฐ๋ก ๋ฒ๊ทธ ์์
3.0.4
๊ธฐ๋ฅ ๋ณ๊ฒฝ
- Angular Universal ์ปดํ์ผ์ localStorage ์๋ฌ ์์
- ์๋๋ก์ด๋ (9.0 ํ์ด) ํ์ ์ ์ฑ ๋ณ๊ฒฝ์ผ๋ก ์ฐํ์ฝ๋ ์ถ๊ฐ
3.0.3
๊ธฐ๋ฅ ๋ณ๊ฒฝ
- ๋ถํธํ์ด ๊ด๋ จ ์ด๋ฒคํธ๋ฅผ ํธ์ถ์ Bindingํ๋๋ก ๋ณ๊ฒฝ
3.0.2
์๋ก์ด๊ธฐ๋ฅ
- ๋ค์ด๋ฒํ์ด ์ฃผ๋ฌธํ ๊ฒฐ์ ์ ๋ณด ์ถ๊ฐ params
- third party API ์ต์ ๊ธฐ๋ฅ ์ถ๊ฐ
3.0.1
๋ณตํฉ๊ธฐ๋ฅ
- use_order_id: 1 ๊ณผ ๊ฐ์ 1, 0์ ๊ฐ์ ์ง๊ด์ ์ผ๋ก true, false๋ ํจ๊ป ํ์ฉ
์๋ก์ด ๊ธฐ๋ฅ
- ๋ค์ด๋ฒํ์ด ์ฃผ๋ฌธํ ์์ฒญ ์ถ๊ฐ
- ํ์ด์ฑ ๊ฒฐ์ ์๋ฃ ํ ์ฐฝ ๋ซ๊ธฐ ์ต์ ์ถ๊ฐ
- ๊ฒฐ์ ์๋ฃ ํ ์๋ฃ ๋ฒํผ ๋ ธ์ถ ์ถ๊ฐ
3.0.0
์๋ก์ด ๊ธฐ๋ฅ
- ์์ผ๋ก ์๋ก ์ ๊ณต๋ ๊ฒฐ์ ๋ฐฉ์(๊ธฐ์กด PG ๊ฒฐ์ ์ด์ธ์)์ ๋ํ ์ ๋ฐ์ดํธ ์ด๋ฃจ์ด์ก์ต๋๋ค.
- REST API๋ก ๊ฒฐ์ ์น์ธ์ด ๊ฐ๋ฅํฉ๋๋ค. ์ข ๋ ์ ๋ฐํ ๊ฒฐ์ ๊ฒ์ฆ์ด ๊ฐ๋ฅํด์ก์ต๋๋ค. ( Docs์์ ์ฌ์ฉ๋ฒ์ ์ ๋ฐ์ดํธ ์ค )
- ์ผ๋ถ PG์์ iFrame์ด ์๋๋ ๋ฌธ์ ๊ฐ ์์ด์ Mobile Safari๋ฅผ ๋์ํ๊ธฐ ์ํด POPUP ๊ฒฐ์ ์ฐฝ ๋ก์ง์ด ์ถ๊ฐ ๋์์ต๋๋ค. ์ผ๋ถ PG์ฌ์ ๊ฒฐ์ ์๋จ์ POPUP์ผ๋ก ๋์ผํ ๋ก์ง์ผ๋ก ๊ฒฐ์ ๊ฐ ์งํ๋ฉ๋๋ค.
๋ฒ๊ทธ ์์ ๋ด์ญ
- ํ์ ๊ฒฐ์ ์ผ ๊ฒฝ์ฐ iOS Safari๋ ์ฌ์ฉ์์ ๊ฐ์ ์ด ํ์ํ Direct Interactive ๋ฒํผ ์ถ๊ฐ ( ๋ฒํผ์ด ์์ผ๋ฉด ํ์ ์ฐจ๋จ ๋์ด ์๋ ๊ฒฝ์ฐ ํ์ ์ด ๋จ์ง ์์ )
- ๊ฒฐ์ ์ฐฝ CSS ์์ ( ๋ฒํผ ์์์ ๋ถํธํ์ด ๋ฉ์ธ ์ปฌ๋ฌ๋ก ํต์ผ )
- iOS ์ธ์ฑ์์ iFrame์ผ๋ก ๊ฒฐ์ ์ฐฝ์ ๋์ธ ๊ฒฝ์ฐ ํญ ์์น๊ฐ ์ฌ๋ฐ๋ฅด์ง ์๋ ๋ฌธ์ ์์ ( Bug Fixed )
- Progress Position ๋ชจ๋ฐ์ผ ์ผ ๊ฒฝ์ฐ ์ฝ๊ฐ ์๋ก ์์
- Popup ๊ฒฐ์ ์์ Trigger ์์ฒญ์ POST -> GET ๋ฐฉ์์ผ๋ก ๋ณ๊ฒฝ ( ์์ดํฐ ์ธ์ฑ ๋์ )
- ํ Framework์์ postMessage ์ฌ์ฉ์ json parsing ์๋ฌ ์๋๋๋ก Filter ์ถ๊ฐ
- iFrame iOS์์ Scroll ๋ฒ๊ทธ ์์ ( ์ผ๋ถ PG์์ ์คํฌ๋กค์ด ์์ฐ์ค๋ฝ๊ฒ ๋ด๋ ค๊ฐ์ง ์๋ ๋ฌธ์ ํด๊ฒฐ )
2.1.1
- ๊ฐ๋งน์ ์์ order_id๋ฅผ PK๋ก PG์ฌ๋ก ์ ์ก๊ธฐ๋ฅ ( KCP๋ง ๊ฐ๋ฅ - ์ฐจํ ๋ค๋ฅธ ๊ฐ๋งน์ ๋ ์ ๋ฐ์ดํธ ์์ - use_order_id: 1๋ก ์ค์ ํ๋ฉด ์ฌ์ฉ ๊ฐ๋ฅ )
2.1.0
- IE์์ transactionConfirm ํจ์๊ฐ ๋๋ฒ ํธ์ถ๋๋ ๋ฌธ์ ๊ฐ ์์ต๋๋ค. ConfirmLock์ ํตํด ํ๋ฒ๋ง ํธ์ถ๋๋๋ก ์์ ํ์์ต๋๋ค. ( Bug Fixed )
- escrow ๊ฒฐ์ ์ฌ๋ถ๋ฅผ ์ ํํ๋ ๋ถ๋ถ์ด extra์์ ๋ณด๋ผ ์ ์๋๋ก ์ ๋ฐ์ดํธ ๋์์ต๋๋ค. ( ๊ธฐ๋ฅ์ถ๊ฐ )
- ์ผ๋ถ ๋ชจ๋ฐ์ผ ์นด๋ ๊ฒฐ์ ์์ iFrame์์ ์ฑ์นด๋ ๋ฐ ISP๊ฐ ํธ์ถ์๋๋ ๋ฌธ์ ๊ฐ ์์ด์ Form ๋ฐฉ์ ๊ฒฐ์ ๋ฅผ ํ ์ ์๋๋ก ๋ณ๊ฒฝ์ด ๋์์ต๋๋ค. ์์ฒญ์ ๊ฒฐ์ ๋ฆฌํด ๊ฒฐ๊ณผ๋ฅผ ๋ฐ์ return_url params๋ฅผ ๋ณด๋ด์ ์น์ธ ์ ๋ฐ์ดํฐ๋ฅผ ๋ฐ์ URL์ ์ค์ ํ ์ ์์ต๋๋ค. ( ๊ธฐ๋ฅ์ถ๊ฐ )
- ํต๊ณ ๋ฐ์ดํฐ๋ฅผ ๊ฒฐ์ ํน์ ์ด๋ฒคํธ์ ๋ณด๋ด์ง ์๋ ๋ฒ๊ทธ๋ฅผ ์์ ํ์์ต๋๋ค. ( Bug Fixed )
2.0.20
- ๊ฒฐ์ ๋ฅผ ํ์ ์ผ๋ก ๋์์ ์์ฒญํ ๋ ํ์ ๊ณผ ํ์ Opener์ ๋๋ฉ์ธ์ด ์๋ก ๋ค๋ฅธ ๊ฒฝ์ฐ ๊ฒฐ์ UUID์ ์ ์ UUID๋ฅผ ๋๊ธฐํํ๋ ํจ์ ์ถ๊ฐ ( IE์์๋ Cross Site postMessage ์ ์ฑ ๋๋ฌธ์ ํด๋น ๊ธฐ๋ฅ์ด ์๋ํ์ง ์์ต๋๋ค. )
๋ถํธํ์ด ๊ฒฐ์ ์์ฒญ JS SDK
์ฝ๋ ํ์ค๋ก ๊ตฌํํ๋ Bootpay JS ๋ชจ๋์ ๋๋ค. ๊ฐ๋ฐ ์ธ์ด๋ coffeescript๋ก ๋์ด ์์ผ๋ฉฐ, jQuery ์์กด์ฑ์ด ์๋ 1.x.x๋ฒ์ ์ Private Git ์ ์ฅ์๋ก ๊ด๋ฆฌ์ค์ด๋ฉฐ, jQuery์์กด์ฑ์ด ์๋ 2.x.x๋ GitHub์ ์คํ์์ค๋ก ๊ฐ๋ฐ๋์์ต๋๋ค. 2.x.x๋ Webpack์ผ๋ก ์ปดํ์ผ ๋๋ฉฐ, webpack-dev-server๋ฅผ ํตํด ํ ์คํธ ์๋ฒ๋ก ๊ฒฐ์ ๋ฅผ ํ ์คํธ ํ ์๋ ์์ต๋๋ค.
NPM URL
NPM์ผ๋ก ๋ค์ด ๋ฐ์ ์ ์๋ ๊ฒฝ๋ก๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค. https://www.npmjs.com/package/bootpay-js
์ฐ๋ ๋ฐฉ๋ฒ
1. CDN์ผ๋ก Javascript ํธ์ถํ๊ธฐ
<script src="https://cdn.bootpay.co.kr/js/bootpay-3.2.3.min.js" type="application/javascript"></script>
2. npm์ผ๋ก ์ค์นํ๊ธฐ
npm install bootpay-js
์ค์น ํ ํ์
var BootPay = require('bootpay-js');
ํํ๋ก ์ฌ์ฉ์ด ๊ฐ๋ฅํฉ๋๋ค.
3. Webpack Package ์ฌ์ฉ
{
"dependencies": {
//...
"bootpay-js": "^3.3.2"
//...
}
}
import BootPay from 'bootpay-js'
4. Require JS ์ฌ์ฉ
<script type="text/javascript">
//jQuery ์์ ๋ฒ์ ์ ๋ก๋ํ๋ค.
require(["https://cdn.bootpay.co.kr/js/bootpay-3.3.2.min.js"], function(BootPay) {
BootPay.request({
// anyThing Data
});
});
</script>
๋ถํธํ์ด๋ก ๊ฒฐ์ ์ฐ๋ํ๊ธฐ ์ ์
- Bootpay Admin (https://admin.bootpay.co.kr) ๋ก ๊ฐ ํ ๋จผ์ ํ์๊ฐ์ ์ ํด์ฃผ์ธ์.
- Bootpay Docs (https://docs.bootpay.co.kr) ๋ก ๊ฐ์ ์ ์ฐ๋์ ํ์ํ ์ค๋น๋ฅผ ํด์ฃผ์ธ์.
๋ถํธํ์ด JS ๊ฒฐ์ ์ฐฝ ๋์ฐ๊ธฐ
BootPay.request({
price: 3000, // ๊ฒฐ์ ํ ๊ธ์ก
application_id: '(๋ถํธํ์ด ๊ด๋ฆฌ์์์ Web์ฉ Application ID ์
๋ ฅํด์ฃผ์ธ์.)',
name: '(ํ๋งคํ ์์ดํ
์ด๋ฆ)', // ์์ดํ
์ด๋ฆ,
phone: '(๊ตฌ๋งค์ ์ ํ๋ฒํธ ex) 01000000000)',
order_id: '(์ด ๊ฒฐ์ ๋ฅผ ์๋ณํ ์ ์๋ ๊ณ ์ ์ฃผ๋ฌธ ๋ฒํธ)',
pg: '(๊ฒฐ์ ์ฐฝ์ ๋์ฐ๋ ค๋ PG ํ์ฌ๋ช
ex) kcp, danal)',
method: '(๊ฒฐ์ ์๋จ ์ ๋ณด ex) card, phone, vbank, bank)',
show_agree_window: 0, // ๊ฒฐ์ ๋์์ฐฝ ๋์ฐ๊ธฐ ์ฌ๋ถ 1 - ๋์, 0 - ๋์ฐ์ง ์์
items: [ // ๊ฒฐ์ ํ๋ ค๋ ๋ชจ๋ ์์ดํ
์ ๋ณด ( ํต๊ณ ๋ฐ์ดํฐ๋ก ์ฐ์ด๋ฏ๋ก ์
๋ ฅํด์ฃผ์๋ฉด ์ข์ต๋๋ค. ์
๋ ฅํ์ง ์์๋ ๊ฒฐ์ ๋ ๊ฐ๋ฅํฉ๋๋ค.)
{
item_name: '(ํ๋งค๋ ์์ดํ
๋ช
)',
qty: 1, // ํ๋งคํ ์์ดํ
์ ์๋
unique: '(์์ดํ
์ ์๋ณํ ์ ์๋ unique key)',
price: 3000 // ์์ดํ
ํ๋์ ๋จ๊ฐ
}
],
user_info: { // ๊ตฌ๋งคํ ๊ณ ๊ฐ์ ๋ณด ( ํต๊ณ ํน์ PG์ฌ์์ ์๊ตฌํ๋ ๊ณ ๊ฐ ์ ๋ณด )
email: '(์ด๋ฉ์ผ)',
phone: '(๊ณ ๊ฐ์ ํด๋ํฐ ์ ๋ณด)',
username: '๊ตฌ๋งค์์ฑํจ',
addr: '(๊ณ ๊ฐ์ ๊ฑฐ์ฃผ์ง์ญ)'
}
}).error(function (data) {
// ๊ฒฐ์ ๊ฐ ์คํจํ์ ๋ ํธ์ถ๋๋ ํจ์์
๋๋ค.
var msg = "๊ฒฐ์ ์๋ฌ์
๋๋ค.: " + JSON.stringify(data);
alert(msg);
console.log(data);
}).cancel(function (data) {
// ๊ฒฐ์ ์ฐฝ์์ ๊ฒฐ์ ์งํ์ ํ๋ค๊ฐ ์ทจ์๋ฒํผ์ ๋๋ ์๋ ํธ์ถ๋๋ ํจ์์
๋๋ค.
var msg = "๊ฒฐ์ ์ทจ์์
๋๋ค.: " + JSON.stringify(data);
alert(msg);
console.log(data);
}).confirm(function (data) {
// ๊ฒฐ์ ๊ฐ ์งํ๋๊ณ ๋์ ์น์ธ ์ด์ ์ ํธ์ถ๋๋ ํจ์์
๋๋ค.
// ์ผ๋ถ ๊ฒฐ์ ๋ ์ด ํจ์๊ฐ ํธ์ถ๋์ง ์์ ์ ์์ต๋๋ค. ex) ๊ฐ์๊ณ์ข ๋ฐ ์นด๋ ์๊ธฐ๊ฒฐ์ ๋ ํธ์ถ๋์ง ์์ต๋๋ค.
// ๋ง์ฝ ์ด ํจ์๋ฅผ ์ ์ํ์ง ์์ผ๋ฉด ๋ฐ๋ก ๊ฒฐ์ ์น์ธ์ด ์ผ์ด๋ฉ๋๋ค.
if (confirm('๊ฒฐ์ ๋ฅผ ์ ๋ง ์น์ธํ ๊น์?')) {
console.log("do confirm data: " + JSON.stringify(data));
// ์ด ํจ์๋ฅผ ๋ฐ๋์ ์คํํด์ผ ๊ฒฐ์ ๊ฐ ์์ ํ ๋๋ฉ๋๋ค.
// ๋ถํธํ์ด๋ก ์๋ฒ๋ก ๊ฒฐ์ ๋ฅผ ์น์ธํจ์ ๋ณด๋ด๋ ํจ์์
๋๋ค.
this.transactionConfirm(data);
} else {
var msg = "๊ฒฐ์ ๊ฐ ์น์ธ๊ฑฐ์ ๋์์ต๋๋ค.: " + JSON.stringify(data);
alert(msg);
console.log(data);
}
}).done(function (data) {
// ๊ฒฐ์ ๊ฐ ๋ชจ๋ ์๋ฃ๋์์ ๋ ํธ์ถ๋๋ ํจ์์
๋๋ค.
alert("๊ฒฐ์ ๊ฐ ์๋ฃ๋์์ต๋๋ค.");
console.log(data);
}).ready(function (data) {
// ๊ฐ์๊ณ์ข ๋ฒํธ๊ฐ ์ฒด๋ฒ(๋ฐ๊ธ) ๋์์ ๋ ํธ์ถ๋๋ ํจ์์
๋๋ค.
console.log(data);
});
๊ฐ ๊ฒฐ์ ์๋จ๋ณ ๊ฒฐ์ ์งํ ์์
์นด๋(card), ํด๋ํฐ ์์ก๊ฒฐ์ (phone), ๊ณ์ข์ด์ฒด (bank), ๊ฐํธ๊ฒฐ์ (์นด์นด์ค ํน์ ํ์ด์ฝ)
๋๋ถ๋ถ์ ๊ฒฐ์ ๋ ์งํ ์์๊ฐ ๋์ผํฉ๋๋ค.
<๊ฒฐ์ ์์ฒญ> -> <๊ฒฐ์ ์ฐฝ์ด ๋์์ง> -> <confirm ํจ์ ์คํ ํน์ ๋ฐ๋ก ๊ฒฐ์ ์น์ธ> -> < ๋ถํธํ์ด ์๋ฒ์์ ๊ฒฐ์ ์น์ธ >
๊ฐ์๊ณ์ข(vbank)
๊ฐ์๊ณ์ข๋ ๊ณ์ข๋ฒํธ ๋ฐ๊ธ ์ดํ ์ ๊ธ ๋์ด์ผ ๊ฒฐ์ ๊ฐ ์์ ํ ๋๋๋ ํน์ํ ๊ฒฐ์ ๋ฐฉ๋ฒ์ ๋๋ค.
<๊ฒฐ์ ์์ฒญ> -> <๊ฒฐ์ ์ฐฝ์ด ๋์์ง> -> < ready ํจ์ ํธ์ถ ๋ฐ ๊ฐ์๊ณ์ข ๋ฐ๊ธ > -> < ์
๊ธ ํ ๋ถํธํ์ด ์๋ฒ๋ก ๊ฒฐ์ ์ ๋ณด๊ฐ ์ด > -> < ๋ถํธํ์ด ๊ด๋ฆฌ์์์ ์ค์ ํ FeedbackURL๋ก ๊ฐ๋งน์ ์๋ฒ๋ก ๊ฒฐ์ ๋ฐ์ดํฐ ์ ์ก >
๋ถํธํ์ด ํต๊ณ ์ด์ฉํ๊ธฐ
๋ถํธํ์ด๋ก ๋ฐ์ดํฐ๋ฅผ ๋ณด๋ด์ฃผ์๋ฉด 1์๊ฐ ๋จ์, 1์ผ ๋จ์, 1์ฃผ์ผ ๋จ์, 1๋ฌ ๋จ์์ ๋ฐ์ดํฐ๋ฅผ ๋ถ์ํ์ฌ ์ ์ ํต๊ณ ๋ฐ ๊ฒฐ์ ํต๊ณ๋ฅผ ๋ณด์ค ์ ์์ต๋๋ค. ์์ธํ ํต๊ณ ๋ด์ฉ์ https://admin.bootpay.co.kr ๋ก ๊ฐ์ ์ ํ ์คํธ ๊ณ์ ์ผ๋ก ๋ก๊ทธ์ธ ํ ํ์ธํ์ค ์ ์์ต๋๋ค.
ํน์ ํ์ด์ง ์ ๊ทผ์ ํต๊ณ ๋ฐ์ดํฐ ์ ๋ฌ
ํต๊ณ๋ฅผ ์ง๊ณํ๊ธธ ์ํ๋ ํ์ด์ง์ ์ ๊ทผํ์ ๋ ๋ถํธํ์ด๋ก ๋ฐ์ดํฐ๋ฅผ ๋ณด๋ด ํต๊ณ๋ฅผ ๋ผ ์ ์์ต๋๋ค. ํน์ ์์ดํ ์ ํ๋งคํ๋ ํ์ด์ง์ ๋ํ ๋ถ์ ๋ฐ ์ด๋ค Referer๋ฅผ ํตํด ํ์ด์ง๋ฅผ ์ง์ ํ๋์ง ์ฌ๋ถ๋ฅผ ํต๊ณ ๋ฐ์ดํฐ๋ก ๋ฝ์๋ด ์ค๋๋ค.
// DocumentContentLoaded ์ด๋ฒคํธ ํธ์ถ ํ์ ํ์ด์ง ์ ๋ณด๋ฅผ ์ ์กํ๋ ๊ฒ์ ์ถ์ฒํฉ๋๋ค.
document.addEventListener('DOMContentLoaded', function () {
// ๋ถํธํ์ด๋ก ํ์ด์ง ์ ๋ณด๋ฅผ ์ ์กํ๋ ํจ์์
๋๋ค.
// ์ด ํจ์๋ฅผ ํธ์ถํ์ง ์์ผ๋ฉด ํ์ด์ง์ ๋ํ ์ ๋ณด๋ฅผ ์์งํ์ง ์์ต๋๋ค.
BootPay.startTrace({
// ํ์ฌ ํ์ด์ง์์ ํ๋งคํ๋ ์์ดํ
์ ๋ณด ( ์ํ์ด ์ฌ๋ฌ๊ฐ์ผ ์ ์์ผ๋ฏ๋ก Array๋ก ๋ณด๋ด์ฃผ์ธ์. )
items: [
{
item_name: '( ์์ดํ
๋ช
)',
item_img: '( ์ด๋ฏธ์ง URL ๊ฒฝ๋ก )',
unique: '( ์์ดํ
๊ณ ์ ํค )',
cat1: '( ์นดํ
๊ณ ๋ฆฌ ์์ 1 )',
cat2: '( ์นดํ
๊ณ ๋ฆฌ ์ค์ 2 )',
cat3: '( ์นดํ
๊ณ ๋ฆฌ ํ์ 3 )'
},
{
item_name: '( ์์ดํ
๋ช
)',
item_img: '( ์ด๋ฏธ์ง URL ๊ฒฝ๋ก )',
unique: '( ์์ดํ
๊ณ ์ ํค )',
cat1: '( ์นดํ
๊ณ ๋ฆฌ ์์ 1 )',
cat2: '( ์นดํ
๊ณ ๋ฆฌ ์ค์ 2 )',
cat3: '( ์นดํ
๊ณ ๋ฆฌ ํ์ 3 )'
}
]
});
});
๋ก๊ทธ์ธํ ํ์ ์ ๋ณด ์ ๋ฌ
์ด๋ค ์ฌ์ฉ์๊ฐ ๋ก๊ทธ์ธ์ ํ๋์ง ๋ก๊ทธ์ธ ํ ํ ์ด๋ค ์์ดํ ์ ๊ตฌ๋งคํ๋์ง ์ถ์ ํ ์ ์์ต๋๋ค. ๊ทธ๋ฌ๊ธฐ ์ํด์๋ ๋ก๊ทธ์ธ ํ ์ ๋ณด๋ฅผ ๋ถํธํ์ด๋ก ์ ์กํ์ฌ ๋ฐ์ดํฐ ๋ถ์์ ํ ์ ์์ต๋๋ค. ( ์ ๋ณด๋ ํต๊ณ์ฉ์ผ๋ก๋ง ์ฐ์ด๊ณ 60์ผ ํ ๋ชจ๋ ํ๊ธฐ ๋ฉ๋๋ค. )
// ๋ก๊ทธ์ธ ํ ์ดํ ํธ์ถ๋๋ ํจ์
// ๋ก๊ทธ์ธ ์ ๋ณด๋ฅผ ๋ถํธํ์ด๋ก ์ ์ก
function LoginAfterCallFunction() {
// ๋ก๊ทธ์ธ ์ ๋ณด๋ฅผ ๋ณด๋ด๊ณ ๋ถํธํ์ด์์ ๋ก๊ทธ์ธ ์ธ์
์ ๋ฐ์ ๋ฐ์ดํฐ๋ฅผ ์ถ์ ํ๋ค.
BootPay.startLoginSession({
id: '(ํ์ ์์ด๋)',
username: '(ํ์ ์ด๋ฆ)',
birth: '(ํ์ ์๋
์์ผ)',
phone: '(ํ์ ์ ํ๋ฒํธ)',
email: '(ํ์ ์ด๋ฉ์ผ)',
gender: '(ํ์ ์ฑ๋ณ 1 - ๋จ์, 0 - ์ฌ์)',
area: '(ํ์ ๊ฑฐ์ฃผ ์ง์ญ)'
});
}