@portone/mcp-server 0.15.0-alpha.5 → 0.16.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/assets/docs/blog/posts/2025-12/portone-chatbot.md +116 -0
- package/assets/docs/help/admin-console/analytics/content32.md +0 -32
- package/assets/docs/help/admin-console/console-account/content31.md +2 -10
- package/assets/docs/help/admin-console/console_home/content34.md +5 -44
- package/assets/docs/help/admin-console/integration/content28.md +9 -21
- package/assets/docs/help/admin-console/payment-service/content29.md +7 -153
- package/assets/docs/help/admin-console/pg-settlement/content30.md +2 -13
- package/assets/docs/help/admin-console/pg-settlement-history/content35.md +2 -9
- package/assets/docs/help/admin-console-2025-10-17.md +47 -0
- package/assets/docs/help/content61.md +1 -1
- package/assets/docs/help/core-service/channel-setting/danal.md +5 -5
- package/assets/docs/help/core-service/channel-setting/daou.md +5 -0
- package/assets/docs/help/core-service/channel-setting/galaxia.md +93 -0
- package/assets/docs/help/core-service/channel-setting/inicis.md +32 -49
- package/assets/docs/help/core-service/channel-setting/kcp_channel.md +60 -41
- package/assets/docs/help/core-service/channel-setting/kicc.md +57 -3
- package/assets/docs/help/core-service/channel-setting/kpn.md +3 -2
- package/assets/docs/help/core-service/channel-setting/mobilians.md +22 -27
- package/assets/docs/help/core-service/channel-setting/nice.md +8 -6
- package/assets/docs/help/core-service/channel-setting/payco.md +5 -3
- package/assets/docs/help/core-service/channel-setting/payletter.md +3 -3
- package/assets/docs/help/core-service/how-to-use/additional-galaxia.md +36 -0
- package/assets/docs/help/core-service/how-to-use/additional-mobilians.md +15 -21
- package/assets/docs/help/core-service/how-to-use/content200009.md +10 -9
- package/assets/docs/help/core-service/how-to-use/galaxia-contract.md +67 -0
- package/assets/docs/help/core-service/how-to-use/high-risk-industry.md +38 -46
- package/assets/docs/help/core-service/how-to-use/information-pg.md +3 -3
- package/assets/docs/help/core-service/how-to-use/kcp-contract.md +5 -1
- package/assets/docs/help/core-service/how-to-use/kicc-contract.md +38 -7
- package/assets/docs/help/core-service/how-to-use/mobilians-contract.md +26 -21
- package/assets/docs/help/core-service/how-to-use/requirements.md +5 -1
- package/assets/docs/help/core-service/how-to-use/shopify-guide.md +2 -2
- package/assets/docs/help/core-service/how-to-use/test-mode-cancel.md +6 -4
- package/assets/docs/help/core-service/how-to-use/wordpress-setting.md +2 -1
- package/assets/docs/help/core-service/payment-type/content200007.md +1 -1
- package/assets/docs/help/core-service/payment-type/content200047.md +28 -42
- package/assets/docs/help/core-service/payment-type/content200052.md +8 -1
- package/assets/docs/help/core-service/payment-type/hub-service-fee.md +1 -1
- package/assets/docs/help/core-service/payment-type/internationl-high-risk-industry.md +67 -26
- package/assets/docs/help/core-service/payment-type/internationl-pg.md +3 -1
- package/assets/docs/help/core-service/payment-type/schedule-requirement.md +1 -4
- package/assets/docs/help/faq/general-inquiry/confirm-process.md +5 -11
- package/assets/docs/help/faq/general-inquiry/portone-security.md +59 -0
- package/assets/docs/help/faq/general-inquiry/real-channel-info.md +1 -1
- package/assets/docs/help/faq/payment-faq/pg-max-min-amount.md +3 -3
- package/assets/docs/help/faq/payment-faq/vbank-service-detail.md +1 -1
- package/assets/docs/help/faq/payment-faq/vbank-test-guide.md +1 -8
- package/assets/docs/help/faq/platform-faq/platform_definition_partner.md +1 -1
- package/assets/docs/help/faq/platform-faq/platform_definition_settlement.md +1 -1
- package/assets/docs/help/faq/platform-faq/platform_definition_tax.md +24 -0
- package/assets/docs/help/faq/platform-faq/platform_introduction.md +1 -1
- package/assets/docs/help/faq/platform-faq/platform_introduction_conditions.md +19 -5
- package/assets/docs/help/faq/platform-faq/platform_nocode_hosting.md +1 -1
- package/assets/docs/help/faq/platform-faq/platform_nocode_use.md +1 -1
- package/assets/docs/help/faq/tax-invoice-faq/account_management_guide.md +37 -0
- package/assets/docs/help/faq/tax-invoice-faq/bulk_registration_account.md +16 -0
- package/assets/docs/help/faq/tax-invoice-faq/difference_account_partner.md +25 -0
- package/assets/docs/help/faq/{platform-faq → tax-invoice-faq}/platform_partnerships.md +1 -1
- package/assets/docs/help/faq/{platform-faq → tax-invoice-faq}/taxinvoice_bulk_issuance.md +1 -1
- package/assets/docs/help/faq/{platform-faq → tax-invoice-faq}/taxinvoice_cancel.md +1 -1
- package/assets/docs/help/faq/{platform-faq → tax-invoice-faq}/taxinvoice_delayed.md +1 -1
- package/assets/docs/help/faq/{platform-faq → tax-invoice-faq}/taxinvoice_forward_issuance.md +1 -1
- package/assets/docs/help/faq/{platform-faq → tax-invoice-faq}/taxinvoice_guide_atoz.md +1 -1
- package/assets/docs/help/faq/{platform-faq → tax-invoice-faq}/taxinvoice_partner_peristalsis.md +1 -1
- package/assets/docs/help/faq/{platform-faq → tax-invoice-faq}/taxinvoice_reverse_issuance_definition.md +1 -1
- package/assets/docs/help/faq/{platform-faq → tax-invoice-faq}/taxinvoice_reverse_issuance_partner_signup.md +1 -1
- package/assets/docs/help/notice-tosspayments-2026-01-15.md +62 -0
- package/assets/docs/help/notice-vape-2026-02-19.md +52 -0
- package/assets/docs/help/platform-2025-07-23.md +76 -0
- package/assets/docs/help/platform-2025-08-13.md +92 -0
- package/assets/docs/help/platform-2025-08-21.md +51 -0
- package/assets/docs/help/platform-2025-08-28.md +51 -0
- package/assets/docs/help/platform-2025-10-02.md +90 -0
- package/assets/docs/help/pricing/pg/domestic-and-oversea-fees.md +4 -2
- package/assets/docs/help/pricing/portone/portone-pricing.md +3 -1
- package/assets/docs/help/procedure/pg-application/content54.md +2 -0
- package/assets/docs/help/procedure/pg-application/start.md +8 -24
- package/assets/docs/help/procedure/recommendation/package.md +4 -2
- package/assets/docs/help/procedure/service-addition/add-service.md +2 -0
- package/assets/docs/help/service/identity-verification/identity-verification.md +2 -4
- package/assets/docs/help/service/integration-type/integration-type.md +1 -2
- package/assets/docs/help/service/pg/pg-service-list.md +29 -6
- package/assets/docs/opi/ko/console/guide/reg.md +1 -1
- package/assets/docs/opi/ko/extra/confirm-process/readme-v1.md +5 -7
- package/assets/docs/opi/ko/extra/confirm-process/readme-v2.md +2 -2
- package/assets/docs/opi/ko/extra/identity-verification/readme-v2.md +1 -1
- package/assets/docs/opi/ko/extra/link-pay/readme-v1.md +36 -4
- package/assets/docs/opi/ko/extra/manual-confirm/readme-v2.md +1 -1
- package/assets/docs/opi/ko/extra/mobile-payment/readme-v2.md +610 -0
- package/assets/docs/opi/ko/extra/smart-routing/intro.md +1 -1
- package/assets/docs/opi/ko/integration/cancel/v1/virtual-account.md +4 -1
- package/assets/docs/opi/ko/integration/cancel/v2/readme.md +4 -1
- package/assets/docs/opi/ko/integration/pg/v1/blue.md +36 -0
- package/assets/docs/opi/ko/integration/pg/v1/danal.md +134 -4
- package/assets/docs/opi/ko/integration/pg/v1/daou/readme.md +203 -28
- package/assets/docs/opi/ko/integration/pg/v1/eximbay.md +121 -19
- package/assets/docs/opi/ko/integration/pg/v1/galaxia.md +591 -0
- package/assets/docs/opi/ko/integration/pg/v1/inicis-jp.md +517 -0
- package/assets/docs/opi/ko/integration/pg/v1/inicis.md +177 -0
- package/assets/docs/opi/ko/integration/pg/v1/kakaopay.md +145 -2
- package/assets/docs/opi/ko/integration/pg/v1/kcp-v2-identity-verification.md +2 -0
- package/assets/docs/opi/ko/integration/pg/v1/kg-mobilians-v2.md +29 -18
- package/assets/docs/opi/ko/integration/pg/v1/kg.md +65 -12
- package/assets/docs/opi/ko/integration/pg/v1/kicc-v2.md +275 -0
- package/assets/docs/opi/ko/integration/pg/v1/kicc.md +117 -4
- package/assets/docs/opi/ko/integration/pg/v1/ksnet/readme.md +22 -2
- package/assets/docs/opi/ko/integration/pg/v1/naver.md +60 -0
- package/assets/docs/opi/ko/integration/pg/v1/newtoss/readme.md +117 -7
- package/assets/docs/opi/ko/integration/pg/v1/nhn-kcp/kcp-quickpay.md +24 -32
- package/assets/docs/opi/ko/integration/pg/v1/nhn-kcp/readme.md +164 -3
- package/assets/docs/opi/ko/integration/pg/v1/nice-v2/billing-api-caution.md +6 -6
- package/assets/docs/opi/ko/integration/pg/v1/nice-v2/readme.md +177 -2
- package/assets/docs/opi/ko/integration/pg/v1/nice.md +124 -5
- package/assets/docs/opi/ko/integration/pg/v1/payco.md +87 -3
- package/assets/docs/opi/ko/integration/pg/v1/payletter-global.md +142 -1
- package/assets/docs/opi/ko/integration/pg/v1/paymentwall.md +45 -1
- package/assets/docs/opi/ko/integration/pg/v1/paypal.md +38 -2
- package/assets/docs/opi/ko/integration/pg/v1/readme.md +9 -3
- package/assets/docs/opi/ko/integration/pg/v1/rt/readme.md +52 -16
- package/assets/docs/opi/ko/integration/pg/v1/settle/mybank.md +138 -56
- package/assets/docs/opi/ko/integration/pg/v1/settle/readme.md +50 -0
- package/assets/docs/opi/ko/integration/pg/v1/smartro-v2/readme.md +126 -0
- package/assets/docs/opi/ko/integration/pg/v1/smartro.md +78 -0
- package/assets/docs/opi/ko/integration/pg/v1/smilepay.md +49 -3
- package/assets/docs/opi/ko/integration/pg/v1/spb/readme.md +96 -25
- package/assets/docs/opi/ko/integration/pg/v1/toss-brandpay/module.md +1 -1
- package/assets/docs/opi/ko/integration/pg/v1/toss-brandpay/readme.md +34 -2
- package/assets/docs/opi/ko/integration/pg/v1/toss.md +114 -1
- package/assets/docs/opi/ko/integration/pg/v1/tosspay-v2/readme.md +74 -15
- package/assets/docs/opi/ko/integration/pg/v1/tosspay.md +41 -1
- package/assets/docs/opi/ko/integration/pg/v1/welcome/readme.md +12 -0
- package/assets/docs/opi/ko/integration/pg/v2/galaxia.md +662 -0
- package/assets/docs/opi/ko/integration/pg/v2/inicis-jp.md +6 -18
- package/assets/docs/opi/ko/integration/pg/v2/inicis-unified-identity-verification.md +0 -4
- package/assets/docs/opi/ko/integration/pg/v2/inicis-v2.md +2 -2
- package/assets/docs/opi/ko/integration/pg/v2/kcp-v2-identity-verification.md +1 -1
- package/assets/docs/opi/ko/integration/pg/v2/kcp-v2.md +2 -2
- package/assets/docs/opi/ko/integration/pg/v2/kicc-v2.md +316 -0
- package/assets/docs/opi/ko/integration/pg/v2/kpn.md +3 -3
- package/assets/docs/opi/ko/integration/pg/v2/ksnet.md +8 -0
- package/assets/docs/opi/ko/integration/pg/v2/paymentwall.md +171 -0
- package/assets/docs/opi/ko/integration/pg/v2/readme.md +16 -0
- package/assets/docs/opi/ko/integration/pg/v2/smartro-v2.md +1 -1
- package/assets/docs/opi/ko/integration/pg/v2/triple-a.md +342 -0
- package/assets/docs/opi/ko/integration/pg/v2/welcome.md +1 -1
- package/assets/docs/opi/ko/integration/ready/readme.md +113 -164
- package/assets/docs/opi/ko/integration/start/v1/non-auth.md +1 -1
- package/assets/docs/opi/ko/integration/start/v2/checkout.md +59 -29
- package/assets/docs/opi/ko/integration/using-ai-tools.md +42 -0
- package/assets/docs/opi/ko/quick-guide/payment.md +5 -5
- package/assets/docs/opi/ko/readme.md +2 -2
- package/assets/docs/opi/ko/support/code-info/pg-2.md +2 -2
- package/assets/docs/opi/ko/support/code-info/pg-3.md +3 -3
- package/assets/docs/opi/ko/support/code-info/pg.md +1 -1
- package/assets/docs/platform/ko/guides/dictionary.md +47 -0
- package/assets/docs/release-notes/api-sdk/2023-07-03.md +3 -3
- package/assets/docs/release-notes/platform/2023-08-31.md +2 -2
- package/assets/docs/release-notes/platform/2024-08-22.md +5 -5
- package/assets/docs/release-notes/platform/2024-10-21.md +9 -9
- package/assets/docs/release-notes/platform/2025-02-10.md +2 -2
- package/assets/docs/release-notes/platform/2026-02-19.md +55 -0
- package/assets/docs/release-notes/platform/2026-03-06.md +198 -0
- package/assets/docs/schema/browser-sdk.yml +390 -11
- package/assets/docs/schema/v1.openapi.json +297 -72
- package/assets/docs/schema/v1.openapi.yml +228 -112
- package/assets/docs/schema/v2.openapi.json +16438 -21985
- package/assets/docs/schema/v2.openapi.yml +8669 -12670
- package/assets/docs/sdk/ko/v1-sdk/javascript-sdk/payrq.md +10 -2
- package/assets/docs/sdk/ko/v1-sdk/javascript-sdk/payrt.md +1 -1
- package/assets/docs/sdk/ko/v2-mobile-sdk/android.md +62 -24
- package/assets/docs/sdk/ko/v2-mobile-sdk/react-native.md +82 -95
- package/assets/docs/sdk/ko/v2-mobile-sdk/readme.md +5 -4
- package/assets/docs/v1-docs-full.md +5249 -753
- package/assets/docs/v2-docs-full.md +2855 -265
- package/assets/docs/website-links.md +18 -7
- package/manifest.json +1 -1
- package/package.json +12 -12
- package/server/index.js +12 -12
- package/assets/docs/opi/ko/integration/pg/v1/hyphen.md +0 -196
- package/assets/docs/opi/ko/integration/pg/v1/nhn-kcp.md +0 -1152
- package/assets/docs/opi/ko/integration/pg/v2/hyphen.md +0 -205
- package/assets/docs/schema/browser-sdk.schema.json +0 -510
|
@@ -64,28 +64,33 @@
|
|
|
64
64
|
### V2 통합 가이드
|
|
65
65
|
|
|
66
66
|
- [스마트 라우팅](https://developers.portone.io/opi/ko/console/guide/smartrouting): 포트원 스마트 라우팅을 사용하기 위한 그룹 설정을 관리할 수 있습니다. 관리자콘솔 내 스마트 라우팅 그룹 설정 방법을 안내합니다.
|
|
67
|
-
- [컨펌 프로세스](https://developers.portone.io/opi/ko/extra/confirm-process/readme-v2): 결제
|
|
67
|
+
- [컨펌 프로세스](https://developers.portone.io/opi/ko/extra/confirm-process/readme-v2): 결제 승인 직전에 고객사 측에 결제 의사를 최종적으로 확인하는 기능입니다.
|
|
68
68
|
- [본인인증 연동하기](https://developers.portone.io/opi/ko/extra/identity-verification/readme-v2): 포트원을 이용하여 간편하게 본인인증을 연동하는 방법을 확인합니다.
|
|
69
69
|
- [수동 승인](https://developers.portone.io/opi/ko/extra/manual-confirm/readme-v2): 고객사 서버에서 API를 호출하여 결제를 승인하는 연동 방식입니다.
|
|
70
|
+
- [모바일 앱에서 결제 연동하기](https://developers.portone.io/opi/ko/extra/mobile-payment/readme-v2): 모바일 앱(Android, iOS, Flutter, React Native)에서 포트원 결제를 연동하는 방법을 안내합니다.
|
|
70
71
|
- [결제취소(환불) 연동하기](https://developers.portone.io/opi/ko/integration/cancel/v2/readme): 포트원 V2 결제취소 API를 이용한 결제취소 방법을 안내합니다.
|
|
71
72
|
- [다날 본인인증](https://developers.portone.io/opi/ko/integration/pg/v2/danal-identity-verification): 다날 본인인증 연동 방법을 안내합니다.
|
|
72
73
|
- [엑심베이](https://developers.portone.io/opi/ko/integration/pg/v2/eximbay-v2): 엑심베이 결제 연동 방법을 안내합니다.
|
|
74
|
+
- [갤럭시아머니트리](https://developers.portone.io/opi/ko/integration/pg/v2/galaxia): 갤럭시아머니트리 결제 연동 방법을 안내합니다.
|
|
73
75
|
- [KG이니시스 일본결제](https://developers.portone.io/opi/ko/integration/pg/v2/inicis-jp): KG이니시스 일본결제 연동 방법을 안내합니다.
|
|
74
76
|
- [KG이니시스 통합인증](https://developers.portone.io/opi/ko/integration/pg/v2/inicis-unified-identity-verification): KG이니시스 통합인증 연동 방법을 안내합니다.
|
|
75
77
|
- [KG이니시스](https://developers.portone.io/opi/ko/integration/pg/v2/inicis-v2): KG이니시스 결제 연동 방법을 안내합니다.
|
|
76
78
|
- [카카오페이](https://developers.portone.io/opi/ko/integration/pg/v2/kakaopay): 카카오페이 간편결제 연동 방법을 안내합니다.
|
|
77
79
|
- [KCP 본인인증](https://developers.portone.io/opi/ko/integration/pg/v2/kcp-v2-identity-verification): KCP 본인인증 연동 방법을 안내합니다.
|
|
78
80
|
- [NHN KCP](https://developers.portone.io/opi/ko/integration/pg/v2/kcp-v2): NHN KCP 연동 방법을 안내합니다.
|
|
81
|
+
- [이지페이(KICC) 해외결제](https://developers.portone.io/opi/ko/integration/pg/v2/kicc-v2): 이지페이(KICC) 해외결제 연동 방법을 안내합니다.
|
|
79
82
|
- [한국결제네트웍스(KPN)](https://developers.portone.io/opi/ko/integration/pg/v2/kpn): 한국결제네트웍스(KPN) 결제 연동 방법을 안내합니다.
|
|
80
83
|
- [KSNET](https://developers.portone.io/opi/ko/integration/pg/v2/ksnet): KSNET 결제 연동 방법을 안내합니다.
|
|
81
84
|
- [네이버페이 (결제형)](https://developers.portone.io/opi/ko/integration/pg/v2/naverpay): 네이버페이 간편결제 연동 방법을 안내합니다.
|
|
82
85
|
- [나이스정보통신](https://developers.portone.io/opi/ko/integration/pg/v2/nice-v2): 나이스정보통신 결제 연동 방법을 안내합니다.
|
|
83
86
|
- [페이레터 해외결제](https://developers.portone.io/opi/ko/integration/pg/v2/payletter-global): 페이레터 해외결제 연동 방법을 안내합니다.
|
|
87
|
+
- [페이먼트월](https://developers.portone.io/opi/ko/integration/pg/v2/paymentwall): 페이먼트월 결제 연동 방법을 안내합니다.
|
|
84
88
|
- [페이팔](https://developers.portone.io/opi/ko/integration/pg/v2/paypal-v2): 페이팔 결제 연동 방법을 안내합니다.
|
|
85
89
|
- [결제대행사 선택하여 연동하기](https://developers.portone.io/opi/ko/integration/pg/v2/readme): 각 PG사별 결제 연동 방법을 확인할 수 있습니다.
|
|
86
90
|
- [스마트로](https://developers.portone.io/opi/ko/integration/pg/v2/smartro-v2): 스마트로 결제 연동 방법을 안내합니다.
|
|
87
91
|
- [토스페이](https://developers.portone.io/opi/ko/integration/pg/v2/tosspay-v2): 토스페이 간편결제 연동 방법을 안내합니다.
|
|
88
92
|
- [토스페이먼츠](https://developers.portone.io/opi/ko/integration/pg/v2/tosspayments): 토스페이먼츠 결제 연동 방법을 안내합니다.
|
|
93
|
+
- [Triple-A](https://developers.portone.io/opi/ko/integration/pg/v2/triple-a): Triple-A 결제 연동 방법을 안내합니다.
|
|
89
94
|
- [웰컴페이먼츠](https://developers.portone.io/opi/ko/integration/pg/v2/welcome): 웰컴페이먼츠 결제 연동 방법을 안내합니다.
|
|
90
95
|
- [1. 빌링키 발급하기](https://developers.portone.io/opi/ko/integration/start/v2/billing/issue): 결제창 또는 API를 이용하여 빌링키를 발급할 수 있습니다.
|
|
91
96
|
- [2. 결제 요청하기](https://developers.portone.io/opi/ko/integration/start/v2/billing/payment): 포트원 빌링키 결제 API를 사용해 바로 결제를 요청합니다.
|
|
@@ -216,6 +221,8 @@
|
|
|
216
221
|
- [파트너 정산 자동화 2025-08-21](https://developers.portone.io/release-notes/platform/2025-08-21)
|
|
217
222
|
- [파트너 정산 자동화 2025-08-28](https://developers.portone.io/release-notes/platform/2025-08-28)
|
|
218
223
|
- [파트너 정산 자동화 2025-10-02](https://developers.portone.io/release-notes/platform/2025-10-02)
|
|
224
|
+
- [파트너 정산 자동화 2026-02-19](https://developers.portone.io/release-notes/platform/2026-02-19)
|
|
225
|
+
- [파트너 정산 자동화 2026-03-06](https://developers.portone.io/release-notes/platform/2026-03-06)
|
|
219
226
|
|
|
220
227
|
### 블로그
|
|
221
228
|
|
|
@@ -226,6 +233,7 @@
|
|
|
226
233
|
- [Data Evolution: The Shift from AWS DMS to GCP Datastream](https://developers.portone.io/blog/posts/2024-04/gcp-datastream): Gives an overview of the PortOne Data Infrastructure and the migration story from AWS DMS to GCP Datastream.
|
|
227
234
|
- [Solid로 간결하게 고성능 웹앱 만들기](https://developers.portone.io/blog/posts/2024-04/solid): 포트원에서 사용하는 프론트엔드 웹 프레임워크 중 하나인 Solid에 대해 소개하고, 포트원 내에서의 활용 사례를 다룹니다.
|
|
228
235
|
- [포트원 V2 이야기 - Event Sourcing으로 결제 시스템 만들기 (기본편)](https://developers.portone.io/blog/posts/2024-07/v2-event-sourcing-basic): 포트원 V2 시스템의 근간을 이루고 있는 기술 중 하나인 Event Sourcing에 대해 소개합니다.
|
|
236
|
+
- [포트원 AI 챗봇이 반복되는 기술 문의를 획기적으로 단축한 비결](https://developers.portone.io/blog/posts/2025-12/portone-chatbot): 잘 만든 AI 서비스 하나로 1000개의 기술 문의를 대신한 이야기
|
|
229
237
|
|
|
230
238
|
|
|
231
239
|
# https://developers.portone.io/opi/ko/console/guide/smartrouting
|
|
@@ -308,14 +316,14 @@ targetVersions:
|
|
|
308
316
|
|
|
309
317
|
---
|
|
310
318
|
title: 컨펌 프로세스
|
|
311
|
-
description: 결제
|
|
319
|
+
description: 결제 승인 직전에 고객사 측에 결제 의사를 최종적으로 확인하는 기능입니다.
|
|
312
320
|
targetVersions:
|
|
313
321
|
- v2
|
|
314
322
|
versionVariants:
|
|
315
323
|
v1: /opi/ko/extra/confirm-process/readme-v1
|
|
316
324
|
---
|
|
317
325
|
|
|
318
|
-
|
|
326
|
+
결제 승인 직전에 고객사 측에 결제 의사를 최종적으로 확인하는 기능입니다.
|
|
319
327
|
|
|
320
328
|
<div class="hint" data-style="info">
|
|
321
329
|
|
|
@@ -633,7 +641,7 @@ app.post("/identity-verifications", async (req, res) => {
|
|
|
633
641
|
- `ci`: 연계 정보(Connecting Information).
|
|
634
642
|
- 사람마다 고유하고 서비스별로 달라지지 않기 때문에, 서비스 간 연계에 사용할 수 있음.
|
|
635
643
|
- 다날의 경우 항상 제공.
|
|
636
|
-
- KCP의 경우
|
|
644
|
+
- KCP의 경우 가맹점 설정에 따라 제공.
|
|
637
645
|
- KG이니시스의 경우 카카오를 제외한 인증 업체에서 항상 제공. 카카오의 경우 별도 서류 작성이 필요합니다.
|
|
638
646
|
|
|
639
647
|
- `di`: 중복 가입 확인 정보(Duplication Information).
|
|
@@ -749,7 +757,7 @@ targetVersions:
|
|
|
749
757
|
|
|
750
758
|
**수동 승인을 사용할 수 없는 PG**
|
|
751
759
|
|
|
752
|
-
엑심베이, 페이레터
|
|
760
|
+
엑심베이, 페이레터 해외결제, 이지페이(KICC)의 경우 수동 승인을 지원하지 않고, 채널 설정에서도 해당 항목이 보이지 않습니다.
|
|
753
761
|
|
|
754
762
|
이는 근본적으로 위챗 결제와 같이 일부 해외 결제수단이 수동 승인을 지원하지 않기 때문입니다. 따라서 추후 포트원에 추가되는 PG가 이러한 결제수단을 지원한다면, 해당 PG에서는 수동 승인을 이용할 수 없을 가능성이 높습니다.
|
|
755
763
|
|
|
@@ -810,6 +818,620 @@ targetVersions:
|
|
|
810
818
|
</div>
|
|
811
819
|
|
|
812
820
|
|
|
821
|
+
# https://developers.portone.io/opi/ko/extra/mobile-payment/readme-v2
|
|
822
|
+
|
|
823
|
+
---
|
|
824
|
+
title: 모바일 앱에서 결제 연동하기
|
|
825
|
+
description: 모바일 앱(Android, iOS, Flutter, React Native)에서 포트원 결제를 연동하는 방법을 안내합니다.
|
|
826
|
+
targetVersions:
|
|
827
|
+
- v2
|
|
828
|
+
---
|
|
829
|
+
|
|
830
|
+
포트원은 Android, iOS, Flutter, React Native용 공식 V2 SDK를 제공하고 있으며,
|
|
831
|
+
V2 SDK가 제공되지 않는 플랫폼이나,
|
|
832
|
+
앱이 이미 WebView로 구성되어 있는 경우에는 WebView에서 직접 연동할 수 있습니다.
|
|
833
|
+
([WebView 앱 연동 사례](https://github.com/portone-io/iamport-react-native/blob/HEAD/exampleForWebView/README.md))
|
|
834
|
+
|
|
835
|
+
## 연동원리
|
|
836
|
+
|
|
837
|
+
모바일 앱에서 결제를 연동하기 전에, 모바일 결제가 어떻게 동작하는지 이해해야 합니다.
|
|
838
|
+
|
|
839
|
+
### 왜 WebView를 사용하는가?
|
|
840
|
+
|
|
841
|
+
대부분의 PG사(카드사, 간편결제 등)는 **웹 기반 결제 UI만 제공**합니다.
|
|
842
|
+
카드 번호 입력 폼, 3DS 인증, 간편결제 동의 화면은 모두 웹 페이지로 구현되어 있습니다.
|
|
843
|
+
|
|
844
|
+
따라서 모바일 앱에서도 네이티브 UI가 아닌 **WebView 안에서 결제 UI를 표시**하게 됩니다.
|
|
845
|
+
포트원의 모바일 SDK는 이 WebView를 자동으로 관리하는 얇은 래퍼이며,
|
|
846
|
+
SDK 없이 연동할 경우 WebView를 직접 구성해야 합니다.
|
|
847
|
+
|
|
848
|
+
### 결제 흐름
|
|
849
|
+
|
|
850
|
+
사용자가 앱에서 결제를 시작하면 다음 과정이 진행됩니다.
|
|
851
|
+
|
|
852
|
+
```markdown
|
|
853
|
+
1. 앱이 WebView를 열고, 포트원 Browser SDK가 포함된 페이지를 로드
|
|
854
|
+
2. Browser SDK가 PG 결제 UI를 WebView에 표시
|
|
855
|
+
3. 사용자가 카드 정보 입력 / 간편결제 인증 진행
|
|
856
|
+
4. (필요시) 외부 앱 실행 — 은행 앱, 카카오페이 등
|
|
857
|
+
5. 외부 앱에서 인증 완료 → Deep Link로 앱 복귀
|
|
858
|
+
6. PG가 결제 결과와 함께 redirectUrl로 리다이렉트
|
|
859
|
+
7. 앱이 리다이렉트를 가로채서 결과 추출
|
|
860
|
+
8. 서버에서 결제 검증 후 주문 완료
|
|
861
|
+
```
|
|
862
|
+
|
|
863
|
+
포트원 모바일 SDK는 1\~7단계를 자동으로 처리합니다.
|
|
864
|
+
|
|
865
|
+
### 웹 결제와의 차이점
|
|
866
|
+
|
|
867
|
+
`PortOne.requestPayment()`는 결제창이 뜨기 전에 발생하는 오류(파라미터 형식 오류, 네트워크 통신 실패 등)를 Promise에서 throw합니다.
|
|
868
|
+
이는 모바일 WebView에서도 동일하지만, 결제 결과는 웹 브라우저와 달리 **리다이렉트 방식**으로 받아야 합니다.
|
|
869
|
+
|
|
870
|
+
```typescript
|
|
871
|
+
PortOne.requestPayment({
|
|
872
|
+
// ... 결제 파라미터
|
|
873
|
+
redirectUrl: "myapp://payment-complete",
|
|
874
|
+
appScheme: "myapp://",
|
|
875
|
+
});
|
|
876
|
+
```
|
|
877
|
+
|
|
878
|
+
1. `redirectUrl`에 결제 완료 후 리다이렉트될 URL을 지정합니다. 결제 내에서 사용하지 않을 URL이면 됩니다.
|
|
879
|
+
2. `appScheme`에 앱의 URL scheme을 지정합니다. 이 값은 카드사 앱에 전달되어, 인증 완료 후 앱으로 복귀할 때 사용됩니다.
|
|
880
|
+
3. 결제 완료 시 WebView가 `redirectUrl`로 이동하며, 쿼리 파라미터에 결제 결과가 포함됩니다.
|
|
881
|
+
4. 앱이 이 URL을 가로채서 쿼리 파라미터에서 결과를 추출합니다.
|
|
882
|
+
|
|
883
|
+
<div class="hint" data-style="info">
|
|
884
|
+
|
|
885
|
+
모바일 결제에서는 `redirectUrl` 설정이 필수입니다.
|
|
886
|
+
설정하지 않으면 결제 UI가 정상적으로 표시되지 않을 수 있습니다.
|
|
887
|
+
|
|
888
|
+
</div>
|
|
889
|
+
|
|
890
|
+
<div class="hint" data-style="info">
|
|
891
|
+
|
|
892
|
+
결제 파라미터에 대한 자세한 내용은 [리다이렉트 방식의 경우](https://developers.portone.io/opi/ko/integration/start/v2/checkout?v=v2#3-1-리다이렉트-방식의-경우) 문서를 참고하세요.
|
|
893
|
+
|
|
894
|
+
</div>
|
|
895
|
+
|
|
896
|
+
### 외부 앱 처리
|
|
897
|
+
|
|
898
|
+
결제 도중 PG사의 결제 페이지가 카드사 앱카드, ISP 인증, 계좌이체 앱 등을 실행하기 위해
|
|
899
|
+
`kftc-bankpay://`, `ispmobile://`, `intent://` 같은 URL로 WebView를 이동시키는 경우가 있습니다.
|
|
900
|
+
|
|
901
|
+
**모바일 브라우저**(Safari, Chrome)에서는 이러한 커스텀 URL scheme을 만나면 OS에 자동으로 전달하여 해당 앱을 실행합니다.
|
|
902
|
+
하지만 **앱 내 WebView는 웹 콘텐츠 렌더링 전용**이므로 이 동작이 기본적으로 지원되지 않습니다.
|
|
903
|
+
|
|
904
|
+
- iOS `WKWebView`: HTTP/HTTPS가 아닌 scheme으로의 네비게이션을 차단합니다.
|
|
905
|
+
- Android `WebView`: 알 수 없는 scheme에 대해 오류 페이지(`ERR_UNKNOWN_URL_SCHEME`)를 표시합니다.
|
|
906
|
+
|
|
907
|
+
따라서 WebView의 URL 네비게이션 이벤트를 가로채서, 네이티브 코드에서 OS API를 호출하여 외부 앱을 직접 실행해야 합니다.
|
|
908
|
+
|
|
909
|
+
|URL 유형 |예시 |처리 방법 |
|
|
910
|
+
|-------------------|--------------------|--------------------------|
|
|
911
|
+
|일반 웹 URL |`https://...` |WebView에서 정상 로드 |
|
|
912
|
+
|PG/카드사 앱 scheme|`kftc-bankpay://...`|해당 외부 앱 실행 |
|
|
913
|
+
|Android Intent |`intent://...` |Intent URI 파싱 후 앱 실행|
|
|
914
|
+
|커스텀 scheme |`myapp://...` |결제 완료 — 결과 추출 |
|
|
915
|
+
|
|
916
|
+
포트원 모바일 SDK는 이 URL 인터셉트 및 외부 앱 실행을 자동으로 처리합니다.
|
|
917
|
+
|
|
918
|
+
## SDK를 사용한 연동
|
|
919
|
+
|
|
920
|
+
포트원은 Android, iOS, React Native, Flutter용 공식 모바일 SDK를 제공합니다.
|
|
921
|
+
SDK가 위 연동원리에서 설명한 WebView 생성, 외부 앱 실행, 결제 결과 수신을 모두 자동으로 처리하므로 가장 간편한 연동 방식입니다.
|
|
922
|
+
|
|
923
|
+
SDK를 지원하는 플랫폼이라면 SDK를 사용하는 것을 권장합니다.
|
|
924
|
+
|
|
925
|
+
|플랫폼 |SDK |설치 방법 |레퍼런스 |
|
|
926
|
+
|------------|---------------------------|---------------------|--------------------------------------------------------|
|
|
927
|
+
|Android |`android-sdk` |JitPack |[GitHub](https://github.com/portone-io/android-sdk) |
|
|
928
|
+
|iOS |`PortOneSDK` |Swift Package Manager|[GitHub](https://github.com/portone-io/ios-sdk) |
|
|
929
|
+
|React Native|`@portone/react-native-sdk`|npm |[GitHub](https://github.com/portone-io/react-native-sdk)|
|
|
930
|
+
|Flutter |`portone_flutter` |pub.dev |[GitHub](https://github.com/portone-io/portone_flutter) |
|
|
931
|
+
|
|
932
|
+
<div class="hint" data-style="info">
|
|
933
|
+
|
|
934
|
+
각 SDK의 설치 및 사용법은 [모바일 SDK 레퍼런스](https://developers.portone.io/sdk/ko/v2-mobile-sdk/readme)를 참고하세요.<br />
|
|
935
|
+
다양한 플랫폼의 연동 예시는 [portone-sample GitHub 저장소](https://github.com/portone-io/portone-sample)에서 확인하실 수 있습니다.
|
|
936
|
+
|
|
937
|
+
</div>
|
|
938
|
+
|
|
939
|
+
---
|
|
940
|
+
|
|
941
|
+
## SDK 없이 직접 연동하기
|
|
942
|
+
|
|
943
|
+
V2 SDK가 제공되지 않는 플랫폼이나 WebView를 직접 제어하고 싶은 경우,
|
|
944
|
+
아래 단계를 따라 연동할 수 있습니다.
|
|
945
|
+
|
|
946
|
+
### Step 1. 의존성 설치
|
|
947
|
+
|
|
948
|
+
WebView를 표시하고 외부 앱을 실행하기 위한 라이브러리를 설치합니다.
|
|
949
|
+
|
|
950
|
+
<div class="tabs-container">
|
|
951
|
+
|
|
952
|
+
<div class="tabs-content" data-title="Flutter">
|
|
953
|
+
|
|
954
|
+
```yaml title="pubspec.yaml"
|
|
955
|
+
dependencies:
|
|
956
|
+
flutter_inappwebview: ^6.1.5 # WebView
|
|
957
|
+
url_launcher: ^6.3.1 # 외부 앱 실행
|
|
958
|
+
```
|
|
959
|
+
|
|
960
|
+
```shell
|
|
961
|
+
flutter pub get
|
|
962
|
+
```
|
|
963
|
+
|
|
964
|
+
</div>
|
|
965
|
+
|
|
966
|
+
<div class="tabs-content" data-title="Android (Kotlin)">
|
|
967
|
+
|
|
968
|
+
Android의 `WebView`는 기본 제공되므로 별도 의존성이 필요하지 않습니다.
|
|
969
|
+
|
|
970
|
+
`build.gradle`에서 minSdk 21 이상을 확인하세요.
|
|
971
|
+
|
|
972
|
+
```kotlin title="build.gradle.kts"
|
|
973
|
+
android {
|
|
974
|
+
defaultConfig {
|
|
975
|
+
minSdk = 21
|
|
976
|
+
}
|
|
977
|
+
}
|
|
978
|
+
```
|
|
979
|
+
|
|
980
|
+
</div>
|
|
981
|
+
|
|
982
|
+
<div class="tabs-content" data-title="iOS (Swift)">
|
|
983
|
+
|
|
984
|
+
iOS의 `WKWebView`는 WebKit 프레임워크에 기본 포함되어 있으므로 별도 의존성이 필요하지 않습니다.
|
|
985
|
+
|
|
986
|
+
배포 대상은 iOS 14 이상을 권장합니다.
|
|
987
|
+
|
|
988
|
+
</div>
|
|
989
|
+
|
|
990
|
+
<div class="tabs-content" data-title="React Native">
|
|
991
|
+
|
|
992
|
+
`react-native-webview`로 WebView를 표시하고, `Linking` API로 외부 앱을 실행합니다.
|
|
993
|
+
|
|
994
|
+
```shell
|
|
995
|
+
npm install react-native-webview
|
|
996
|
+
```
|
|
997
|
+
|
|
998
|
+
iOS의 경우 추가로 Pod을 설치합니다.
|
|
999
|
+
|
|
1000
|
+
```shell
|
|
1001
|
+
cd ios && pod install
|
|
1002
|
+
```
|
|
1003
|
+
|
|
1004
|
+
</div>
|
|
1005
|
+
|
|
1006
|
+
</div>
|
|
1007
|
+
|
|
1008
|
+
### Step 2. 플랫폼 필수 설정
|
|
1009
|
+
|
|
1010
|
+
결제 과정에서 은행 앱, 간편결제 앱 등 외부 앱이 실행됩니다.
|
|
1011
|
+
OS 정책상 실행 가능한 외부 앱을 사전에 선언해야 하며, **이 설정이 없으면 외부 앱 실행이 실패합니다.**
|
|
1012
|
+
|
|
1013
|
+
<div class="hint" data-style="info">
|
|
1014
|
+
|
|
1015
|
+
Flutter와 React Native는 크로스 플랫폼 프레임워크이므로 Android와 iOS 설정을 **모두** 적용해야 합니다.
|
|
1016
|
+
|
|
1017
|
+
</div>
|
|
1018
|
+
|
|
1019
|
+
<div class="tabs-container">
|
|
1020
|
+
|
|
1021
|
+
<div class="tabs-content" data-title="Flutter">
|
|
1022
|
+
|
|
1023
|
+
Flutter 프로젝트에서는 각 플랫폼의 네이티브 설정 파일에 직접 추가합니다.
|
|
1024
|
+
|
|
1025
|
+
- **Android**: `android/app/src/main/AndroidManifest.xml` — Android 탭의 `queries` 내용을 추가합니다.
|
|
1026
|
+
- **iOS**: `ios/Runner/Info.plist` — iOS 탭의 `LSApplicationQueriesSchemes`와 `CFBundleURLTypes` 내용을 추가합니다.
|
|
1027
|
+
|
|
1028
|
+
</div>
|
|
1029
|
+
|
|
1030
|
+
<div class="tabs-content" data-title="Android">
|
|
1031
|
+
|
|
1032
|
+
Android 11(API 30) 이상에서는 **패키지 가시성** 정책에 따라 AndroidManifest.xml에 결제 앱 패키지를 선언해야 합니다.
|
|
1033
|
+
|
|
1034
|
+
```xml title="AndroidManifest.xml"
|
|
1035
|
+
<manifest xmlns:android="http://schemas.android.com/apk/res/android">
|
|
1036
|
+
<queries>
|
|
1037
|
+
<package android:name="com.kftc.bankpay.android" /> <!-- 뱅크페이 -->
|
|
1038
|
+
<package android:name="kvp.jjy.MispAndroid320" /> <!-- ISP / 페이북 -->
|
|
1039
|
+
<package android:name="com.hyundaicard.appcard" /> <!-- 현대카드 -->
|
|
1040
|
+
<package android:name="com.shcard.smartpay" /> <!-- 신한 SOL페이 -->
|
|
1041
|
+
<package android:name="com.shinhan.smartcaremgr" /> <!-- 신한 슈퍼SOL -->
|
|
1042
|
+
<package android:name="com.shinhan.sbanking" /> <!-- 신한 SOL뱅크 -->
|
|
1043
|
+
<package android:name="com.kbcard.cxh.appcard" /> <!-- KB Pay -->
|
|
1044
|
+
<package android:name="com.kbstar.kbbank" /> <!-- KB스타뱅킹 -->
|
|
1045
|
+
<package android:name="kr.co.samsungcard.mpocket" /> <!-- 삼성카드 -->
|
|
1046
|
+
<package android:name="com.samsung.android.spay" /> <!-- Samsung Wallet -->
|
|
1047
|
+
<package android:name="net.ib.android.smcard" /> <!-- monimo -->
|
|
1048
|
+
<package android:name="com.lcacApp" /> <!-- 디지로카 (롯데카드) -->
|
|
1049
|
+
<package android:name="com.lottemembers.android" /> <!-- L.POINT with L.PAY -->
|
|
1050
|
+
<package android:name="com.hanaskcard.paycla" /> <!-- 하나Pay (하나카드) -->
|
|
1051
|
+
<package android:name="nh.smart.nhallonepay" /> <!-- NH Pay -->
|
|
1052
|
+
<package android:name="kr.co.citibank.citimobile" /> <!-- 씨티모바일 -->
|
|
1053
|
+
<package android:name="com.kakao.talk" /> <!-- 카카오톡 (카카오페이) -->
|
|
1054
|
+
<package android:name="com.nhnent.payapp" /> <!-- PAYCO -->
|
|
1055
|
+
<package android:name="com.wooricard.smartapp" /> <!-- 우리카드 우리WON카드 -->
|
|
1056
|
+
<package android:name="com.wooribank.smart.npib" /> <!-- 우리은행 우리WON뱅킹 -->
|
|
1057
|
+
<package android:name="viva.republica.toss" /> <!-- 토스 -->
|
|
1058
|
+
<package android:name="com.nhn.android.search" /> <!-- 네이버 (네이버페이) -->
|
|
1059
|
+
<package android:name="com.kakaobank.channel" /> <!-- 카카오뱅크 -->
|
|
1060
|
+
<package android:name="com.ahnlab.v3mobileplus" /> <!-- V3 Mobile Plus -->
|
|
1061
|
+
<package android:name="com.TouchEn.mVaccine.webs" /> <!-- 터치엔 엠백신 -->
|
|
1062
|
+
<package android:name="com.sktelecom.tauth" /> <!-- PASS by SKT -->
|
|
1063
|
+
<package android:name="com.kt.ktauth" /> <!-- PASS by KT -->
|
|
1064
|
+
<package android:name="com.lguplus.smartotp" /> <!-- PASS by U+ -->
|
|
1065
|
+
<package android:name="com.mysmilepay.app" /> <!-- 스마일페이 -->
|
|
1066
|
+
<package android:name="com.ssg.serviceapp.android.egiftcertificate" /> <!-- SSGPAY -->
|
|
1067
|
+
<package android:name="com.hanabank.mzplatform" /> <!-- 아이부자 -->
|
|
1068
|
+
<package android:name="com.knb.psb" /> <!-- BNK경남은행 -->
|
|
1069
|
+
<package android:name="kr.ac.yonsei.idcard" /> <!-- 연세페이 -->
|
|
1070
|
+
<package android:name="jp.naver.line.android" /> <!-- LINE (LINE Pay) -->
|
|
1071
|
+
<package android:name="com.eg.android.AlipayGphone" /> <!-- Alipay -->
|
|
1072
|
+
<package android:name="hk.alipay.wallet" /> <!-- AlipayHK -->
|
|
1073
|
+
<package android:name="com.tencent.mm" /> <!-- WeChat -->
|
|
1074
|
+
<package android:name="com.globe.gcash.android" /> <!-- GCash -->
|
|
1075
|
+
<package android:name="th.co.truemoney.wallet" /> <!-- TrueMoney -->
|
|
1076
|
+
<intent>
|
|
1077
|
+
<action android:name="android.intent.action.VIEW" />
|
|
1078
|
+
<category android:name="android.intent.category.BROWSABLE" />
|
|
1079
|
+
<data android:scheme="https" />
|
|
1080
|
+
</intent>
|
|
1081
|
+
</queries>
|
|
1082
|
+
</manifest>
|
|
1083
|
+
```
|
|
1084
|
+
|
|
1085
|
+
앱이 외부 결제 앱에서 복귀할 수 있도록 커스텀 URL scheme도 등록합니다.
|
|
1086
|
+
결제를 시작하는 Activity의 `intent-filter`에 앱의 URL scheme을 추가합니다.
|
|
1087
|
+
|
|
1088
|
+
```xml title="AndroidManifest.xml"
|
|
1089
|
+
<application ...>
|
|
1090
|
+
<activity
|
|
1091
|
+
android:name=".MainActivity"
|
|
1092
|
+
android:launchMode="singleTask"
|
|
1093
|
+
android:exported="true">
|
|
1094
|
+
<intent-filter>
|
|
1095
|
+
<action android:name="android.intent.action.MAIN" />
|
|
1096
|
+
<category android:name="android.intent.category.LAUNCHER" />
|
|
1097
|
+
</intent-filter>
|
|
1098
|
+
<intent-filter>
|
|
1099
|
+
<action android:name="android.intent.action.VIEW" />
|
|
1100
|
+
<category android:name="android.intent.category.DEFAULT" />
|
|
1101
|
+
<category android:name="android.intent.category.BROWSABLE" />
|
|
1102
|
+
<data android:scheme="myapp" />
|
|
1103
|
+
</intent-filter>
|
|
1104
|
+
</activity>
|
|
1105
|
+
</application>
|
|
1106
|
+
```
|
|
1107
|
+
|
|
1108
|
+
</div>
|
|
1109
|
+
|
|
1110
|
+
<div class="tabs-content" data-title="iOS">
|
|
1111
|
+
|
|
1112
|
+
Info.plist에 `LSApplicationQueriesSchemes`를 등록하여 결제 앱의 URL scheme을 선언해야 합니다.
|
|
1113
|
+
iOS 15 이상에서는 최대 50개까지 등록할 수 있으므로, 필요한 항목만을 추가합니다.
|
|
1114
|
+
|
|
1115
|
+
```xml title="Info.plist"
|
|
1116
|
+
<key>LSApplicationQueriesSchemes</key>
|
|
1117
|
+
<array>
|
|
1118
|
+
<string>kftc-bankpay</string> <!-- 뱅크페이 -->
|
|
1119
|
+
<string>ispmobile</string> <!-- ISP / 페이북 -->
|
|
1120
|
+
<string>hdcardappcardansimclick</string> <!-- 현대카드 -->
|
|
1121
|
+
<string>shinhan-sr-ansimclick</string> <!-- 신한 SOL페이 -->
|
|
1122
|
+
<string>shinhan-sr-ansimclick-payco</string> <!-- 신한 SOL페이 (PAYCO) -->
|
|
1123
|
+
<string>shinhan-sr-ansimclick-lpay</string> <!-- 신한 SOL페이 (L.PAY) -->
|
|
1124
|
+
<string>kb-acp</string> <!-- KB Pay -->
|
|
1125
|
+
<string>kbbank</string> <!-- KB스타뱅킹 -->
|
|
1126
|
+
<string>mpocket.online.ansimclick</string> <!-- 삼성카드 -->
|
|
1127
|
+
<string>lotteappcard</string> <!-- 디지로카 (롯데카드) -->
|
|
1128
|
+
<string>lmslpay</string> <!-- L.POINT with L.PAY -->
|
|
1129
|
+
<string>cloudpay</string> <!-- 하나Pay (하나카드) -->
|
|
1130
|
+
<string>nhallonepayansimclick</string> <!-- NH Pay -->
|
|
1131
|
+
<string>citimobileapp</string> <!-- 씨티모바일 (씨티카드) -->
|
|
1132
|
+
<string>kakaotalk</string> <!-- 카카오톡 (카카오페이) -->
|
|
1133
|
+
<string>payco</string> <!-- PAYCO -->
|
|
1134
|
+
<string>com.wooricard.wcard</string> <!-- 우리카드 우리WON카드 -->
|
|
1135
|
+
<string>newsmartpib</string> <!-- 우리은행 우리WON뱅킹 -->
|
|
1136
|
+
<string>supertoss</string> <!-- 토스 -->
|
|
1137
|
+
<string>naversearchthirdlogin</string> <!-- 네이버 (네이버페이) -->
|
|
1138
|
+
<string>kakaobank</string> <!-- 카카오뱅크 -->
|
|
1139
|
+
<string>tauthlink</string> <!-- PASS by SKT -->
|
|
1140
|
+
<string>ktauthexternalcall</string> <!-- PASS by KT -->
|
|
1141
|
+
<string>upluscorporation</string> <!-- PASS by U+ -->
|
|
1142
|
+
<string>kn-bankpay</string> <!-- BNK경남은행 -->
|
|
1143
|
+
<string>yonseipay</string> <!-- 연세페이 -->
|
|
1144
|
+
<string>line</string> <!-- LINE (LINE Pay) -->
|
|
1145
|
+
<string>alipays</string> <!-- Alipay -->
|
|
1146
|
+
<string>alipayhk</string> <!-- AlipayHK -->
|
|
1147
|
+
<string>weixin</string> <!-- WeChat -->
|
|
1148
|
+
<string>ascendmoney</string> <!-- TrueMoney -->
|
|
1149
|
+
</array>
|
|
1150
|
+
```
|
|
1151
|
+
|
|
1152
|
+
앱이 외부 결제 앱에서 복귀할 수 있도록 커스텀 URL scheme도 등록합니다.
|
|
1153
|
+
|
|
1154
|
+
```xml title="Info.plist"
|
|
1155
|
+
<key>CFBundleURLTypes</key>
|
|
1156
|
+
<array>
|
|
1157
|
+
<dict>
|
|
1158
|
+
<key>CFBundleURLSchemes</key>
|
|
1159
|
+
<array>
|
|
1160
|
+
<string>myapp</string>
|
|
1161
|
+
</array>
|
|
1162
|
+
</dict>
|
|
1163
|
+
</array>
|
|
1164
|
+
```
|
|
1165
|
+
|
|
1166
|
+
</div>
|
|
1167
|
+
|
|
1168
|
+
<div class="tabs-content" data-title="React Native">
|
|
1169
|
+
|
|
1170
|
+
React Native 프로젝트에서는 각 플랫폼의 네이티브 설정 파일에 직접 추가합니다.
|
|
1171
|
+
|
|
1172
|
+
- **Android**: `android/app/src/main/AndroidManifest.xml` — Android 탭의 `queries` 내용을 추가합니다.
|
|
1173
|
+
- **iOS**: `ios/<프로젝트명>/Info.plist` — iOS 탭의 `LSApplicationQueriesSchemes`와 `CFBundleURLTypes` 내용을 추가합니다.
|
|
1174
|
+
|
|
1175
|
+
</div>
|
|
1176
|
+
|
|
1177
|
+
</div>
|
|
1178
|
+
|
|
1179
|
+
### Step 3. WebView에서 결제 페이지 로드
|
|
1180
|
+
|
|
1181
|
+
WebView를 생성하고 포트원 Browser SDK가 포함된 HTML을 로드합니다.
|
|
1182
|
+
`redirectUrl`에 결제 완료 후 리다이렉트될 URL을, `appScheme`에 카드사 앱 등에서 복귀할 때 사용할 앱 URL scheme을 지정합니다.
|
|
1183
|
+
|
|
1184
|
+
<div class="hint" data-style="warning">
|
|
1185
|
+
|
|
1186
|
+
WebView에 HTML 텍스트를 직접 로드하는 경우 `data:` 또는 `file:` 등의 opaque URL이 사용됩니다.
|
|
1187
|
+
이 상태에서 `postMessage`를 사용하면 [정상 동작하지 않을 수 있으니](https://developer.mozilla.org/en-US/docs/Web/API/Window/postMessage#targetorigin) 주의하세요.
|
|
1188
|
+
`baseUrl`을 `https://` URL로 임의 설정하여 해소할 수 있습니다.
|
|
1189
|
+
|
|
1190
|
+
</div>
|
|
1191
|
+
|
|
1192
|
+
```html
|
|
1193
|
+
<!doctype html>
|
|
1194
|
+
<html>
|
|
1195
|
+
<head>
|
|
1196
|
+
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
|
1197
|
+
<script src="https://cdn.portone.io/v2/browser-sdk.js"></script>
|
|
1198
|
+
<script>
|
|
1199
|
+
PortOne.requestPayment({
|
|
1200
|
+
storeId: "store-...",
|
|
1201
|
+
paymentId: "payment-...",
|
|
1202
|
+
orderName: "주문명",
|
|
1203
|
+
totalAmount: 1000,
|
|
1204
|
+
currency: "KRW",
|
|
1205
|
+
channelKey: "channel-key-...",
|
|
1206
|
+
payMethod: "CARD",
|
|
1207
|
+
redirectUrl: "myapp://payment-complete",
|
|
1208
|
+
appScheme: "myapp://",
|
|
1209
|
+
});
|
|
1210
|
+
</script>
|
|
1211
|
+
</head>
|
|
1212
|
+
</html>
|
|
1213
|
+
```
|
|
1214
|
+
|
|
1215
|
+
<div class="hint" data-style="info">
|
|
1216
|
+
|
|
1217
|
+
위 예시는 이해를 돕기 위한 최소 구성입니다.
|
|
1218
|
+
실제 연동 시에는 [결제대행사별 연동 가이드](https://developers.portone.io/opi/ko/integration/pg/v2/readme?v=v2)및 [브라우저 SDK 요청 형식](https://developers.portone.io/sdk/ko/v2-sdk/payment-request?v=v2)에 따라 파라미터를 추가하세요.
|
|
1219
|
+
|
|
1220
|
+
</div>
|
|
1221
|
+
|
|
1222
|
+
<div class="hint" data-style="warning">
|
|
1223
|
+
|
|
1224
|
+
Android `WebView`는 JavaScript가 기본 비활성화이므로 `settings.javaScriptEnabled = true` 설정이 필요합니다.
|
|
1225
|
+
(iOS `WKWebView`와 Flutter `InAppWebView`는 기본 활성화입니다.)
|
|
1226
|
+
|
|
1227
|
+
결제 완료 시 WebView가 `redirectUrl`로 이동하므로,
|
|
1228
|
+
다음 Step의 URL 네비게이션 처리에서 해당 URL을 구분할 수 있어야 합니다.
|
|
1229
|
+
|
|
1230
|
+
</div>
|
|
1231
|
+
|
|
1232
|
+
### Step 4. URL 네비게이션 처리
|
|
1233
|
+
|
|
1234
|
+
WebView에서 발생하는 URL 네비게이션을 프로토콜별로 분기 처리해야 합니다.
|
|
1235
|
+
아래 코드는 분기 처리의 핵심 로직만 발췌한 것입니다.
|
|
1236
|
+
|
|
1237
|
+
|URL 프로토콜 |처리 방법 |
|
|
1238
|
+
|------------------------------------------|-------------------------------------------|
|
|
1239
|
+
|`http://`, `https://` |WebView에서 정상 로드 |
|
|
1240
|
+
|커스텀 scheme (`myapp://`) |결제 완료 — URL 쿼리 파라미터에서 결과 추출|
|
|
1241
|
+
|`intent://` (Android) |Intent URI를 파싱하여 해당 앱 실행 |
|
|
1242
|
+
|PG/카드사 앱 scheme (`kftc-bankpay://` 등)|해당 외부 앱 실행 |
|
|
1243
|
+
|
|
1244
|
+
<div class="hint" data-style="info">
|
|
1245
|
+
|
|
1246
|
+
엑심베이 GCash 결제는 `intent://`나 `gcash://`가 아닌 `https://gcash.onelink.me` URL을 사용하며,
|
|
1247
|
+
이때 `gcash://com.mynt.gcash/app`을 직접 호출해야 합니다.
|
|
1248
|
+
자세한 처리는 [React Native SDK의 해당 부분](https://github.com/portone-io/react-native-sdk/blob/03dac55/src/SdkDelegate.tsx#L96-L103)을 참고하세요.
|
|
1249
|
+
|
|
1250
|
+
</div>
|
|
1251
|
+
|
|
1252
|
+
<div class="tabs-container">
|
|
1253
|
+
|
|
1254
|
+
<div class="tabs-content" data-title="Flutter (Dart)">
|
|
1255
|
+
|
|
1256
|
+
`InAppWebView`의 `shouldOverrideUrlLoading` 콜백에서 URL scheme별로 분기합니다.<br />
|
|
1257
|
+
전체 동작하는 예시는 [portone\_flutter SDK의 portone\_webview.dart](https://github.com/portone-io/portone_flutter/blob/233b101/lib/v2/widget/portone_webview.dart#L114-L151)를 참고하세요.
|
|
1258
|
+
|
|
1259
|
+
```dart
|
|
1260
|
+
InAppWebView(
|
|
1261
|
+
initialSettings: InAppWebViewSettings(
|
|
1262
|
+
useShouldOverrideUrlLoading: true,
|
|
1263
|
+
resourceCustomSchemes: ["intent"],
|
|
1264
|
+
),
|
|
1265
|
+
shouldOverrideUrlLoading: (controller, navigateAction) async {
|
|
1266
|
+
// URI 파서는 플랫폼마다 동작이 다를 수 있으므로 (예: 페이북),
|
|
1267
|
+
// rawValue에서 직접 protocol을 추출합니다.
|
|
1268
|
+
final uri = navigateAction.request.url!.rawValue;
|
|
1269
|
+
var protocol = uri.substring(0, uri.indexOf(':'));
|
|
1270
|
+
|
|
1271
|
+
switch (protocol) {
|
|
1272
|
+
case 'http':
|
|
1273
|
+
case 'https':
|
|
1274
|
+
return NavigationActionPolicy.ALLOW;
|
|
1275
|
+
case 'myapp':
|
|
1276
|
+
// 결제 완료 — 쿼리 파라미터에서 결과 추출
|
|
1277
|
+
return NavigationActionPolicy.CANCEL;
|
|
1278
|
+
case 'intent':
|
|
1279
|
+
// intent:// URI에서 scheme을 추출하여 앱 실행
|
|
1280
|
+
// 미설치 시 마켓으로 이동
|
|
1281
|
+
return NavigationActionPolicy.CANCEL;
|
|
1282
|
+
default:
|
|
1283
|
+
// PG/카드사 앱 등 외부 앱 실행
|
|
1284
|
+
if (await canLaunchUrlString(uri)) launchUrlString(uri);
|
|
1285
|
+
return NavigationActionPolicy.CANCEL;
|
|
1286
|
+
}
|
|
1287
|
+
},
|
|
1288
|
+
)
|
|
1289
|
+
```
|
|
1290
|
+
|
|
1291
|
+
</div>
|
|
1292
|
+
|
|
1293
|
+
<div class="tabs-content" data-title="Android (Kotlin)">
|
|
1294
|
+
|
|
1295
|
+
`WebViewClient`의 `shouldOverrideUrlLoading`에서 URL scheme별로 분기합니다.<br />
|
|
1296
|
+
전체 구현은 [Android SDK의 PortOneWebView.kt](https://github.com/portone-io/android-sdk/blob/c3aeec4/sdk/src/main/java/io/portone/sdk/android/PortOneWebView.kt#L75-L111)를 참고하세요.
|
|
1297
|
+
|
|
1298
|
+
```kotlin
|
|
1299
|
+
webView.settings.javaScriptEnabled = true
|
|
1300
|
+
|
|
1301
|
+
webView.webViewClient = object : WebViewClient() {
|
|
1302
|
+
override fun shouldOverrideUrlLoading(
|
|
1303
|
+
view: WebView, request: WebResourceRequest
|
|
1304
|
+
): Boolean {
|
|
1305
|
+
val url = request.url
|
|
1306
|
+
return when (url.scheme) {
|
|
1307
|
+
"http", "https" -> false // WebView에서 정상 로드
|
|
1308
|
+
"myapp" -> {
|
|
1309
|
+
// 결제 완료 — 쿼리 파라미터에서 결과 추출
|
|
1310
|
+
handlePaymentResult(url)
|
|
1311
|
+
true
|
|
1312
|
+
}
|
|
1313
|
+
"intent" -> {
|
|
1314
|
+
// Intent URI 파싱 후 앱 실행, 미설치 시 마켓 이동
|
|
1315
|
+
launchIntentOrMarket(url)
|
|
1316
|
+
true
|
|
1317
|
+
}
|
|
1318
|
+
else -> {
|
|
1319
|
+
// PG/카드사 앱 등 외부 앱 실행
|
|
1320
|
+
startActivity(Intent(Intent.ACTION_VIEW, url))
|
|
1321
|
+
true
|
|
1322
|
+
}
|
|
1323
|
+
}
|
|
1324
|
+
}
|
|
1325
|
+
}
|
|
1326
|
+
```
|
|
1327
|
+
|
|
1328
|
+
</div>
|
|
1329
|
+
|
|
1330
|
+
<div class="tabs-content" data-title="iOS (Swift)">
|
|
1331
|
+
|
|
1332
|
+
`WKNavigationDelegate`의 `decidePolicyFor`에서 URL scheme별로 분기합니다.<br />
|
|
1333
|
+
전체 구현은 [iOS SDK의 PaymentWebView.swift](https://github.com/portone-io/ios-sdk/blob/a88175c/Sources/PortOneSdk/PaymentWebView.swift#L117-L181)를 참고하세요.
|
|
1334
|
+
|
|
1335
|
+
```swift
|
|
1336
|
+
func webView(
|
|
1337
|
+
_ webView: WKWebView,
|
|
1338
|
+
decidePolicyFor navigationAction: WKNavigationAction,
|
|
1339
|
+
decisionHandler: @escaping (WKNavigationActionPolicy) -> Void
|
|
1340
|
+
) {
|
|
1341
|
+
guard let url = navigationAction.request.url else {
|
|
1342
|
+
decisionHandler(.allow)
|
|
1343
|
+
return
|
|
1344
|
+
}
|
|
1345
|
+
|
|
1346
|
+
switch url.scheme {
|
|
1347
|
+
case "http", "https":
|
|
1348
|
+
decisionHandler(.allow)
|
|
1349
|
+
case "myapp":
|
|
1350
|
+
// 결제 완료 — 쿼리 파라미터에서 결과 추출
|
|
1351
|
+
handlePaymentResult(url: url)
|
|
1352
|
+
decisionHandler(.cancel)
|
|
1353
|
+
default:
|
|
1354
|
+
// PG/카드사 앱 등 외부 앱 실행
|
|
1355
|
+
UIApplication.shared.open(url)
|
|
1356
|
+
decisionHandler(.cancel)
|
|
1357
|
+
}
|
|
1358
|
+
}
|
|
1359
|
+
```
|
|
1360
|
+
|
|
1361
|
+
</div>
|
|
1362
|
+
|
|
1363
|
+
<div class="tabs-content" data-title="React Native">
|
|
1364
|
+
|
|
1365
|
+
`react-native-webview`의 `onShouldStartLoadWithRequest`에서 URL scheme별로 분기합니다.<br />
|
|
1366
|
+
전체 구현은 [React Native SDK의 SdkDelegate.tsx](https://github.com/portone-io/react-native-sdk/blob/deea773/src/SdkDelegate.tsx#L83-L156)를 참고하세요.
|
|
1367
|
+
|
|
1368
|
+
```tsx
|
|
1369
|
+
import { Linking } from "react-native";
|
|
1370
|
+
import { WebView } from "react-native-webview";
|
|
1371
|
+
|
|
1372
|
+
<WebView
|
|
1373
|
+
source={{ html: paymentHtml }}
|
|
1374
|
+
originWhitelist={["*"]}
|
|
1375
|
+
javaScriptEnabled
|
|
1376
|
+
onShouldStartLoadWithRequest={(request) => {
|
|
1377
|
+
const url = request.url;
|
|
1378
|
+
const protocol = url.split(":", 2)[0];
|
|
1379
|
+
|
|
1380
|
+
switch (protocol) {
|
|
1381
|
+
case "http":
|
|
1382
|
+
case "https":
|
|
1383
|
+
return true;
|
|
1384
|
+
case "myapp":
|
|
1385
|
+
// 결제 완료 — 쿼리 파라미터에서 결과 추출
|
|
1386
|
+
handlePaymentResult(url);
|
|
1387
|
+
return false;
|
|
1388
|
+
case "intent":
|
|
1389
|
+
// intent:// URI에서 scheme을 추출하여 앱 실행
|
|
1390
|
+
// 미설치 시 마켓으로 이동
|
|
1391
|
+
launchIntentOrMarket(url);
|
|
1392
|
+
return false;
|
|
1393
|
+
default:
|
|
1394
|
+
// PG/카드사 앱 등 외부 앱 실행
|
|
1395
|
+
Linking.openURL(url).catch(() => {});
|
|
1396
|
+
return false;
|
|
1397
|
+
}
|
|
1398
|
+
}}
|
|
1399
|
+
/>;
|
|
1400
|
+
```
|
|
1401
|
+
|
|
1402
|
+
</div>
|
|
1403
|
+
|
|
1404
|
+
</div>
|
|
1405
|
+
|
|
1406
|
+
### Step 5. 결제 결과 처리
|
|
1407
|
+
|
|
1408
|
+
결제가 완료되면 `redirectUrl`로 리다이렉트되며, 쿼리 파라미터에 결제 결과가 포함됩니다.
|
|
1409
|
+
파라미터에 대한 자세한 내용은 [리다이렉트 방식의 경우](https://developers.portone.io/opi/ko/integration/start/v2/checkout?v=v2#3-1-리다이렉트-방식의-경우) 문서를 참고하세요.
|
|
1410
|
+
|
|
1411
|
+
<div class="hint" data-style="warning">
|
|
1412
|
+
|
|
1413
|
+
`redirectUrl`로 이동하기 전에 앱이 종료되는 경우도 있습니다.
|
|
1414
|
+
이 경우 앱이 결제 종료를 서버에 알릴 수 없으므로, 서버에서
|
|
1415
|
+
[웹훅](https://developers.portone.io/opi/ko/integration/start/v2/checkout#5-웹훅-연동하기) 또는 [수동 승인](https://developers.portone.io/opi/ko/integration/start/v2/checkout#3-1-리다이렉트-방식의-경우) 기능을 함께 사용하는 것을 권장합니다.
|
|
1416
|
+
|
|
1417
|
+
</div>
|
|
1418
|
+
|
|
1419
|
+
<div class="hint" data-style="warning">
|
|
1420
|
+
|
|
1421
|
+
클라이언트 측 결제 결과만으로 주문을 확정하면 안됩니다. 서버에서 [결제 조회 API](https://developers.portone.io/api/rest-v2/payment#get%20%2Fpayments%2F%7BpaymentId%7D)를 호출하여 결제 상태와 금액을 검증해야 합니다.
|
|
1422
|
+
|
|
1423
|
+
</div>
|
|
1424
|
+
|
|
1425
|
+
서버 측 결제 검증 방법은 [인증 결제 연동하기 - 결제 완료 처리 (서버)](https://developers.portone.io/opi/ko/integration/start/v2/checkout#4-결제-완료-처리-서버)를 참고하세요.
|
|
1426
|
+
|
|
1427
|
+
## 참고 링크
|
|
1428
|
+
|
|
1429
|
+
- [모바일 SDK 레퍼런스](https://developers.portone.io/sdk/ko/v2-mobile-sdk/readme)
|
|
1430
|
+
- [결제 연동 샘플 프로젝트](https://github.com/portone-io/portone-sample)
|
|
1431
|
+
- [인증 결제 연동하기](https://developers.portone.io/opi/ko/integration/start/v2/checkout) (웹 결제 연동 가이드)
|
|
1432
|
+
- [결제 조회 API](https://developers.portone.io/api/rest-v2/payment#get%20%2Fpayments%2F%7BpaymentId%7D) (서버 측 검증)
|
|
1433
|
+
|
|
1434
|
+
|
|
813
1435
|
# https://developers.portone.io/opi/ko/integration/cancel/v2/readme
|
|
814
1436
|
|
|
815
1437
|
---
|
|
@@ -845,6 +1467,9 @@ PG사를 통해 직접 취소할 경우 포트원과 결제 상태가 동기화
|
|
|
845
1467
|
|
|
846
1468
|
PG사는 이런 과정에서 발생할 수 있는 혼란을 미연에 방지하고자 **가상계좌 특약서비스에 가입한 고객사에 한해서만 가상계좌 환불을 제공**하고 있습니다.
|
|
847
1469
|
|
|
1470
|
+
단, **토스페이먼츠**의 경우 별도의 특약 가입 없이도 가상계좌 환불이 가능합니다.
|
|
1471
|
+
이 경우 환불 시 기존 거래에서 발생한 수수료는 환불되지 않습니다.
|
|
1472
|
+
|
|
848
1473
|
</div>
|
|
849
1474
|
|
|
850
1475
|
- **필수 정보**: 환불 계좌 정보 (`refundAccount.bank`, `refundAccount.number`, `refundAccount.holderName`)
|
|
@@ -1076,7 +1701,7 @@ try {
|
|
|
1076
1701
|
|
|
1077
1702
|
**계좌 은행**
|
|
1078
1703
|
|
|
1079
|
-
[Bank](https://developers.portone.io/api/rest-v2/
|
|
1704
|
+
[Bank](https://developers.portone.io/api/rest-v2/payment#Bank) 타입 참고
|
|
1080
1705
|
|
|
1081
1706
|
- number: string
|
|
1082
1707
|
|
|
@@ -2403,6 +3028,672 @@ const response = await axios({
|
|
|
2403
3028
|
- 엑심베이의 경우 결제창을 닫은 이후에 결제가 성공 처리될 수 있습니다. 웹훅을 연동하여 결제 실패 상태에서 결제 성공 상태로 바뀌는 경우를 처리해야 합니다.
|
|
2404
3029
|
|
|
2405
3030
|
|
|
3031
|
+
# https://developers.portone.io/opi/ko/integration/pg/v2/galaxia
|
|
3032
|
+
|
|
3033
|
+
---
|
|
3034
|
+
title: 갤럭시아머니트리
|
|
3035
|
+
description: 갤럭시아머니트리 결제 연동 방법을 안내합니다.
|
|
3036
|
+
targetVersions:
|
|
3037
|
+
- v2
|
|
3038
|
+
versionVariants:
|
|
3039
|
+
v1: /opi/ko/integration/pg/v1/galaxia
|
|
3040
|
+
---
|
|
3041
|
+
|
|
3042
|
+
## 채널 설정하기
|
|
3043
|
+
|
|
3044
|
+
- [결제대행사 채널 설정하기](https://developers.portone.io/opi/ko/integration/ready/readme#3-결제대행사-채널-설정하기)의 내용을 참고하여 PG 설정을 진행합니다.
|
|
3045
|
+
|
|
3046
|
+
## 가능한 결제 수단
|
|
3047
|
+
|
|
3048
|
+
- **결제창 일반 결제**
|
|
3049
|
+
|
|
3050
|
+
`payMethod` 파라미터를 결제 수단에 따라 아래와 같이 설정해야 합니다.
|
|
3051
|
+
|
|
3052
|
+
- 카드 : `CARD`
|
|
3053
|
+
- 계좌이체 : `TRANSFER`
|
|
3054
|
+
- 가상계좌 : `VIRTUAL_ACCOUNT`
|
|
3055
|
+
- 휴대폰 소액 결제 : `MOBILE`
|
|
3056
|
+
- 상품권 : `GIFT_CERTIFICATE`
|
|
3057
|
+
- 간편결제 : `EASY_PAY`
|
|
3058
|
+
|
|
3059
|
+
- **결제창 빌링키 발급**
|
|
3060
|
+
|
|
3061
|
+
`billingKeyMethod` 파라미터를 결제 수단에 따라 아래와 같이 설정해야 합니다.
|
|
3062
|
+
|
|
3063
|
+
- 카드: `CARD`
|
|
3064
|
+
|
|
3065
|
+
- **결제창 빌링키 발급과 동시에 결제**
|
|
3066
|
+
|
|
3067
|
+
`billingKeyAndPayMethod` 파라미터를 결제 수단에 따라 아래와 같이 설정해야 합니다.
|
|
3068
|
+
|
|
3069
|
+
- 휴대폰: `MOBILE`
|
|
3070
|
+
|
|
3071
|
+
## SDK 결제 요청하기
|
|
3072
|
+
|
|
3073
|
+
결제 요청 시에는 `requestPayment` 함수를 호출해야 합니다.
|
|
3074
|
+
`channelKey` 파라미터에 결제 채널 연동 후 생성된 채널 키값을 지정하여 갤럭시아머니트리 채널 사용을 명시해주세요.
|
|
3075
|
+
|
|
3076
|
+
갤럭시아머니트리 기준으로 작성한 예시 코드는 아래와 같습니다.
|
|
3077
|
+
|
|
3078
|
+
<div class="tabs-container">
|
|
3079
|
+
|
|
3080
|
+
<div class="tabs-content" data-title="SDK 결제 요청">
|
|
3081
|
+
|
|
3082
|
+
```javascript
|
|
3083
|
+
import * as PortOne from "@portone/browser-sdk/v2";
|
|
3084
|
+
function requestPayment() {
|
|
3085
|
+
PortOne.requestPayment({
|
|
3086
|
+
storeId: "store-4ff4af41-85e3-4559-8eb8-0d08a2c6ceec", // 고객사 storeId로 변경해주세요.
|
|
3087
|
+
channelKey: "channel-key-9987cb87-6458-4888-b94e-68d9a2da896d", // 콘솔 결제 연동 화면에서 채널 연동 시 생성된 채널 키를 입력해주세요.
|
|
3088
|
+
paymentId: `payment${crypto.randomUUID()}`,
|
|
3089
|
+
orderName: "나이키 와플 트레이너 2 SD",
|
|
3090
|
+
totalAmount: 1000,
|
|
3091
|
+
currency: "KRW",
|
|
3092
|
+
payMethod: "CARD",
|
|
3093
|
+
customer: {
|
|
3094
|
+
customerId: "customer-1234", // 고객사가 구매자에게 부여한 고유 ID (필수)
|
|
3095
|
+
fullName: "포트원",
|
|
3096
|
+
phoneNumber: "010-0000-1234",
|
|
3097
|
+
email: "test@portone.io",
|
|
3098
|
+
},
|
|
3099
|
+
bypass: {
|
|
3100
|
+
galaxia: {
|
|
3101
|
+
ITEM_CODE: "상품코드", // 필수, 최대 10바이트
|
|
3102
|
+
},
|
|
3103
|
+
},
|
|
3104
|
+
});
|
|
3105
|
+
}
|
|
3106
|
+
```
|
|
3107
|
+
|
|
3108
|
+
</div>
|
|
3109
|
+
|
|
3110
|
+
</div>
|
|
3111
|
+
|
|
3112
|
+
### 주요 파라미터
|
|
3113
|
+
|
|
3114
|
+
- storeId: string
|
|
3115
|
+
|
|
3116
|
+
**상점 아이디**
|
|
3117
|
+
|
|
3118
|
+
포트원 계정에 생성된 상점을 식별하는 고유한 값으로 관리자 콘솔에서 확인할 수 있습니다.
|
|
3119
|
+
|
|
3120
|
+
- paymentId: string
|
|
3121
|
+
|
|
3122
|
+
**고객사 주문 고유 번호**
|
|
3123
|
+
|
|
3124
|
+
고객사에서 채번하는 주문 고유 번호로 매번 고유하게 채번되어야 합니다. (최대 64자)
|
|
3125
|
+
|
|
3126
|
+
- orderName: string
|
|
3127
|
+
|
|
3128
|
+
**주문명**
|
|
3129
|
+
|
|
3130
|
+
주문명으로 고객사에서 자유롭게 입력합니다. 갤럭시아머니트리의 경우 필수로 입력해야 합니다.
|
|
3131
|
+
|
|
3132
|
+
- channelKey: string
|
|
3133
|
+
|
|
3134
|
+
**채널 키**
|
|
3135
|
+
|
|
3136
|
+
포트원 콘솔 내 \[연동 관리] > \[연동 정보] > \[채널 관리] 화면에서 채널 추가 시 생성되는 값입니다. 결제 호출 시 채널을 지정할 때 사용됩니다.
|
|
3137
|
+
|
|
3138
|
+
- totalAmount: number
|
|
3139
|
+
|
|
3140
|
+
**결제 금액**
|
|
3141
|
+
|
|
3142
|
+
결제 금액으로 결제를 원하는 통화(currency)별 scale factor(소수점 몇번째 자리까지 유효한지)를 고려한 number 형식만 허용됩니다.
|
|
3143
|
+
|
|
3144
|
+
- currency: string
|
|
3145
|
+
|
|
3146
|
+
**결제 통화**
|
|
3147
|
+
|
|
3148
|
+
결제통화로 원화 결제 시 `KRW`로 입력해야 합니다. 갤럭시아머니트리의 경우 `KRW`만 지원됩니다.
|
|
3149
|
+
|
|
3150
|
+
- payMethod: string
|
|
3151
|
+
|
|
3152
|
+
**결제수단 구분코드**
|
|
3153
|
+
|
|
3154
|
+
결제 호출 시 결제수단을 지정할 때 사용됩니다.
|
|
3155
|
+
|
|
3156
|
+
- 신용카드 : `CARD`
|
|
3157
|
+
- 실시간 계좌이체 : `TRANSFER`
|
|
3158
|
+
- 가상계좌 : `VIRTUAL_ACCOUNT`
|
|
3159
|
+
- 휴대폰 소액결제 : `MOBILE`
|
|
3160
|
+
- 상품권 : `GIFT_CERTIFICATE`
|
|
3161
|
+
- 간편 결제 : `EASY_PAY`
|
|
3162
|
+
|
|
3163
|
+
- taxFreeAmount?: number
|
|
3164
|
+
|
|
3165
|
+
**면세 금액** (기본값: 0)
|
|
3166
|
+
|
|
3167
|
+
- vatAmount?: number
|
|
3168
|
+
|
|
3169
|
+
**부가세 금액**
|
|
3170
|
+
|
|
3171
|
+
미 입력시 과세 금액의 1/11로 자동 계산됩니다.
|
|
3172
|
+
|
|
3173
|
+
- customer: object
|
|
3174
|
+
|
|
3175
|
+
**고객 정보**
|
|
3176
|
+
|
|
3177
|
+
- customerId: string
|
|
3178
|
+
|
|
3179
|
+
**구매자 고유 ID**
|
|
3180
|
+
|
|
3181
|
+
고객사가 구매자를 특정하기 위해 채번한 고유 번호입니다. 갤럭시아머니트리의 경우 필수 입력이며 최대 20자까지 허용됩니다.
|
|
3182
|
+
|
|
3183
|
+
- fullName?: string
|
|
3184
|
+
|
|
3185
|
+
**구매자 전체 이름**
|
|
3186
|
+
|
|
3187
|
+
- firstName?: string
|
|
3188
|
+
|
|
3189
|
+
**구매자 이름**
|
|
3190
|
+
|
|
3191
|
+
- lastName?: string
|
|
3192
|
+
|
|
3193
|
+
**구매자 성**
|
|
3194
|
+
|
|
3195
|
+
- phoneNumber?: string
|
|
3196
|
+
|
|
3197
|
+
**구매자 연락처**
|
|
3198
|
+
|
|
3199
|
+
계좌이체 결제 시 필수 입력입니다.
|
|
3200
|
+
|
|
3201
|
+
- email?: string
|
|
3202
|
+
|
|
3203
|
+
**구매자 이메일**
|
|
3204
|
+
|
|
3205
|
+
- redirectUrl?: string
|
|
3206
|
+
|
|
3207
|
+
**모바일 환경에서 트랜잭션 종료 후 302 리디렉션 될 URL**
|
|
3208
|
+
|
|
3209
|
+
갤럭시아머니트리의 경우 **모바일 환경에서 필수 입력**입니다.
|
|
3210
|
+
|
|
3211
|
+
- noticeUrls?: string\[]
|
|
3212
|
+
|
|
3213
|
+
**트랜잭션 종료 후 웹훅이 발송 될 고객사 서버 URL**
|
|
3214
|
+
|
|
3215
|
+
설정시 콘솔에 설정된 웹훅 URL은 override 되며 해당 주소로만 웹훅이 발송됩니다.
|
|
3216
|
+
|
|
3217
|
+
- appScheme?: string
|
|
3218
|
+
|
|
3219
|
+
**IOS 앱에서 결제시 카드/은행 앱에서 인증 후 복귀 될 고객사 커스텀 앱 URL Scheme**
|
|
3220
|
+
|
|
3221
|
+
- 예: `portone://`
|
|
3222
|
+
- 주의: **IOS 앱 결제시 필수** 입력이며 **앱이 아닌 모바일 웹 결제시에는 입력하지 마세요.**
|
|
3223
|
+
|
|
3224
|
+
- isEscrow?: boolean
|
|
3225
|
+
|
|
3226
|
+
**에스크로 결제 여부** (기본값: false)
|
|
3227
|
+
|
|
3228
|
+
갤럭시아머니트리의 경우, 계좌이체/가상계좌 결제시 에스크로 결제가 허용됩니다.
|
|
3229
|
+
|
|
3230
|
+
- virtualAccount?: object
|
|
3231
|
+
|
|
3232
|
+
**가상계좌 결제 관련 설정**
|
|
3233
|
+
|
|
3234
|
+
- accountExpiry?: object
|
|
3235
|
+
|
|
3236
|
+
**입금 만료 기한**
|
|
3237
|
+
|
|
3238
|
+
갤럭시아머니트리의 경우 가상계좌 결제시 **필수 입력**입니다.
|
|
3239
|
+
|
|
3240
|
+
- validHours?: integer
|
|
3241
|
+
|
|
3242
|
+
**유효 시간**
|
|
3243
|
+
|
|
3244
|
+
- dueDate?: string
|
|
3245
|
+
|
|
3246
|
+
**만료 시점**
|
|
3247
|
+
|
|
3248
|
+
시간은 RFC 3339 date-time 형식으로 입력해야 합니다.
|
|
3249
|
+
|
|
3250
|
+
- card?: object
|
|
3251
|
+
|
|
3252
|
+
**카드 결제 관련 설정**
|
|
3253
|
+
|
|
3254
|
+
- cardCompany?: string
|
|
3255
|
+
|
|
3256
|
+
**카드사 다이렉트 호출 시 카드사 코드**
|
|
3257
|
+
|
|
3258
|
+
[카드사 코드](https://developers.portone.io/opi/ko/support/code-info/card-code) 참조
|
|
3259
|
+
|
|
3260
|
+
- installment?: object
|
|
3261
|
+
|
|
3262
|
+
**할부 설정**
|
|
3263
|
+
|
|
3264
|
+
- monthOption?: object
|
|
3265
|
+
|
|
3266
|
+
**할부 개월 수 옵션**
|
|
3267
|
+
|
|
3268
|
+
- fixedMonth?: number
|
|
3269
|
+
|
|
3270
|
+
**고정 할부 개월 수**
|
|
3271
|
+
|
|
3272
|
+
일시불일 시 0으로 설정합니다.
|
|
3273
|
+
|
|
3274
|
+
- availableMonthList?: number\[]
|
|
3275
|
+
|
|
3276
|
+
**선택 가능한 할부 개월 수 목록**
|
|
3277
|
+
|
|
3278
|
+
예시: `[0, 2, 3, 4, 5, 6]` - 일시불을 포함한 2, 3, 4, 5, 6개월까지 할부개월 선택 가능
|
|
3279
|
+
|
|
3280
|
+
- mobile?: object
|
|
3281
|
+
|
|
3282
|
+
**휴대폰 결제 관련 설정**
|
|
3283
|
+
|
|
3284
|
+
- carrier?: string
|
|
3285
|
+
|
|
3286
|
+
**휴대폰 통신사 코드**
|
|
3287
|
+
|
|
3288
|
+
`SKT`, `KT`, `LGU`, `HELLO`, `KCT`, `SK7`
|
|
3289
|
+
|
|
3290
|
+
- giftCertificate?: object
|
|
3291
|
+
|
|
3292
|
+
**상품권 결제 관련 설정**
|
|
3293
|
+
|
|
3294
|
+
- giftCertificateType?: string
|
|
3295
|
+
|
|
3296
|
+
**상품권 종류**
|
|
3297
|
+
|
|
3298
|
+
- 컬쳐랜드: `CULTURELAND`
|
|
3299
|
+
- 스마트문상: `SMART_MUNSANG`
|
|
3300
|
+
- 도서문화상품권: `BOOKNLIFE`
|
|
3301
|
+
- 해피머니: `HAPPYMONEY`
|
|
3302
|
+
|
|
3303
|
+
- easyPay?: object
|
|
3304
|
+
|
|
3305
|
+
**간편결제 관련 설정**
|
|
3306
|
+
|
|
3307
|
+
- easyPayProvider?: string
|
|
3308
|
+
|
|
3309
|
+
**간편결제사 코드**
|
|
3310
|
+
|
|
3311
|
+
- 카카오페이: `KAKAOPAY`
|
|
3312
|
+
- 네이버페이: `NAVERPAY`
|
|
3313
|
+
- 토스페이: `TOSSPAY`
|
|
3314
|
+
- 삼성페이: `SAMSUNGPAY`
|
|
3315
|
+
- 애플페이: `APPLEPAY`
|
|
3316
|
+
- 페이코: `PAYCO`
|
|
3317
|
+
- 머니트리: `MONEYTREE`
|
|
3318
|
+
|
|
3319
|
+
- bypass: object
|
|
3320
|
+
|
|
3321
|
+
**PG사 결제창 호출 시 PG사로 그대로 bypass할 파라미터들의 모음**
|
|
3322
|
+
|
|
3323
|
+
- galaxia: object
|
|
3324
|
+
|
|
3325
|
+
**갤럭시아머니트리 전용 파라미터**
|
|
3326
|
+
|
|
3327
|
+
- ITEM\_CODE: string
|
|
3328
|
+
|
|
3329
|
+
**구매 상품코드**
|
|
3330
|
+
|
|
3331
|
+
갤럭시아머니트리에서 발급받은 상품 코드를 입력합니다. (최대 10자, **필수**)
|
|
3332
|
+
|
|
3333
|
+
### 유의사항
|
|
3334
|
+
|
|
3335
|
+
<details>
|
|
3336
|
+
|
|
3337
|
+
<summary>갤럭시아머니트리 지원 결제 수단</summary>
|
|
3338
|
+
|
|
3339
|
+
- CARD (신용카드)
|
|
3340
|
+
|
|
3341
|
+
- TRANSFER (실시간 계좌이체) + 에스크로
|
|
3342
|
+
|
|
3343
|
+
- VIRTUAL\_ACCOUNT (가상계좌) + 에스크로
|
|
3344
|
+
|
|
3345
|
+
- MOBILE (휴대폰소액결제)
|
|
3346
|
+
|
|
3347
|
+
- GIFT\_CERTIFICATE (상품권)
|
|
3348
|
+
- CULTURELAND (컬쳐랜드)
|
|
3349
|
+
- SMART\_MUNSANG (스마트문상)
|
|
3350
|
+
- BOOKNLIFE (도서문화상품권)
|
|
3351
|
+
- HAPPYMONEY (해피머니)
|
|
3352
|
+
|
|
3353
|
+
- EASY\_PAY (간편결제)
|
|
3354
|
+
- KAKAOPAY (카카오페이)
|
|
3355
|
+
- NAVERPAY (네이버페이)
|
|
3356
|
+
- TOSSPAY (토스페이)
|
|
3357
|
+
- SAMSUNGPAY (삼성페이)
|
|
3358
|
+
- APPLEPAY (애플페이)
|
|
3359
|
+
- PAYCO (페이코)
|
|
3360
|
+
- MONEYTREE (머니트리)
|
|
3361
|
+
|
|
3362
|
+
</details>
|
|
3363
|
+
|
|
3364
|
+
<details>
|
|
3365
|
+
|
|
3366
|
+
<summary>가능한 트랜잭션 환경</summary>
|
|
3367
|
+
|
|
3368
|
+
- PC (iframe)
|
|
3369
|
+
- 모바일 (리디렉션)
|
|
3370
|
+
|
|
3371
|
+
</details>
|
|
3372
|
+
|
|
3373
|
+
## SDK 빌링키 발급 요청하기
|
|
3374
|
+
|
|
3375
|
+
빌링키 발급 요청 시에는 `requestIssueBillingKey` 함수를 호출해야 합니다.
|
|
3376
|
+
`channelKey` 파라미터에 결제 채널 연동 후 생성된 채널 키값을 지정하여 갤럭시아머니트리 채널 사용을 명시해주세요.
|
|
3377
|
+
|
|
3378
|
+
갤럭시아머니트리 기준으로 작성한 예시 코드는 아래와 같습니다.
|
|
3379
|
+
|
|
3380
|
+
<div class="tabs-container">
|
|
3381
|
+
|
|
3382
|
+
<div class="tabs-content" data-title="SDK 빌링키 발급 요청">
|
|
3383
|
+
|
|
3384
|
+
```javascript
|
|
3385
|
+
import * as PortOne from "@portone/browser-sdk/v2";
|
|
3386
|
+
function requestIssueBillingKey() {
|
|
3387
|
+
PortOne.requestIssueBillingKey({
|
|
3388
|
+
storeId: "store-4ff4af41-85e3-4559-8eb8-0d08a2c6ceec", // 고객사 storeId로 변경해주세요.
|
|
3389
|
+
channelKey: "channel-key-3b37819a-1c72-4deb-a245-8c810af5403d", // 콘솔 결제 연동 화면에서 채널 연동 시 생성된 채널 키를 입력해주세요.
|
|
3390
|
+
billingKeyMethod: "CARD", // 갤럭시아머니트리의 경우 'CARD'만 지원됩니다.
|
|
3391
|
+
issueId: "test-issueId",
|
|
3392
|
+
issueName: "빌링키 발급",
|
|
3393
|
+
displayAmount: 1000,
|
|
3394
|
+
currency: "KRW",
|
|
3395
|
+
customer: {
|
|
3396
|
+
customerId: "customer-1234", // 고객사가 구매자에게 부여한 고유 ID (필수)
|
|
3397
|
+
fullName: "포트원",
|
|
3398
|
+
phoneNumber: "010-0000-1234",
|
|
3399
|
+
email: "test@portone.io",
|
|
3400
|
+
},
|
|
3401
|
+
bypass: {
|
|
3402
|
+
galaxia: {
|
|
3403
|
+
ITEM_CODE: "상품코드", // 필수, 최대 10바이트
|
|
3404
|
+
},
|
|
3405
|
+
},
|
|
3406
|
+
});
|
|
3407
|
+
}
|
|
3408
|
+
```
|
|
3409
|
+
|
|
3410
|
+
</div>
|
|
3411
|
+
|
|
3412
|
+
</div>
|
|
3413
|
+
|
|
3414
|
+
### 주요 파라미터
|
|
3415
|
+
|
|
3416
|
+
- storeId: string
|
|
3417
|
+
|
|
3418
|
+
**상점 아이디**
|
|
3419
|
+
|
|
3420
|
+
포트원 계정에 생성된 상점을 식별하는 고유한 값으로 관리자 콘솔에서 확인할 수 있습니다.
|
|
3421
|
+
|
|
3422
|
+
- channelKey: string
|
|
3423
|
+
|
|
3424
|
+
**채널 키**
|
|
3425
|
+
|
|
3426
|
+
포트원 콘솔 내 \[연동 관리] > \[연동 정보] > \[채널 관리] 화면에서 채널 추가 시 생성되는 값입니다. 결제 호출 시 채널을 지정할 때 사용됩니다.
|
|
3427
|
+
|
|
3428
|
+
- billingKeyMethod: string
|
|
3429
|
+
|
|
3430
|
+
**빌링키 발급수단**
|
|
3431
|
+
|
|
3432
|
+
갤럭시아머니트리는 빌링키 발급 수단으로 카드만을 지원하므로 해당 파라미터는 `CARD`로 고정해야 합니다.
|
|
3433
|
+
|
|
3434
|
+
- issueId: string
|
|
3435
|
+
|
|
3436
|
+
**빌링키 발급 건 고유 ID**
|
|
3437
|
+
|
|
3438
|
+
고객사에서 채번하여 사용해야 합니다.
|
|
3439
|
+
|
|
3440
|
+
- issueName: string
|
|
3441
|
+
|
|
3442
|
+
**빌링키 발급 시 결제창에 표시되는 제목**
|
|
3443
|
+
|
|
3444
|
+
갤럭시아머니트리의 경우 필수로 입력해야 합니다.
|
|
3445
|
+
|
|
3446
|
+
- displayAmount?: number
|
|
3447
|
+
|
|
3448
|
+
**결제창에 표시될 금액**
|
|
3449
|
+
|
|
3450
|
+
빌링키 발급 시 amount가 0이거나 미입력시 1000원으로 노출됩니다. (결제 발생하지 않음)
|
|
3451
|
+
|
|
3452
|
+
- currency?: string
|
|
3453
|
+
|
|
3454
|
+
**결제 통화**
|
|
3455
|
+
|
|
3456
|
+
갤럭시아머니트리의 경우 `KRW`만 지원됩니다.
|
|
3457
|
+
|
|
3458
|
+
- customer: object
|
|
3459
|
+
|
|
3460
|
+
**고객 정보**
|
|
3461
|
+
|
|
3462
|
+
- customerId: string
|
|
3463
|
+
|
|
3464
|
+
**구매자 고유 ID**
|
|
3465
|
+
|
|
3466
|
+
고객사가 구매자를 특정하기 위해 채번한 고유 번호입니다. 갤럭시아머니트리의 경우 필수 입력입니다.
|
|
3467
|
+
|
|
3468
|
+
- fullName?: string
|
|
3469
|
+
|
|
3470
|
+
**구매자 전체 이름**
|
|
3471
|
+
|
|
3472
|
+
- firstName?: string
|
|
3473
|
+
|
|
3474
|
+
**구매자 이름**
|
|
3475
|
+
|
|
3476
|
+
- lastName?: string
|
|
3477
|
+
|
|
3478
|
+
**구매자 성**
|
|
3479
|
+
|
|
3480
|
+
- phoneNumber?: string
|
|
3481
|
+
|
|
3482
|
+
**구매자 연락처**
|
|
3483
|
+
|
|
3484
|
+
- email?: string
|
|
3485
|
+
|
|
3486
|
+
**구매자 이메일**
|
|
3487
|
+
|
|
3488
|
+
- redirectUrl?: string
|
|
3489
|
+
|
|
3490
|
+
**모바일 환경에서 트랜잭션 종료 후 302 리디렉션 될 URL**
|
|
3491
|
+
|
|
3492
|
+
갤럭시아머니트리의 경우 **모바일 환경에서 필수 입력**입니다.
|
|
3493
|
+
|
|
3494
|
+
- bypass: object
|
|
3495
|
+
|
|
3496
|
+
**PG사 결제창 호출 시 PG사로 그대로 bypass할 파라미터들의 모음**
|
|
3497
|
+
|
|
3498
|
+
- galaxia: object
|
|
3499
|
+
|
|
3500
|
+
**갤럭시아머니트리 전용 파라미터**
|
|
3501
|
+
|
|
3502
|
+
- ITEM\_CODE: string
|
|
3503
|
+
|
|
3504
|
+
**구매 상품코드**
|
|
3505
|
+
|
|
3506
|
+
고객사에서 내부적으로 관리하는 상품 코드를 입력합니다. (최대 10자, **필수**)
|
|
3507
|
+
|
|
3508
|
+
<details>
|
|
3509
|
+
|
|
3510
|
+
<summary>갤럭시아머니트리 지원 빌링키 발급 수단</summary>
|
|
3511
|
+
|
|
3512
|
+
- CARD (카드)
|
|
3513
|
+
|
|
3514
|
+
</details>
|
|
3515
|
+
|
|
3516
|
+
## SDK 빌링키 발급 및 결제 요청하기
|
|
3517
|
+
|
|
3518
|
+
빌링키 발급과 동시에 결제 요청 시에는 `requestIssueBillingKeyAndPay` 함수를 호출해야 합니다.
|
|
3519
|
+
`channelKey` 파라미터에 결제 채널 연동 후 생성된 채널 키값을 지정하여 갤럭시아머니트리 채널 사용을 명시해주세요.
|
|
3520
|
+
|
|
3521
|
+
갤럭시아머니트리 기준으로 작성한 예시 코드는 아래와 같습니다.
|
|
3522
|
+
|
|
3523
|
+
<div class="tabs-container">
|
|
3524
|
+
|
|
3525
|
+
<div class="tabs-content" data-title="SDK 빌링키 발급 및 결제 요청">
|
|
3526
|
+
|
|
3527
|
+
```javascript
|
|
3528
|
+
import * as PortOne from "@portone/browser-sdk/v2";
|
|
3529
|
+
function requestIssueBillingKeyAndPay() {
|
|
3530
|
+
PortOne.requestIssueBillingKeyAndPay({
|
|
3531
|
+
storeId: "store-4ff4af41-85e3-4559-8eb8-0d08a2c6ceec", // 고객사 storeId로 변경해주세요.
|
|
3532
|
+
channelKey: "channel-key-3b37819a-1c72-4deb-a245-8c810af5403d", // 콘솔 결제 연동 화면에서 채널 연동 시 생성된 채널 키를 입력해주세요.
|
|
3533
|
+
billingKeyAndPayMethod: "MOBILE", // 갤럭시아머니트리의 경우 'MOBILE'만 지원됩니다.
|
|
3534
|
+
paymentId: `payment${crypto.randomUUID()}`,
|
|
3535
|
+
orderName: "월간 이용권 정기결제",
|
|
3536
|
+
totalAmount: 1000, // 전달한 금액 만큼 실제로 승인이 됩니다.
|
|
3537
|
+
currency: "KRW",
|
|
3538
|
+
customer: {
|
|
3539
|
+
customerId: "customer-1234", // 고객사가 구매자에게 부여한 고유 ID (필수)
|
|
3540
|
+
fullName: "포트원",
|
|
3541
|
+
phoneNumber: "010-0000-1234",
|
|
3542
|
+
email: "test@portone.io",
|
|
3543
|
+
},
|
|
3544
|
+
bypass: {
|
|
3545
|
+
galaxia: {
|
|
3546
|
+
ITEM_CODE: "상품코드", // 필수, 최대 10바이트
|
|
3547
|
+
},
|
|
3548
|
+
},
|
|
3549
|
+
});
|
|
3550
|
+
}
|
|
3551
|
+
```
|
|
3552
|
+
|
|
3553
|
+
</div>
|
|
3554
|
+
|
|
3555
|
+
</div>
|
|
3556
|
+
|
|
3557
|
+
### 주요 파라미터
|
|
3558
|
+
|
|
3559
|
+
- storeId: string
|
|
3560
|
+
|
|
3561
|
+
**상점 아이디**
|
|
3562
|
+
|
|
3563
|
+
포트원 계정에 생성된 상점을 식별하는 고유한 값으로 관리자 콘솔에서 확인할 수 있습니다.
|
|
3564
|
+
|
|
3565
|
+
- channelKey: string
|
|
3566
|
+
|
|
3567
|
+
**채널 키**
|
|
3568
|
+
|
|
3569
|
+
포트원 콘솔 내 \[연동 관리] > \[연동 정보] > \[채널 관리] 화면에서 채널 추가 시 생성되는 값입니다. 결제 호출 시 채널을 지정할 때 사용됩니다.
|
|
3570
|
+
|
|
3571
|
+
- billingKeyAndPayMethod: string
|
|
3572
|
+
|
|
3573
|
+
**빌링키 발급 및 결제수단**
|
|
3574
|
+
|
|
3575
|
+
갤럭시아머니트리의 경우, 빌링키 발급과 동시에 결제 수단은 `MOBILE`만 허용되며 **반드시 `MOBILE`을 필수로 입력해주셔야** 합니다.
|
|
3576
|
+
|
|
3577
|
+
- paymentId: string
|
|
3578
|
+
|
|
3579
|
+
**주문 번호**
|
|
3580
|
+
|
|
3581
|
+
매번 고유하게 채번되어야 합니다.
|
|
3582
|
+
|
|
3583
|
+
- orderName: string
|
|
3584
|
+
|
|
3585
|
+
**주문명**
|
|
3586
|
+
|
|
3587
|
+
갤럭시아머니트리의 경우 필수로 입력해야 합니다.
|
|
3588
|
+
|
|
3589
|
+
- totalAmount: number
|
|
3590
|
+
|
|
3591
|
+
**결제 금액**
|
|
3592
|
+
|
|
3593
|
+
**string** 이 아닌 점에 유의하세요. 전달한 금액 만큼 실제로 승인이 됩니다.
|
|
3594
|
+
|
|
3595
|
+
- currency?: string
|
|
3596
|
+
|
|
3597
|
+
**결제 통화**
|
|
3598
|
+
|
|
3599
|
+
갤럭시아머니트리의 경우 `KRW`만 지원됩니다.
|
|
3600
|
+
|
|
3601
|
+
- customer: object
|
|
3602
|
+
|
|
3603
|
+
**고객 정보**
|
|
3604
|
+
|
|
3605
|
+
- customerId: string
|
|
3606
|
+
|
|
3607
|
+
**구매자 고유 ID**
|
|
3608
|
+
|
|
3609
|
+
고객사가 구매자를 특정하기 위해 채번한 고유 번호입니다. 갤럭시아머니트리의 경우 필수 입력이며 최대 20자까지 허용됩니다.
|
|
3610
|
+
|
|
3611
|
+
- fullName?: string
|
|
3612
|
+
|
|
3613
|
+
**구매자 전체 이름**
|
|
3614
|
+
|
|
3615
|
+
- firstName?: string
|
|
3616
|
+
|
|
3617
|
+
**구매자 이름**
|
|
3618
|
+
|
|
3619
|
+
- lastName?: string
|
|
3620
|
+
|
|
3621
|
+
**구매자 성**
|
|
3622
|
+
|
|
3623
|
+
- phoneNumber?: string
|
|
3624
|
+
|
|
3625
|
+
**구매자 연락처**
|
|
3626
|
+
|
|
3627
|
+
- email?: string
|
|
3628
|
+
|
|
3629
|
+
**구매자 이메일**
|
|
3630
|
+
|
|
3631
|
+
- redirectUrl?: string
|
|
3632
|
+
|
|
3633
|
+
**모바일 환경에서 트랜잭션 종료 후 302 리디렉션 될 URL**
|
|
3634
|
+
|
|
3635
|
+
갤럭시아머니트리의 경우 **모바일 환경에서 필수 입력**입니다.
|
|
3636
|
+
|
|
3637
|
+
- mobile?: object
|
|
3638
|
+
|
|
3639
|
+
**휴대폰 결제 관련 설정**
|
|
3640
|
+
|
|
3641
|
+
- carrier?: string
|
|
3642
|
+
|
|
3643
|
+
**휴대폰 통신사 코드**
|
|
3644
|
+
|
|
3645
|
+
`SKT`, `KT`, `LGU`, `HELLO`, `KCT`, `SK7`
|
|
3646
|
+
|
|
3647
|
+
- bypass: object
|
|
3648
|
+
|
|
3649
|
+
**PG사 결제창 호출 시 PG사로 그대로 bypass할 파라미터들의 모음**
|
|
3650
|
+
|
|
3651
|
+
- galaxia: object
|
|
3652
|
+
|
|
3653
|
+
**갤럭시아머니트리 전용 파라미터**
|
|
3654
|
+
|
|
3655
|
+
- ITEM\_CODE: string
|
|
3656
|
+
|
|
3657
|
+
**구매 상품코드**
|
|
3658
|
+
|
|
3659
|
+
갤럭시아머니트리에서 발급받은 상품 코드를 입력합니다. (최대 10자, **필수**)
|
|
3660
|
+
|
|
3661
|
+
<details>
|
|
3662
|
+
|
|
3663
|
+
<summary>갤럭시아머니트리 지원 빌링키 발급과 동시에 결제 수단</summary>
|
|
3664
|
+
|
|
3665
|
+
- MOBILE (휴대폰소액결제)
|
|
3666
|
+
|
|
3667
|
+
</details>
|
|
3668
|
+
|
|
3669
|
+
## 연동 유의사항
|
|
3670
|
+
|
|
3671
|
+
### 갤럭시아머니트리 필수 파라미터
|
|
3672
|
+
|
|
3673
|
+
갤럭시아머니트리 연동 시 아래 파라미터는 필수로 입력해야 합니다.
|
|
3674
|
+
|
|
3675
|
+
- `bypass.galaxia.ITEM_CODE`: 고객사에서 내부적으로 관리하는 상품 코드 (최대 10자)
|
|
3676
|
+
- `customer.customerId`: 고객사가 구매자에게 부여한 고유 ID (최대 20자)
|
|
3677
|
+
- `orderName`: 주문명
|
|
3678
|
+
|
|
3679
|
+
### 모바일 결제 시 필수 파라미터
|
|
3680
|
+
|
|
3681
|
+
모바일 환경에서 결제 시 `redirectUrl` 파라미터를 필수로 입력해야 합니다.
|
|
3682
|
+
|
|
3683
|
+
### 가상계좌 결제 시 필수 파라미터
|
|
3684
|
+
|
|
3685
|
+
가상계좌 결제 시 `virtualAccount.accountExpiry` 파라미터를 필수로 입력해야 합니다.
|
|
3686
|
+
|
|
3687
|
+
### 빌링키 발급 제약사항
|
|
3688
|
+
|
|
3689
|
+
- **결제창 빌링키 발급**: 카드(`CARD`)만 지원
|
|
3690
|
+
- **결제창 빌링키 발급과 동시에 결제**: 휴대폰(`MOBILE`)만 지원
|
|
3691
|
+
|
|
3692
|
+
### 지원 통화
|
|
3693
|
+
|
|
3694
|
+
갤럭시아머니트리는 `KRW`만 지원합니다.
|
|
3695
|
+
|
|
3696
|
+
|
|
2406
3697
|
# https://developers.portone.io/opi/ko/integration/pg/v2/inicis-jp
|
|
2407
3698
|
|
|
2408
3699
|
---
|
|
@@ -2555,13 +3846,13 @@ function requestPayment() {
|
|
|
2555
3846
|
|
|
2556
3847
|
- validHours?: integer
|
|
2557
3848
|
|
|
2558
|
-
|
|
3849
|
+
**유효 시간**
|
|
2559
3850
|
|
|
2560
3851
|
- dueDate?: string
|
|
2561
3852
|
|
|
2562
|
-
|
|
3853
|
+
**만료 시점**
|
|
2563
3854
|
|
|
2564
|
-
|
|
3855
|
+
시간은 ISO8601 형식으로 입력해야 합니다.
|
|
2565
3856
|
|
|
2566
3857
|
- easyPay?: object
|
|
2567
3858
|
|
|
@@ -2579,7 +3870,7 @@ function requestPayment() {
|
|
|
2579
3870
|
|
|
2580
3871
|
**구매자 ID**
|
|
2581
3872
|
|
|
2582
|
-
CBT 유형이 SBPS인 경우 필수
|
|
3873
|
+
CBT 유형이 SBPS인 경우 필수 입력이며 최대 30자로 설정해야합니다.
|
|
2583
3874
|
|
|
2584
3875
|
- fullName?: string
|
|
2585
3876
|
|
|
@@ -2701,21 +3992,9 @@ function requestPayment() {
|
|
|
2701
3992
|
|
|
2702
3993
|
<details>
|
|
2703
3994
|
|
|
2704
|
-
<summary>`
|
|
2705
|
-
|
|
2706
|
-
이니시스 일본결제의 경우 PC, 모바일 환경을 구분하지 않고 항상 리디렉션 방식으로 결제창이 동작합니다. 따라서 `redirectUrl` 는 항상 입력해야 합니다.
|
|
2707
|
-
|
|
2708
|
-
</details>
|
|
2709
|
-
|
|
2710
|
-
<details>
|
|
2711
|
-
|
|
2712
|
-
<summary>`paymentId` 에는 ASCII 문자만 허용됩니다.</summary>
|
|
2713
|
-
|
|
2714
|
-
`paymentId` 에는 ASCII 문자만으로 이루어진 문자열만 입력할 수 있습니다.
|
|
3995
|
+
<summary>`paymentId` 에는 알파벳 대소문자, 숫자 및 일부 특수문자만 허용됩니다.</summary>
|
|
2715
3996
|
|
|
2716
|
-
|
|
2717
|
-
|
|
2718
|
-
입력 가능한 ASCII 문자의 종류는 [링크](http://www.ascii-code.com/) → `ASCII printable characters` 섹션을 참고하세요.
|
|
3997
|
+
지원되지 않는 언어(ex. 한글) 및 특수문자(ex. `()`) 사용 시 결제가 실패할 수 있습니다.
|
|
2719
3998
|
|
|
2720
3999
|
</details>
|
|
2721
4000
|
|
|
@@ -2825,10 +4104,6 @@ versionVariants:
|
|
|
2825
4104
|
|
|
2826
4105
|
- [결제대행사 채널 설정하기](https://developers.portone.io/opi/ko/integration/ready/readme#3-결제대행사-채널-설정하기) 페이지의 내용을 참고하여 채널 설정을 진행합니다.
|
|
2827
4106
|
|
|
2828
|
-
## 사전 계약 안내
|
|
2829
|
-
|
|
2830
|
-
SMS를 통한 본인인증을 진행하기 위해서는 KG이니시스와 별도 계약이 필요합니다.
|
|
2831
|
-
|
|
2832
4107
|
## SDK를 통해 본인인증하기
|
|
2833
4108
|
|
|
2834
4109
|
- [본인인증 연동하기](https://developers.portone.io/opi/ko/extra/identity-verification/readme-v2) 페이지의 내용을 참고하여 연동을 진행합니다.
|
|
@@ -3359,7 +4634,7 @@ KG이니시스의 경우 아래 간편결제사를 지원합니다. `easyPay.eas
|
|
|
3359
4634
|
|
|
3360
4635
|
- 카카오페이: `KAKAOPAY`
|
|
3361
4636
|
- 네이버페이: `NAVERPAY`
|
|
3362
|
-
- 삼성페이: `
|
|
4637
|
+
- 삼성페이: `SAMSUNGPAY`
|
|
3363
4638
|
- ssg페이: `SSGPAY`
|
|
3364
4639
|
- 애플페이: `APPLEPAY`
|
|
3365
4640
|
- lpay: `LPAY`
|
|
@@ -3931,7 +5206,7 @@ const issueResponse = await axios({
|
|
|
3931
5206
|
**발급 은행**
|
|
3932
5207
|
|
|
3933
5208
|
- 은행코드는 ENUM으로 정의되어 있습니다.
|
|
3934
|
-
- [BANK ENUM 바로가기](https://developers.portone.io/api/rest-v2/
|
|
5209
|
+
- [BANK ENUM 바로가기](https://developers.portone.io/api/rest-v2/payment#Bank)
|
|
3935
5210
|
|
|
3936
5211
|
- expiry: object
|
|
3937
5212
|
|
|
@@ -4920,7 +6195,7 @@ await axios({
|
|
|
4920
6195
|
|
|
4921
6196
|
### `identityVerificationId` 파라미터 유의사항
|
|
4922
6197
|
|
|
4923
|
-
영어 대소문자와 숫자만 사용 가능하며
|
|
6198
|
+
영어 대소문자와 숫자만 사용 가능하며 40자 이하로 입력해야 합니다.
|
|
4924
6199
|
|
|
4925
6200
|
|
|
4926
6201
|
# https://developers.portone.io/opi/ko/integration/pg/v2/kcp-v2
|
|
@@ -5167,7 +6442,7 @@ function requestPayment() {
|
|
|
5167
6442
|
{
|
|
5168
6443
|
"bypass": {
|
|
5169
6444
|
"kcp_v2": {
|
|
5170
|
-
"site_logo": "https://portone.io/assets/portone.jpg",
|
|
6445
|
+
"site_logo": "https://developers.portone.io/assets/portone.jpg",
|
|
5171
6446
|
"skin_indx": 6,
|
|
5172
6447
|
"shop_user_id": "user_id1",
|
|
5173
6448
|
"site_name": "포트원 고객사"
|
|
@@ -5704,7 +6979,7 @@ const issueResponse = await axios({
|
|
|
5704
6979
|
**발급 은행**
|
|
5705
6980
|
|
|
5706
6981
|
- 은행코드는 ENUM으로 정의되어 있습니다.
|
|
5707
|
-
- [BANK ENUM 바로가기](https://developers.portone.io/api/rest-v2/
|
|
6982
|
+
- [BANK ENUM 바로가기](https://developers.portone.io/api/rest-v2/payment#Bank)
|
|
5708
6983
|
|
|
5709
6984
|
- expiry: object
|
|
5710
6985
|
|
|
@@ -6202,6 +7477,326 @@ const response = await axios({
|
|
|
6202
7477
|
**결제 예정 시점**
|
|
6203
7478
|
|
|
6204
7479
|
|
|
7480
|
+
# https://developers.portone.io/opi/ko/integration/pg/v2/kicc-v2
|
|
7481
|
+
|
|
7482
|
+
---
|
|
7483
|
+
title: 이지페이(KICC) 해외결제
|
|
7484
|
+
description: 이지페이(KICC) 해외결제 연동 방법을 안내합니다.
|
|
7485
|
+
targetVersions:
|
|
7486
|
+
- v2
|
|
7487
|
+
---
|
|
7488
|
+
|
|
7489
|
+
## 채널 설정하기
|
|
7490
|
+
|
|
7491
|
+
- [결제대행사 채널 설정하기](https://developers.portone.io/opi/ko/integration/ready/readme#3-결제대행사-채널-설정하기)의 내용을 참고하여 PG 설정을 진행합니다.
|
|
7492
|
+
|
|
7493
|
+
## 가능한 결제 수단
|
|
7494
|
+
|
|
7495
|
+
- **결제창 일반 결제**
|
|
7496
|
+
|
|
7497
|
+
KICC 해외결제를 통해 위챗페이와 알리페이 플러스를 이용할 수 있습니다.
|
|
7498
|
+
이용하고자 하는 결제사 별 파라미터는 아래를 참고해주세요.
|
|
7499
|
+
|
|
7500
|
+
## SDK 결제 요청하기
|
|
7501
|
+
|
|
7502
|
+
결제 요청 시에는 `requestPayment` 함수를 호출해야 합니다.
|
|
7503
|
+
`channelKey` 파라미터에 결제 채널 연동 후 생성된 채널 키값을 지정하여 KICC 채널 사용을 명시해주세요.
|
|
7504
|
+
|
|
7505
|
+
KICC 기준으로 작성한 예시 코드는 아래와 같습니다.
|
|
7506
|
+
|
|
7507
|
+
<div class="tabs-container">
|
|
7508
|
+
|
|
7509
|
+
<div class="tabs-content" data-title="위챗페이">
|
|
7510
|
+
|
|
7511
|
+
```javascript
|
|
7512
|
+
import * as PortOne from "@portone/browser-sdk/v2";
|
|
7513
|
+
function requestPayment() {
|
|
7514
|
+
PortOne.requestPayment({
|
|
7515
|
+
storeId: "store-4ff4af41-85e3-4559-8eb8-0d08a2c6ceec", // 고객사 storeId로 변경해주세요.
|
|
7516
|
+
channelKey: "channel-key-9987cb87-6458-4888-b94e-68d9a2da896d", // 콘솔 결제 연동 화면에서 채널 연동 시 생성된 채널 키를 입력해주세요.
|
|
7517
|
+
paymentId: `payment${crypto.randomUUID()}`,
|
|
7518
|
+
orderName: "PortOne Purchase",
|
|
7519
|
+
totalAmount: 100, // 1 USD
|
|
7520
|
+
currency: "USD",
|
|
7521
|
+
payMethod: "EASY_PAY",
|
|
7522
|
+
easyPay: {
|
|
7523
|
+
easyPayProvider: "WECHAT",
|
|
7524
|
+
},
|
|
7525
|
+
locale: "KO_KR",
|
|
7526
|
+
customer: {
|
|
7527
|
+
fullName: "PortOne",
|
|
7528
|
+
email: "test@example.com",
|
|
7529
|
+
},
|
|
7530
|
+
});
|
|
7531
|
+
}
|
|
7532
|
+
```
|
|
7533
|
+
|
|
7534
|
+
**주요 파라미터 설명**
|
|
7535
|
+
|
|
7536
|
+
- storeId: string
|
|
7537
|
+
|
|
7538
|
+
**스토어 아이디**
|
|
7539
|
+
|
|
7540
|
+
포트원 계정에 생성된 상점을 식별하는 고유한 값으로 관리자 콘솔에서 확인할 수 있습니다.
|
|
7541
|
+
|
|
7542
|
+
- paymentId: string
|
|
7543
|
+
|
|
7544
|
+
**고객사 주문 고유 번호**
|
|
7545
|
+
|
|
7546
|
+
- 고객사가 채번하는 주문 고유 번호입니다.
|
|
7547
|
+
- 이미 승인 완료 된 `paymentId`로 결제를 시도하는 경우 에러가 발생합니다.
|
|
7548
|
+
|
|
7549
|
+
- orderName: string
|
|
7550
|
+
|
|
7551
|
+
**주문명**
|
|
7552
|
+
|
|
7553
|
+
주문명으로 고객사에서 자유롭게 입력합니다.
|
|
7554
|
+
|
|
7555
|
+
KICC와 위챗페이에서는 영문만 사용하는 것을 권장합니다.
|
|
7556
|
+
|
|
7557
|
+
- channelKey: string
|
|
7558
|
+
|
|
7559
|
+
**채널 키**
|
|
7560
|
+
|
|
7561
|
+
콘솔에서 채널 연동 시 생성된 채널 키입니다.
|
|
7562
|
+
|
|
7563
|
+
- totalAmount: number
|
|
7564
|
+
|
|
7565
|
+
**결제 금액**
|
|
7566
|
+
|
|
7567
|
+
결제 금액(실제 결제 금액 X 10^ 해당 currency의 scale factor, 예: $1.50 -> 150)
|
|
7568
|
+
|
|
7569
|
+
- currency: string
|
|
7570
|
+
|
|
7571
|
+
**결제 통화 코드**
|
|
7572
|
+
|
|
7573
|
+
[ISO 4217](https://en.wikipedia.org/wiki/ISO_4217) 통화 코드
|
|
7574
|
+
|
|
7575
|
+
- `KRW`: 한국 원
|
|
7576
|
+
- `USD`: 미국 달러
|
|
7577
|
+
|
|
7578
|
+
- locale?: Locale
|
|
7579
|
+
|
|
7580
|
+
**결제창 언어**
|
|
7581
|
+
|
|
7582
|
+
- `ZH_CN`: 중국어 (중국 본토) (기본값)
|
|
7583
|
+
- `KO_KR`: 한국어
|
|
7584
|
+
- `EN_US`: 영어
|
|
7585
|
+
- `ZH_TW`: 중국어 (대만)
|
|
7586
|
+
|
|
7587
|
+
- customer?: object
|
|
7588
|
+
|
|
7589
|
+
**고객 정보**
|
|
7590
|
+
|
|
7591
|
+
- fullName?: string
|
|
7592
|
+
|
|
7593
|
+
**구매자 전체 이름**
|
|
7594
|
+
|
|
7595
|
+
`fullName`과 `firstName` / `lastName`이 모두 입력된 경우 `fullName`으로 기록됩니다.
|
|
7596
|
+
|
|
7597
|
+
- firstName?: string
|
|
7598
|
+
|
|
7599
|
+
**구매자 이름**
|
|
7600
|
+
|
|
7601
|
+
`firstName`을 입력하는 경우 `lastName`도 필수로 입력해야 합니다. `fullName`이 없고,
|
|
7602
|
+
`firstName`과 `lastName`이 존재하는 경우 `{firstName} {lastName}`으로 저장됩니다.
|
|
7603
|
+
|
|
7604
|
+
- lastName?: string
|
|
7605
|
+
|
|
7606
|
+
**구매자 성**
|
|
7607
|
+
|
|
7608
|
+
`lastName`을 입력하는 경우 `firstName`도 필수로 입력해야 합니다.
|
|
7609
|
+
|
|
7610
|
+
- phoneNumber?: string
|
|
7611
|
+
|
|
7612
|
+
**구매자 연락처**
|
|
7613
|
+
|
|
7614
|
+
- email?: string
|
|
7615
|
+
|
|
7616
|
+
**구매자 이메일 주소**
|
|
7617
|
+
|
|
7618
|
+
</div>
|
|
7619
|
+
|
|
7620
|
+
<div class="tabs-content" data-title="알리페이 플러스">
|
|
7621
|
+
|
|
7622
|
+
```javascript
|
|
7623
|
+
import * as PortOne from "@portone/browser-sdk/v2";
|
|
7624
|
+
function requestPayment() {
|
|
7625
|
+
PortOne.requestPayment({
|
|
7626
|
+
storeId: "store-4ff4af41-85e3-4559-8eb8-0d08a2c6ceec", // 고객사 storeId로 변경해주세요.
|
|
7627
|
+
channelKey: "channel-key-9987cb87-6458-4888-b94e-68d9a2da896d", // 콘솔 결제 연동 화면에서 채널 연동 시 생성된 채널 키를 입력해주세요.
|
|
7628
|
+
paymentId: `payment${crypto.randomUUID()}`,
|
|
7629
|
+
orderName: "PortOne Purchase",
|
|
7630
|
+
orderDescription: "Description for Order",
|
|
7631
|
+
totalAmount: 100, // 1 USD
|
|
7632
|
+
currency: "USD",
|
|
7633
|
+
payMethod: "ALIPAY_PLUS",
|
|
7634
|
+
alipayPlus: {
|
|
7635
|
+
easyPayProvider: "ALIPAY",
|
|
7636
|
+
},
|
|
7637
|
+
customer: {
|
|
7638
|
+
fullName: "PortOne",
|
|
7639
|
+
email: "test@example.com",
|
|
7640
|
+
},
|
|
7641
|
+
});
|
|
7642
|
+
}
|
|
7643
|
+
```
|
|
7644
|
+
|
|
7645
|
+
**주요 파라미터 설명**
|
|
7646
|
+
|
|
7647
|
+
- storeId: string
|
|
7648
|
+
|
|
7649
|
+
**스토어 아이디**
|
|
7650
|
+
|
|
7651
|
+
포트원 계정에 생성된 상점을 식별하는 고유한 값으로 관리자 콘솔에서 확인할 수 있습니다.
|
|
7652
|
+
|
|
7653
|
+
- paymentId: string
|
|
7654
|
+
|
|
7655
|
+
**고객사 주문 고유 번호**
|
|
7656
|
+
|
|
7657
|
+
- 고객사가 채번하는 주문 고유 번호입니다.
|
|
7658
|
+
- 이미 승인 완료 된 `paymentId`로 결제를 시도하는 경우 에러가 발생합니다.
|
|
7659
|
+
|
|
7660
|
+
- orderName: string
|
|
7661
|
+
|
|
7662
|
+
**주문명**
|
|
7663
|
+
|
|
7664
|
+
주문명으로 고객사에서 자유롭게 입력합니다.
|
|
7665
|
+
|
|
7666
|
+
KICC와 알리페이 플러스에서는 영문만 사용하는 것을 권장합니다.
|
|
7667
|
+
|
|
7668
|
+
- orderDescription: string
|
|
7669
|
+
|
|
7670
|
+
**주문 상세 정보**
|
|
7671
|
+
|
|
7672
|
+
주문 상세 정보로 고객사에서 자유롭게 입력합니다.
|
|
7673
|
+
|
|
7674
|
+
KICC와 알리페이 플러스에서는 영문만 사용하는 것을 권장합니다.
|
|
7675
|
+
|
|
7676
|
+
- channelKey: string
|
|
7677
|
+
|
|
7678
|
+
**채널 키**
|
|
7679
|
+
|
|
7680
|
+
콘솔에서 채널 연동 시 생성된 채널 키입니다.
|
|
7681
|
+
|
|
7682
|
+
- totalAmount: number
|
|
7683
|
+
|
|
7684
|
+
**결제 금액**
|
|
7685
|
+
|
|
7686
|
+
결제 금액(실제 결제 금액 X 10^ 해당 currency의 scale factor, 예: $1.50 -> 150)
|
|
7687
|
+
|
|
7688
|
+
- currency: string
|
|
7689
|
+
|
|
7690
|
+
**결제 통화 코드**
|
|
7691
|
+
|
|
7692
|
+
[ISO 4217](https://en.wikipedia.org/wiki/ISO_4217) 통화 코드
|
|
7693
|
+
|
|
7694
|
+
- `KRW`: 한국 원
|
|
7695
|
+
- `USD`: 미국 달러
|
|
7696
|
+
|
|
7697
|
+
- alipayPlus: object
|
|
7698
|
+
|
|
7699
|
+
**알리페이 플러스 정보**
|
|
7700
|
+
|
|
7701
|
+
- easyPayProvider?: string
|
|
7702
|
+
|
|
7703
|
+
**알리페이 플러스를 통해 이용할 간편결제**
|
|
7704
|
+
|
|
7705
|
+
미입력 시 이용 가능한 간편결제 수단이 모두 노출되는 알리페이 플러스 통합 월렛 화면이 표기됩니다.
|
|
7706
|
+
|
|
7707
|
+
- `ALIPAY`: Alipay (알리페이)
|
|
7708
|
+
- `TRUE_MONEY`: TrueMoney (트루머니)
|
|
7709
|
+
- `ALIPAY_HK`: AlipayHK (알리페이 홍콩)
|
|
7710
|
+
- `TOUCH_N_GO`: Touch 'n Go (터치앤고)
|
|
7711
|
+
- `G_CASH`: GCash (지캐시)
|
|
7712
|
+
- `DANA`: DANA (다나)
|
|
7713
|
+
- `RABBIT_LINE_PAY`: Rabbit LINE Pay (래빗 라인페이)
|
|
7714
|
+
- `BPI`: BPI - Bank of the Philippine Islands (필리핀 제도 은행)
|
|
7715
|
+
- `BOOST`: Boost (부스트)
|
|
7716
|
+
- `BILL_EASE`: BillEase (빌이즈)
|
|
7717
|
+
- `TINABA`: Tinaba (티나바)
|
|
7718
|
+
- `MPAY`: MPay (엠페이)
|
|
7719
|
+
- `KREDIVO`: Kredivo (크레디보)
|
|
7720
|
+
|
|
7721
|
+
- customer?: object
|
|
7722
|
+
|
|
7723
|
+
**고객 정보**
|
|
7724
|
+
|
|
7725
|
+
- fullName?: string
|
|
7726
|
+
|
|
7727
|
+
**구매자 전체 이름**
|
|
7728
|
+
|
|
7729
|
+
`fullName`과 `firstName` / `lastName`이 모두 입력된 경우 `fullName`으로 기록됩니다.
|
|
7730
|
+
|
|
7731
|
+
- firstName?: string
|
|
7732
|
+
|
|
7733
|
+
**구매자 이름**
|
|
7734
|
+
|
|
7735
|
+
`firstName`을 입력하는 경우 `lastName`도 필수로 입력해야 합니다. `fullName`이 없고,
|
|
7736
|
+
`firstName`과 `lastName`이 존재하는 경우 `{firstName} {lastName}`으로 저장됩니다.
|
|
7737
|
+
|
|
7738
|
+
- lastName?: string
|
|
7739
|
+
|
|
7740
|
+
**구매자 성**
|
|
7741
|
+
|
|
7742
|
+
`lastName`을 입력하는 경우 `firstName`도 필수로 입력해야 합니다.
|
|
7743
|
+
|
|
7744
|
+
- phoneNumber?: string
|
|
7745
|
+
|
|
7746
|
+
**구매자 연락처**
|
|
7747
|
+
|
|
7748
|
+
- email?: string
|
|
7749
|
+
|
|
7750
|
+
**구매자 이메일 주소**
|
|
7751
|
+
|
|
7752
|
+
결제 완료 메일이 발송됩니다.
|
|
7753
|
+
|
|
7754
|
+
</div>
|
|
7755
|
+
|
|
7756
|
+
</div>
|
|
7757
|
+
|
|
7758
|
+
## 유의 사항
|
|
7759
|
+
|
|
7760
|
+
<div class="tabs-container">
|
|
7761
|
+
|
|
7762
|
+
<div class="tabs-content" data-title="위챗페이">
|
|
7763
|
+
|
|
7764
|
+
### 결제 승인
|
|
7765
|
+
|
|
7766
|
+
위챗페이의 경우 위챗 앱을 이용해 QR코드를 스캔하여 결제를 진행하는 방식으로 결제창이 닫힌 이후에도 구매자가 QR코드를 이미
|
|
7767
|
+
스캔해둔 상태라면 언제든지 결제 승인이 발생할 수 있습니다.
|
|
7768
|
+
|
|
7769
|
+
따라서 PC에서 callback / Mobile에서 redirect 된 이후 결제내역 조회를 통해 확인된 상태값을 100% 신뢰하지 않도록
|
|
7770
|
+
해야하며 웹훅 연동은 필수로 진행해야합니다.
|
|
7771
|
+
|
|
7772
|
+
### 결제 취소
|
|
7773
|
+
|
|
7774
|
+
위챗페이의 경우 결제 취소가 비동기로 처리됩니다. 결제 취소 요청에 대한 응답으로 주문 상태를 변경하지 않고
|
|
7775
|
+
웹훅을 통해 결제 취소 결과를 반영하도록 처리가 필요합니다.
|
|
7776
|
+
|
|
7777
|
+
### 도메인 등록
|
|
7778
|
+
|
|
7779
|
+
위챗페이는 KICC를 통해 결제창이 오픈될 고객사 결제 페이지 도메인에 대한 등록 요청이 필요합니다.
|
|
7780
|
+
|
|
7781
|
+
등록되어있지 않은 도메인에 대해서는 모바일 결제 시도 시 오류 페이지로 연결되므로 유의 바랍니다.
|
|
7782
|
+
|
|
7783
|
+
</div>
|
|
7784
|
+
|
|
7785
|
+
<div class="tabs-content" data-title="알리페이 플러스">
|
|
7786
|
+
|
|
7787
|
+
### 결제 승인
|
|
7788
|
+
|
|
7789
|
+
알리페이 플러스의 경우 일부 결제 수단은 앱으로 QR코드를 스캔하여 결제를 진행하는 방식으로 결제창이 닫힌 이후에도 구매자가 QR코드를 이미
|
|
7790
|
+
스캔해둔 상태라면 언제든지 결제 승인이 발생할 수 있습니다.
|
|
7791
|
+
|
|
7792
|
+
따라서 PC에서 callback / Mobile에서 redirect 된 이후 결제내역 조회를 통해 확인된 상태값을 100% 신뢰하지 않도록
|
|
7793
|
+
해야하며 웹훅 연동은 필수로 진행해야합니다.
|
|
7794
|
+
|
|
7795
|
+
</div>
|
|
7796
|
+
|
|
7797
|
+
</div>
|
|
7798
|
+
|
|
7799
|
+
|
|
6205
7800
|
# https://developers.portone.io/opi/ko/integration/pg/v2/kpn
|
|
6206
7801
|
|
|
6207
7802
|
---
|
|
@@ -6485,7 +8080,7 @@ function requestPayment() {
|
|
|
6485
8080
|
|
|
6486
8081
|
- 카카오페이: `KAKAOPAY`
|
|
6487
8082
|
- 네이버페이: `NAVERPAY`
|
|
6488
|
-
- 삼성페이: `
|
|
8083
|
+
- 삼성페이: `SAMSUNGPAY`
|
|
6489
8084
|
- 토스페이: `TOSSPAY`
|
|
6490
8085
|
- 페이코: `PAYCO`
|
|
6491
8086
|
|
|
@@ -6572,7 +8167,7 @@ function requestPayment() {
|
|
|
6572
8167
|
|
|
6573
8168
|
한국결제네트웍스(KPN)에서 가상계좌 발급이 가능한 은행은 아래와 같습니다.
|
|
6574
8169
|
|
|
6575
|
-
은행코드는 [BANK ENUM](https://developers.portone.io/api/rest-v2/
|
|
8170
|
+
은행코드는 [BANK ENUM](https://developers.portone.io/api/rest-v2/payment#Bank)으로 정의되어 있으며
|
|
6576
8171
|
아래 목록에 대한 ENUM 코드를 매핑하여 API에 사용하실 수 있습니다.
|
|
6577
8172
|
|
|
6578
8173
|
- 기업은행
|
|
@@ -6830,7 +8425,7 @@ const issueResponse = await axios({
|
|
|
6830
8425
|
**발급 은행**
|
|
6831
8426
|
|
|
6832
8427
|
- 은행코드는 ENUM으로 정의되어 있습니다.
|
|
6833
|
-
- [BANK ENUM 바로가기](https://developers.portone.io/api/rest-v2/
|
|
8428
|
+
- [BANK ENUM 바로가기](https://developers.portone.io/api/rest-v2/payment#Bank)
|
|
6834
8429
|
|
|
6835
8430
|
- expiry: object
|
|
6836
8431
|
|
|
@@ -7622,6 +9217,14 @@ async function schedulePayment() {
|
|
|
7622
9217
|
- `0` : 간편결제 수단 표시 하지 않음
|
|
7623
9218
|
- `1` : 간편결제 수단 표시함
|
|
7624
9219
|
|
|
9220
|
+
- sndKakaopayType?: string
|
|
9221
|
+
|
|
9222
|
+
카카오페이 결제시 허용할 결제수단
|
|
9223
|
+
|
|
9224
|
+
- `CARD`: 카드 결제만 허용
|
|
9225
|
+
- `MONEY`: 카카오머니 결제만 허용
|
|
9226
|
+
- 미입력시 모든 결제수단 허용
|
|
9227
|
+
|
|
7625
9228
|
### 카드 다이렉트 호출
|
|
7626
9229
|
|
|
7627
9230
|
- customer?: object
|
|
@@ -9011,6 +10614,181 @@ targetVersions:
|
|
|
9011
10614
|
- 페이레터의 경우 결제창을 닫은 이후에 결제가 성공 처리될 수 있습니다. 웹훅을 연동하여 결제 실패 상태에서 결제 성공 상태로 바뀌는 경우를 처리해야 합니다.
|
|
9012
10615
|
|
|
9013
10616
|
|
|
10617
|
+
# https://developers.portone.io/opi/ko/integration/pg/v2/paymentwall
|
|
10618
|
+
|
|
10619
|
+
---
|
|
10620
|
+
title: 페이먼트월
|
|
10621
|
+
description: 페이먼트월 결제 연동 방법을 안내합니다.
|
|
10622
|
+
targetVersions:
|
|
10623
|
+
- v2
|
|
10624
|
+
---
|
|
10625
|
+
|
|
10626
|
+
## 채널 설정하기
|
|
10627
|
+
|
|
10628
|
+
- [결제대행사 채널 설정하기](https://developers.portone.io/opi/ko/integration/ready/readme#3-결제대행사-채널-설정하기)의 내용을 참고하여 PG 설정을 진행합니다.
|
|
10629
|
+
|
|
10630
|
+
## 가능한 결제 수단
|
|
10631
|
+
|
|
10632
|
+
페이먼트월의 경우, `payMethod` 파라미터를 지원하고 있지 않아, 국가IP에 맞는 결제수단이 기본으로 노출됩니다.
|
|
10633
|
+
특정 결제수단만 노출하고 싶으신 경우, 아래에 후술될 `bypass.paymentwall.ps` 파라미터를 사용하시면 됩니다.
|
|
10634
|
+
|
|
10635
|
+
- 페이먼트월 결제수단 코드는 포트원 코드와 상이하므로, [PAYMENTWALL Docs](https://docs.paymentwall.com/reference/payment-system-shortcodes)에서 `Payment System short code`를 확인 후 입력해야 합니다.
|
|
10636
|
+
|
|
10637
|
+
## SDK 결제 요청하기
|
|
10638
|
+
|
|
10639
|
+
결제 요청 시에는 `requestPayment` 함수를 호출해야 합니다.
|
|
10640
|
+
`channelKey` 파라미터에 결제 채널 연동 후 생성된 채널 키값을 지정하여 페이먼트월 채널 사용을 명시해주세요.
|
|
10641
|
+
|
|
10642
|
+
페이먼트월 기준으로 작성한 예시 코드는 아래와 같습니다.
|
|
10643
|
+
|
|
10644
|
+
<div class="tabs-container">
|
|
10645
|
+
|
|
10646
|
+
<div class="tabs-content" data-title="SDK 결제 요청">
|
|
10647
|
+
|
|
10648
|
+
```javascript
|
|
10649
|
+
import * as PortOne from "@portone/browser-sdk/v2";
|
|
10650
|
+
function requestPayment() {
|
|
10651
|
+
PortOne.requestPayment({
|
|
10652
|
+
storeId: "store-4ff4af41-85e3-4559-8eb8-0d08a2c6ceec", // 고객사 storeId로 변경해주세요.
|
|
10653
|
+
channelKey: "channel-key-9987cb87-6458-4888-b94e-68d9a2da896d", // 콘솔 결제 연동 화면에서 채널 연동 시 생성된 채널 키를 입력해주세요.
|
|
10654
|
+
paymentId: `payment${crypto.randomUUID()}`,
|
|
10655
|
+
orderName: "PortOne Purchase",
|
|
10656
|
+
totalAmount: 1000,
|
|
10657
|
+
currency: "KRW",
|
|
10658
|
+
customer: {
|
|
10659
|
+
customerId: "customer-1234", // 고객사가 구매자에게 부여한 고유 ID
|
|
10660
|
+
email: "test@portone.io",
|
|
10661
|
+
},
|
|
10662
|
+
});
|
|
10663
|
+
}
|
|
10664
|
+
```
|
|
10665
|
+
|
|
10666
|
+
</div>
|
|
10667
|
+
|
|
10668
|
+
</div>
|
|
10669
|
+
|
|
10670
|
+
### 주요 파라미터
|
|
10671
|
+
|
|
10672
|
+
- storeId: string
|
|
10673
|
+
|
|
10674
|
+
**상점 아이디**
|
|
10675
|
+
|
|
10676
|
+
포트원 계정에 생성된 상점을 식별하는 고유한 값으로 관리자 콘솔에서 확인할 수 있습니다.
|
|
10677
|
+
|
|
10678
|
+
- paymentId: string
|
|
10679
|
+
|
|
10680
|
+
**고객사 주문 고유 번호**
|
|
10681
|
+
|
|
10682
|
+
고객사에서 채번하는 주문 고유 번호로 매번 고유하게 채번되어야 합니다.
|
|
10683
|
+
|
|
10684
|
+
- orderName: string
|
|
10685
|
+
|
|
10686
|
+
**주문명**
|
|
10687
|
+
|
|
10688
|
+
주문명으로 고객사에서 자유롭게 입력합니다.
|
|
10689
|
+
|
|
10690
|
+
- channelKey: string
|
|
10691
|
+
|
|
10692
|
+
**채널 키**
|
|
10693
|
+
|
|
10694
|
+
포트원 콘솔 내 \[연동 관리] > \[연동 정보] > \[채널 관리] 화면에서 채널 추가 시 생성되는 값입니다. 결제 호출 시 채널을 지정할 때 사용됩니다.
|
|
10695
|
+
|
|
10696
|
+
- totalAmount: number
|
|
10697
|
+
|
|
10698
|
+
**결제 금액**
|
|
10699
|
+
|
|
10700
|
+
결제 금액(실제 결제 금액 X 10^ 해당 currency의 scale factor, 예: $1.50 -> 150)
|
|
10701
|
+
|
|
10702
|
+
- currency: string
|
|
10703
|
+
|
|
10704
|
+
**결제 통화 코드**
|
|
10705
|
+
|
|
10706
|
+
- ISO 4217 통화 코드
|
|
10707
|
+
- [ISO 4217](https://en.wikipedia.org/wiki/ISO_4217)
|
|
10708
|
+
|
|
10709
|
+
- locale?: Locale
|
|
10710
|
+
|
|
10711
|
+
**결제창 언어**
|
|
10712
|
+
|
|
10713
|
+
- `KO_KR`: 한국어
|
|
10714
|
+
- `EN_US`: 영어
|
|
10715
|
+
- `JA_JP`: 일본어
|
|
10716
|
+
- `ZH_CN`: 중국어 (중국 본토)
|
|
10717
|
+
- `ZH_TW`: 중국어 (대만)
|
|
10718
|
+
- `TH_TH`: 타이어
|
|
10719
|
+
- `RU_RU`: 러시아어
|
|
10720
|
+
- `VI_VN`: 베트남어
|
|
10721
|
+
- `FR_FR`: 프랑스어
|
|
10722
|
+
- `NL_NL`: 네덜란드어
|
|
10723
|
+
- `ES_ES`: 에스파냐어
|
|
10724
|
+
- `PT_PT`: 포르투갈어
|
|
10725
|
+
- `DE_DE`: 독일어
|
|
10726
|
+
- `IT_IT`: 이탈리아어
|
|
10727
|
+
- `PL_PL`: 폴란드어
|
|
10728
|
+
- `TR_TR`: 터키어
|
|
10729
|
+
- `SV_SE`: 스웨덴어
|
|
10730
|
+
- `FI_FI`: 핀란드어
|
|
10731
|
+
- `UK_UA`: 우크라이나어
|
|
10732
|
+
- `EL_GR`: 그리스어
|
|
10733
|
+
- `TL_PH`: 타갈로그어
|
|
10734
|
+
- `HI_IN`: 힌디어
|
|
10735
|
+
- `HR_HR`: 크로아티아어
|
|
10736
|
+
- `LT_LT`: 리투아니아어
|
|
10737
|
+
- `SL_SI`: 슬로베니아어
|
|
10738
|
+
- `SR_RS`: 세르비아어
|
|
10739
|
+
- `BG_BG`: 불가리아어
|
|
10740
|
+
- `PT_BR`: 포르투갈어 (브라질)
|
|
10741
|
+
|
|
10742
|
+
- customer: object
|
|
10743
|
+
|
|
10744
|
+
**고객 정보**
|
|
10745
|
+
|
|
10746
|
+
페이먼트월의 경우 구매자 고유 ID와 이메일은 필수 입력 항목입니다.
|
|
10747
|
+
|
|
10748
|
+
- customerId: string
|
|
10749
|
+
|
|
10750
|
+
**구매자 고유 ID**
|
|
10751
|
+
|
|
10752
|
+
고객사가 구매자를 특정하기 위해 채번한 고유 번호입니다.
|
|
10753
|
+
|
|
10754
|
+
- email: string
|
|
10755
|
+
|
|
10756
|
+
**구매자 이메일**
|
|
10757
|
+
|
|
10758
|
+
- bypass?: oneof object
|
|
10759
|
+
|
|
10760
|
+
**PG사 결제창 호출 시 PG사로 그대로 bypass할 파라미터들의 모음**
|
|
10761
|
+
|
|
10762
|
+
- paymentwall?: object
|
|
10763
|
+
|
|
10764
|
+
**페이먼트월 특수 파라미터**
|
|
10765
|
+
|
|
10766
|
+
- widget?: string
|
|
10767
|
+
|
|
10768
|
+
**위젯 코드**
|
|
10769
|
+
|
|
10770
|
+
`pw_1`과 `t3_1`만 입력 가능하며, 미설정시 기본(`pw_1`) 결제창이 활성화됩니다.
|
|
10771
|
+
|
|
10772
|
+
- ps?: string
|
|
10773
|
+
|
|
10774
|
+
**결제수단 단독 노출**
|
|
10775
|
+
|
|
10776
|
+
페이먼트월 결제수단 코드는 포트원 코드와 상이하므로, [PAYMENTWALL Docs](https://docs.paymentwall.com/reference/payment-system-shortcodes)에서 `Payment System short code`를 확인 후 입력해야 합니다.
|
|
10777
|
+
|
|
10778
|
+
- country\_code?: string
|
|
10779
|
+
|
|
10780
|
+
**국가 코드**
|
|
10781
|
+
|
|
10782
|
+
지정된 국가에서 지원되는 결제수단이 결제창에 노출됩니다. [ISO 3166-1 alpha-2](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2)를 참고하여 해당하는 국가코드를 입력해야 합니다.
|
|
10783
|
+
|
|
10784
|
+
## 유의사항
|
|
10785
|
+
|
|
10786
|
+
- 페이먼트월 프로젝트는 반드시 페이먼트월에서 제공하는 포트원 전용 링크를 통해 생성해야 합니다. 정상적으로 생성된 프로젝트는 프로젝트명 뒤에 `[import]`가 표시됩니다.
|
|
10787
|
+
- 페이먼트월을 통해 결제하는 경우 [페이먼트월 배송 정보 등록 API](https://developers.portone.io/api/rest-v2/pgSpecific#post%20%2Fpaymentwall%2Fdelivery%2Fconfirm)를 반드시 연동해야 합니다. 등록된 배송 정보는 차지백 발생 시 상품 배송 완료를 증빙하는 자료로 활용됩니다.
|
|
10788
|
+
- 요청 통화와 승인 통화(프로세싱 통화)가 다른 경우 부분 취소는 지원되지 않으며, 전체 취소만 가능합니다.
|
|
10789
|
+
- 국내 가상계좌 결제는 지원되지 않습니다.
|
|
10790
|
+
|
|
10791
|
+
|
|
9014
10792
|
# https://developers.portone.io/opi/ko/integration/pg/v2/paypal-v2
|
|
9015
10793
|
|
|
9016
10794
|
---
|
|
@@ -11060,6 +12838,22 @@ versionVariants:
|
|
|
11060
12838
|
- 해외결제 일반결제 : 카드 / 유니온페이 / 알리페이 / 위챗페이
|
|
11061
12839
|
- 해외결제 정기결제 : 카드 / 유니온페이
|
|
11062
12840
|
|
|
12841
|
+
- **이지페이(KICC)**
|
|
12842
|
+
|
|
12843
|
+
- 연동 기능 : 인증결제(결제창)
|
|
12844
|
+
|
|
12845
|
+
- 결제 수단
|
|
12846
|
+
|
|
12847
|
+
- 해외결제 일반결제 : 위챗페이 / 알리페이 플러스
|
|
12848
|
+
|
|
12849
|
+
- **페이먼트월**
|
|
12850
|
+
|
|
12851
|
+
- 연동 기능 : 인증결제(결제창)
|
|
12852
|
+
|
|
12853
|
+
- 결제 수단
|
|
12854
|
+
|
|
12855
|
+
- 해외결제 일반결제
|
|
12856
|
+
|
|
11063
12857
|
### 본인인증
|
|
11064
12858
|
|
|
11065
12859
|
- **다날 본인인증**
|
|
@@ -11748,7 +13542,7 @@ const issueResponse = await axios({
|
|
|
11748
13542
|
**발급 은행**
|
|
11749
13543
|
|
|
11750
13544
|
- 은행코드는 ENUM으로 정의되어 있습니다.
|
|
11751
|
-
- [BANK ENUM 바로가기](https://developers.portone.io/api/rest-v2/
|
|
13545
|
+
- [BANK ENUM 바로가기](https://developers.portone.io/api/rest-v2/payment#Bank)
|
|
11752
13546
|
|
|
11753
13547
|
- expiry: object
|
|
11754
13548
|
|
|
@@ -13119,6 +14913,352 @@ async function schedulePayment() {
|
|
|
13119
14913
|
발생하는 이슈로 포트원과 무관합니다.
|
|
13120
14914
|
|
|
13121
14915
|
|
|
14916
|
+
# https://developers.portone.io/opi/ko/integration/pg/v2/triple-a
|
|
14917
|
+
|
|
14918
|
+
---
|
|
14919
|
+
title: Triple-A
|
|
14920
|
+
description: Triple-A 결제 연동 방법을 안내합니다.
|
|
14921
|
+
targetVersions:
|
|
14922
|
+
- v2
|
|
14923
|
+
---
|
|
14924
|
+
|
|
14925
|
+
## 채널 설정하기
|
|
14926
|
+
|
|
14927
|
+
- [결제대행사 채널 설정하기](https://developers.portone.io/opi/ko/integration/ready/readme#3-결제대행사-채널-설정하기) 페이지의 내용을 참고하여 채널 설정을 진행합니다.
|
|
14928
|
+
|
|
14929
|
+
## SDK 결제 요청하기
|
|
14930
|
+
|
|
14931
|
+
결제 요청 시에는 `requestPayment` 함수를 호출해야 합니다. `channelKey` 파라미터에 결제 채널 연동 후 생성된 채널 키를 지정하여 Triple-A 채널 사용을 명시해주세요.
|
|
14932
|
+
|
|
14933
|
+
<div class="tabs-container">
|
|
14934
|
+
|
|
14935
|
+
<div class="tabs-content" data-title="SDK 결제 요청">
|
|
14936
|
+
|
|
14937
|
+
```javascript
|
|
14938
|
+
import * as PortOne from "@portone/browser-sdk/v2";
|
|
14939
|
+
PortOne.requestPayment({
|
|
14940
|
+
storeId: "store-4ff4af41-85e3-4559-8eb8-0d08a2c6ceec", // 고객사 storeId로 변경해주세요.
|
|
14941
|
+
channelKey: "channel-key-9987cb87-6458-4888-b94e-68d9a2da896d", // 콘솔 결제 연동 화면에서 채널 연동 시 생성된 채널 키를 입력해주세요.
|
|
14942
|
+
paymentId: `payment${crypto.randomUUID()}`,
|
|
14943
|
+
orderName: "PortOne Purchase",
|
|
14944
|
+
totalAmount: 100, // 1 USD
|
|
14945
|
+
currency: "USD",
|
|
14946
|
+
customer: {
|
|
14947
|
+
fullName: "PortOne",
|
|
14948
|
+
email: "test@example.com",
|
|
14949
|
+
},
|
|
14950
|
+
});
|
|
14951
|
+
```
|
|
14952
|
+
|
|
14953
|
+
</div>
|
|
14954
|
+
|
|
14955
|
+
</div>
|
|
14956
|
+
|
|
14957
|
+
### 사용 가능 파라미터
|
|
14958
|
+
|
|
14959
|
+
- storeId: string
|
|
14960
|
+
|
|
14961
|
+
**상점 아이디**
|
|
14962
|
+
|
|
14963
|
+
- paymentId: string
|
|
14964
|
+
|
|
14965
|
+
**고객사 주문 고유 번호**
|
|
14966
|
+
|
|
14967
|
+
- 고객사가 채번하는 주문 고유 번호입니다.
|
|
14968
|
+
- 이미 승인된 `paymentId`로 결제를 시도하는 경우 에러가 발생합니다.
|
|
14969
|
+
|
|
14970
|
+
- orderName: string
|
|
14971
|
+
|
|
14972
|
+
**주문명**
|
|
14973
|
+
|
|
14974
|
+
Triple-A로 전달되지 않으며 포트원 결제 내역 확인 시에만 사용됩니다.
|
|
14975
|
+
|
|
14976
|
+
- channelKey: string
|
|
14977
|
+
|
|
14978
|
+
**채널 키**
|
|
14979
|
+
|
|
14980
|
+
Triple-A 채널의 채널키를 입력합니다.
|
|
14981
|
+
|
|
14982
|
+
- totalAmount: number
|
|
14983
|
+
|
|
14984
|
+
**결제 금액**
|
|
14985
|
+
|
|
14986
|
+
결제 금액을 정수로 나타냅니다.
|
|
14987
|
+
|
|
14988
|
+
해외 통화의 경우 통화의 최소 단위(minor unit)를 기준으로 합니다. 예를 들어, USD의 최소 단위는 센트(0.01 USD)이므로, 6 USD의 경우 100배하여 600으로 입력합니다.
|
|
14989
|
+
|
|
14990
|
+
최소 단위는 [ISO 4217](https://www.iso.org/iso-4217-currency-codes.html)에 표준화된 것을 기준으로 합니다.
|
|
14991
|
+
|
|
14992
|
+
- KRW: 1배
|
|
14993
|
+
- USD: 100배
|
|
14994
|
+
- JPY: 1배
|
|
14995
|
+
|
|
14996
|
+
- currency: string
|
|
14997
|
+
|
|
14998
|
+
**결제 통화 코드**
|
|
14999
|
+
|
|
15000
|
+
- ISO 4217 통화 코드
|
|
15001
|
+
- [ISO 4217](https://en.wikipedia.org/wiki/ISO_4217)
|
|
15002
|
+
- Triple-A에서 사용 가능한 통화 목록은 [Triple-A 공식 문서](https://developers.triple-a.io/docs/triplea-api-doc/8974dfffa9418-presentment-currencies-for-crypto-payments)에서 확인할 수 있습니다.
|
|
15003
|
+
|
|
15004
|
+
- locale?: Locale
|
|
15005
|
+
|
|
15006
|
+
**결제창 언어**
|
|
15007
|
+
|
|
15008
|
+
- `EN_US`: 영어
|
|
15009
|
+
- `ZH_CN`: 중국어 (중국 본토)
|
|
15010
|
+
- `JA_JP`: 일본어
|
|
15011
|
+
- `RU_RU`: 러시아어
|
|
15012
|
+
- `VI_VN`: 베트남어
|
|
15013
|
+
- `ID_ID`: 인도네시아어
|
|
15014
|
+
- `FR_FR`: 프랑스어
|
|
15015
|
+
- `NL_NL`: 네덜란드어
|
|
15016
|
+
- `ES_ES`: 스페인어
|
|
15017
|
+
- `PT_PT`: 포르투갈어
|
|
15018
|
+
- `DE_DE`: 독일어
|
|
15019
|
+
- `IT_IT`: 이탈리아어
|
|
15020
|
+
- `PL_PL`: 폴란드어
|
|
15021
|
+
- `AR_001`: 현대 표준 아랍어
|
|
15022
|
+
|
|
15023
|
+
- customer?: object
|
|
15024
|
+
|
|
15025
|
+
**고객 정보**
|
|
15026
|
+
|
|
15027
|
+
- customerId?: string
|
|
15028
|
+
|
|
15029
|
+
**구매자 ID**
|
|
15030
|
+
|
|
15031
|
+
구매자를 식별하는 고유한 값으로, 값이 없으면 포트원에서 자동으로 생성합니다.
|
|
15032
|
+
|
|
15033
|
+
- fullName?: string
|
|
15034
|
+
|
|
15035
|
+
**구매자 전체 이름**
|
|
15036
|
+
|
|
15037
|
+
`fullName`이 없고 `firstName`과 `lastName`이 있는 경우 `${lastName} ${firstName}`이 대신 사용됩니다.
|
|
15038
|
+
|
|
15039
|
+
- firstName?: string
|
|
15040
|
+
|
|
15041
|
+
**구매자 이름**
|
|
15042
|
+
|
|
15043
|
+
`firstName`을 입력하는 경우 `lastName`도 필수로 입력해야 합니다. `fullName`이 없고,
|
|
15044
|
+
`firstName`과 `lastName`이 존재하는 경우 `{firstName} {lastName}`으로 저장됩니다.
|
|
15045
|
+
|
|
15046
|
+
- lastName?: string
|
|
15047
|
+
|
|
15048
|
+
**구매자 성**
|
|
15049
|
+
|
|
15050
|
+
`lastName`을 입력하는 경우 `firstName`도 필수로 입력해야 합니다.
|
|
15051
|
+
|
|
15052
|
+
- phoneNumber?: string
|
|
15053
|
+
|
|
15054
|
+
**구매자 휴대전화 번호**
|
|
15055
|
+
|
|
15056
|
+
`+6591234567`과 같이 `+(국가코드)`로 시작하는 [E.164](https://www.itu.int/rec/T-REC-E.164/) 형식의 전화번호를 입력합니다.
|
|
15057
|
+
|
|
15058
|
+
- email?: string
|
|
15059
|
+
|
|
15060
|
+
**구매자 이메일 주소**
|
|
15061
|
+
|
|
15062
|
+
- products?: object\[]
|
|
15063
|
+
|
|
15064
|
+
**구매 상품 정보**
|
|
15065
|
+
|
|
15066
|
+
입력 시 결제창에 상품 정보가 표시됩니다.
|
|
15067
|
+
|
|
15068
|
+
- id: string
|
|
15069
|
+
|
|
15070
|
+
**상품 ID**
|
|
15071
|
+
|
|
15072
|
+
- name: string
|
|
15073
|
+
|
|
15074
|
+
**상품명**
|
|
15075
|
+
|
|
15076
|
+
- amount: number
|
|
15077
|
+
|
|
15078
|
+
**상품 단위 가격**
|
|
15079
|
+
|
|
15080
|
+
상품의 단위당 가격을 정수로 나타냅니다.
|
|
15081
|
+
|
|
15082
|
+
해외 통화의 경우 통화의 최소 단위(minor unit)를 기준으로 합니다. 예를 들어, USD의 최소 단위는 센트(0.01 USD)이므로, 6 USD의 경우 100배하여 600으로 입력합니다.
|
|
15083
|
+
|
|
15084
|
+
최소 단위는 [ISO 4217](https://www.iso.org/iso-4217-currency-codes.html)에 표준화된 것을 기준으로 합니다.
|
|
15085
|
+
|
|
15086
|
+
- KRW: 1배
|
|
15087
|
+
- USD: 100배
|
|
15088
|
+
- JPY: 1배
|
|
15089
|
+
|
|
15090
|
+
- quantity: number
|
|
15091
|
+
|
|
15092
|
+
**상품 수량**
|
|
15093
|
+
|
|
15094
|
+
- bypass?: oneof object
|
|
15095
|
+
|
|
15096
|
+
- triple\_a?: object
|
|
15097
|
+
|
|
15098
|
+
**Triple-A 특수 파라미터**
|
|
15099
|
+
|
|
15100
|
+
- payer\_poi?: string
|
|
15101
|
+
|
|
15102
|
+
**결제자 신원 증명 정보**
|
|
15103
|
+
|
|
15104
|
+
신분증, 여권 등 결제자의 신원을 증명할 수 있는 자료의 URL을 입력합니다.
|
|
15105
|
+
|
|
15106
|
+
SGD 1500 이상의 결제 등 결제자 신원 조회가 필요한 경우에, `payer_poi`를 입력하면 별도의 신원 요청 과정을 거치지 않고 결제가 진행됩니다.
|
|
15107
|
+
|
|
15108
|
+
- shipping\_cost?: number
|
|
15109
|
+
|
|
15110
|
+
**배송비**
|
|
15111
|
+
|
|
15112
|
+
결제창에 표시할 배송비를 정수로 나타냅니다.
|
|
15113
|
+
`products`가 지정된 경우에만 사용할 수 있습니다.
|
|
15114
|
+
|
|
15115
|
+
해외 통화의 경우 통화의 최소 단위(minor unit)를 기준으로 합니다. 예를 들어, USD의 최소 단위는 센트(0.01 USD)이므로, 6 USD의 경우 100배하여 600으로 입력합니다.
|
|
15116
|
+
|
|
15117
|
+
최소 단위는 [ISO 4217](https://www.iso.org/iso-4217-currency-codes.html)에 표준화된 것을 기준으로 합니다.
|
|
15118
|
+
|
|
15119
|
+
- KRW: 1배
|
|
15120
|
+
- USD: 100배
|
|
15121
|
+
- JPY: 1배
|
|
15122
|
+
|
|
15123
|
+
- shipping\_discount?: number
|
|
15124
|
+
|
|
15125
|
+
**배송비 할인 금액**
|
|
15126
|
+
|
|
15127
|
+
결제창에 표시할 배송비 할인 금액을 정수로 나타냅니다.
|
|
15128
|
+
`products`가 지정된 경우에만 사용할 수 있습니다.
|
|
15129
|
+
|
|
15130
|
+
- tax\_cost?: number
|
|
15131
|
+
|
|
15132
|
+
**세금**
|
|
15133
|
+
|
|
15134
|
+
결제창에 표시할 세금을 정수로 나타냅니다.
|
|
15135
|
+
`products`가 지정된 경우에만 사용할 수 있습니다.
|
|
15136
|
+
|
|
15137
|
+
## API 결제 취소 요청하기
|
|
15138
|
+
|
|
15139
|
+
암호화폐 결제의 경우 결제 취소를 위해서는 환불받을 지갑 주소를 입력받아야 합니다.
|
|
15140
|
+
|
|
15141
|
+
API로 취소 요청 시, 구매자의 이메일 주소를 전달하면 해당 메일을 통해 지갑 주소 입력 및 환불 절차가 진행됩니다.
|
|
15142
|
+
|
|
15143
|
+
결제 취소 요청을 구매자가 확인하고 지갑 주소를 입력하는 시점에 환불 금액이 확정됩니다.
|
|
15144
|
+
환불 금액은 결제 요청 금액을 환불 시점에 암호화폐로 환산한 금액입니다.
|
|
15145
|
+
환불 금액이 확정된 이후 입력한 지갑 주소로 환불이 진행됩니다.
|
|
15146
|
+
|
|
15147
|
+
<div class="tabs-container">
|
|
15148
|
+
|
|
15149
|
+
<div class="tabs-content" data-title="API 결제 취소">
|
|
15150
|
+
|
|
15151
|
+
```ts
|
|
15152
|
+
const response = await fetch(
|
|
15153
|
+
`https://api.portone.io/payments/${paymentId}/cancel`,
|
|
15154
|
+
{
|
|
15155
|
+
method: "POST",
|
|
15156
|
+
headers: {
|
|
15157
|
+
Authorization: `PortOne ${PORTONE_API_SECRET}`,
|
|
15158
|
+
"Content-Type": "application/json",
|
|
15159
|
+
},
|
|
15160
|
+
body: JSON.stringify({
|
|
15161
|
+
reason: "단순 변심 전체 취소",
|
|
15162
|
+
refundEmail: "buyer@example.com",
|
|
15163
|
+
}),
|
|
15164
|
+
},
|
|
15165
|
+
);
|
|
15166
|
+
|
|
15167
|
+
const {
|
|
15168
|
+
cancellation: { id },
|
|
15169
|
+
} = await response.json(); // id: 취소 요청 아이디
|
|
15170
|
+
```
|
|
15171
|
+
|
|
15172
|
+
</div>
|
|
15173
|
+
|
|
15174
|
+
</div>
|
|
15175
|
+
|
|
15176
|
+
### 사용 가능 파라미터
|
|
15177
|
+
|
|
15178
|
+
- paymentId: string
|
|
15179
|
+
|
|
15180
|
+
**고객사 주문 고유 번호**
|
|
15181
|
+
|
|
15182
|
+
- 결제 요청 시에 사용한 `paymentId`를 입력합니다.
|
|
15183
|
+
|
|
15184
|
+
- storeId?: string
|
|
15185
|
+
|
|
15186
|
+
**상점 아이디**
|
|
15187
|
+
|
|
15188
|
+
하위 상점의 결제를 취소할 경우 필수로 입력합니다.
|
|
15189
|
+
|
|
15190
|
+
- amount?: number
|
|
15191
|
+
|
|
15192
|
+
취소 총 금액
|
|
15193
|
+
|
|
15194
|
+
값을 입력하지 않으면 전액 취소됩니다.
|
|
15195
|
+
|
|
15196
|
+
- currentCancellableAmount?: number
|
|
15197
|
+
|
|
15198
|
+
**결제 건의 취소 가능 잔액**
|
|
15199
|
+
|
|
15200
|
+
본 취소 요청 이전의 취소 가능 잔액으로써, 값을 입력하면 잔액이 일치하는 경우에만 취소가 진행됩니다.
|
|
15201
|
+
값을 입력하지 않으면 별도의 검증 처리를 수행하지 않습니다.
|
|
15202
|
+
|
|
15203
|
+
- refundEmail: string
|
|
15204
|
+
|
|
15205
|
+
**환불 이메일**
|
|
15206
|
+
|
|
15207
|
+
Triple-A 결제 환불에 필요합니다. 해당 이메일로 환불 안내가 발송됩니다.
|
|
15208
|
+
|
|
15209
|
+
- reason: string
|
|
15210
|
+
|
|
15211
|
+
**취소 사유**
|
|
15212
|
+
|
|
15213
|
+
- skipWebhook?: boolean
|
|
15214
|
+
|
|
15215
|
+
**웹훅 생략 여부**
|
|
15216
|
+
|
|
15217
|
+
취소가 성공했을 때 웹훅을 전송하지 않으려면 `true`로 설정합니다.
|
|
15218
|
+
|
|
15219
|
+
## API 결제 취소 요청 취소
|
|
15220
|
+
|
|
15221
|
+
결제 취소를 요청했을 때, 구매자가 아직 지갑 주소를 입력하지 않았다면 취소 요청을 취소할 수 있습니다.
|
|
15222
|
+
|
|
15223
|
+
결제 취소 요청 결과로 획득한 `cancellation.id` 값을 사용하여 요청합니다.
|
|
15224
|
+
|
|
15225
|
+
<div class="tabs-container">
|
|
15226
|
+
|
|
15227
|
+
<div class="tabs-content" data-title="API 결제 취소 요청 취소">
|
|
15228
|
+
|
|
15229
|
+
```ts
|
|
15230
|
+
const response = await fetch(
|
|
15231
|
+
`https://api.portone.io/payments/${paymentId}/cancellations/${cancellationId}/stop`,
|
|
15232
|
+
{
|
|
15233
|
+
method: "POST",
|
|
15234
|
+
headers: { Authorization: `PortOne ${PORTONE_API_SECRET}` },
|
|
15235
|
+
},
|
|
15236
|
+
);
|
|
15237
|
+
```
|
|
15238
|
+
|
|
15239
|
+
</div>
|
|
15240
|
+
|
|
15241
|
+
</div>
|
|
15242
|
+
|
|
15243
|
+
### 사용 가능 파라미터
|
|
15244
|
+
|
|
15245
|
+
- paymentId: string
|
|
15246
|
+
|
|
15247
|
+
**고객사 주문 고유 번호**
|
|
15248
|
+
|
|
15249
|
+
- 결제 요청 시에 사용한 `paymentId`를 입력합니다.
|
|
15250
|
+
|
|
15251
|
+
- cancellationId: string
|
|
15252
|
+
|
|
15253
|
+
**취소 요청 아이디**
|
|
15254
|
+
|
|
15255
|
+
- storeId?: string
|
|
15256
|
+
|
|
15257
|
+
**상점 아이디**
|
|
15258
|
+
|
|
15259
|
+
하위 상점의 취소 요청인 경우 필수로 입력합니다.
|
|
15260
|
+
|
|
15261
|
+
|
|
13122
15262
|
# https://developers.portone.io/opi/ko/integration/pg/v2/welcome
|
|
13123
15263
|
|
|
13124
15264
|
---
|
|
@@ -14065,7 +16205,7 @@ const issueResponse = await axios({
|
|
|
14065
16205
|
**발급 은행**
|
|
14066
16206
|
|
|
14067
16207
|
- 은행코드는 ENUM으로 정의되어 있습니다.
|
|
14068
|
-
- [BANK ENUM 바로가기](https://developers.portone.io/api/rest-v2/
|
|
16208
|
+
- [BANK ENUM 바로가기](https://developers.portone.io/api/rest-v2/payment#Bank)
|
|
14069
16209
|
|
|
14070
16210
|
- expiry: object
|
|
14071
16211
|
|
|
@@ -14954,7 +17094,64 @@ const response = await PortOne.requestPayment({
|
|
|
14954
17094
|
|
|
14955
17095
|
## 3. 결제 완료 처리 (브라우저)
|
|
14956
17096
|
|
|
14957
|
-
|
|
17097
|
+
결제창에서의 작업이 끝나면 완료/실패 여부를 포함한 결과가 전달됩니다. (가상계좌 결제의 경우 완료는 가상계좌 발급 완료를 의미합니다.)
|
|
17098
|
+
|
|
17099
|
+
결과는 리다이렉트 방식 또는 반환값 방식 중 하나로 확인할 수 있습니다.
|
|
17100
|
+
|
|
17101
|
+
- `redirectUrl`이 설정되어 있고 `forceRedirect: true`인 경우 (리다이렉트 방식)
|
|
17102
|
+
- 완료/실패시 `redirectUrl`로 리다이렉트되고, 쿼리 문자열로 결과를 확인합니다.
|
|
17103
|
+
- 하나의 흐름으로 PC와 모바일 결제를 모두 지원할 수 있는 가장 간단한 방식입니다.
|
|
17104
|
+
|
|
17105
|
+
- `redirectUrl`이 설정되지 않은 경우 (반환값 방식)
|
|
17106
|
+
- 완료/실패시 함수의 반환값인 Promise가 리졸브되고, await하여 결과를 확인합니다.
|
|
17107
|
+
- **모바일 결제 UI가 제대로 표시되지 않을 수 있습니다.** PC 결제 UI로 충분할 때에만 사용하십시오.
|
|
17108
|
+
- KG이니시스 일본 결제 등 몇몇 결제 수단의 경우 PC에서도 리다이렉트가 강제되어 이 흐름을 사용할 수 없습니다.
|
|
17109
|
+
|
|
17110
|
+
- `redirectUrl`이 설정되어 있고 `forceRedirect: true`가 아닌 경우 (리다이렉트 또는 반환값 방식)
|
|
17111
|
+
- 환경에 따라 리다이렉트가 일어나는지 반환값이 리졸브되는지가 자동으로 결정됩니다. 코드는 두 흐름 모두 지원해야 합니다.
|
|
17112
|
+
- PC 환경에서는 반환값으로, 모바일 환경에서는 리다이렉트로 결과를 확인하여 최적화된 경험을 제공하고 싶을 때 사용하십시오.
|
|
17113
|
+
|
|
17114
|
+
리다이렉트 방식과 반환값 방식에 대한 자세한 설명은 아래를 참고하세요.
|
|
17115
|
+
|
|
17116
|
+
### 3-1. 리다이렉트 방식의 경우
|
|
17117
|
+
|
|
17118
|
+
결제창에서의 작업이 끝나면 지정한 `redirectUrl`로 리다이렉트됩니다. 이 경우에는 함수 호출 결과를 이용할 수 없고,
|
|
17119
|
+
결제 성공 여부 등은 [쿼리 문자열](http://en.wikipedia.org/wiki/Query_string)로 전달받게 됩니다.
|
|
17120
|
+
|
|
17121
|
+
리다이렉트 방식 결제 지원을 위해, 모바일 환경을 지원해야 하는 경우 **`redirectUrl`을 꼭 지정하여** 호출하여야 합니다.
|
|
17122
|
+
지정하지 않은 경우 모바일 결제 UI가 표시되지 않을 수 있습니다.
|
|
17123
|
+
|
|
17124
|
+
<div class="hint" data-style="warning">
|
|
17125
|
+
|
|
17126
|
+
`redirectUrl`은 `https://` 또는 `http://`로 시작해야 합니다.
|
|
17127
|
+
|
|
17128
|
+
</div>
|
|
17129
|
+
|
|
17130
|
+
```ts
|
|
17131
|
+
PortOne.requestPayment({
|
|
17132
|
+
/* 파라미터 생략 */
|
|
17133
|
+
redirectUrl: `${BASE_URL}/payment-redirect`,
|
|
17134
|
+
forceRedirect: true, // 리다이렉트 방식만 사용하기 위한 설정
|
|
17135
|
+
});
|
|
17136
|
+
```
|
|
17137
|
+
|
|
17138
|
+
쿼리 문자열로 전달되는 주요 필드는 다음과 같습니다.
|
|
17139
|
+
전체 필드 목록은 [requestPayment 응답 형식](https://developers.portone.io/sdk/ko/v2-sdk/payment-response)을 참조해 주시기 바랍니다.
|
|
17140
|
+
|
|
17141
|
+
|키 |설명 |비고 |
|
|
17142
|
+
|---------|-------------------|----------------------------|
|
|
17143
|
+
|paymentId|결제 건 ID |공통 |
|
|
17144
|
+
|code |오류 코드 |실패 시 |
|
|
17145
|
+
|message |오류 문구 |실패 시 |
|
|
17146
|
+
|pgCode |PG 오류 코드 그대로|실패 및 PG 오류 코드 존재 시|
|
|
17147
|
+
|pgMessage|PG 오류 문구 그대로|실패 및 PG 오류 문구 존재 시|
|
|
17148
|
+
|
|
17149
|
+
예를 들어 paymentId가 `payment-39ecfa97`, redirectUrl이 `https://example.com/payment-redirect`인 경우,
|
|
17150
|
+
결제 성공 시에 `https://example.com/payment-redirect?paymentId=payment-39ecfa97`로 리다이렉트됩니다.
|
|
17151
|
+
|
|
17152
|
+
### 3-2. 반환값 방식의 경우
|
|
17153
|
+
|
|
17154
|
+
`PortOne.requestPayment()` 함수의 반환값인 프로미스를 통해 결제 요청의 결과를 확인합니다.
|
|
14958
17155
|
|
|
14959
17156
|
`code`가 있으면 결제 과정에서 오류가 발생한 것이므로 적절히 처리하여야 합니다.
|
|
14960
17157
|
|
|
@@ -14995,36 +17192,9 @@ async function requestPayment() {
|
|
|
14995
17192
|
|pgCode |PG 오류 코드 그대로|실패 및 PG 오류 코드 존재 시|
|
|
14996
17193
|
|pgMessage|PG 오류 문구 그대로|실패 및 PG 오류 문구 존재 시|
|
|
14997
17194
|
|
|
14998
|
-
### 3-1. redirect 방식의 경우
|
|
14999
|
-
|
|
15000
|
-
모바일 환경에서의 결제는 대부분 redirect 방식으로 이루어집니다. redirect 방식에서는 브라우저가 결제창으로 리다이렉트되었다가, 결제창에서의 작업이 끝나면
|
|
15001
|
-
지정한 `redirectUrl`로 다시 리다이렉트됩니다. 이 경우에는 함수 호출 결과를 이용할 수 없고,
|
|
15002
|
-
결제 성공 여부 등은 [쿼리 문자열](http://en.wikipedia.org/wiki/Query_string)로 전달받게 됩니다.
|
|
15003
|
-
|
|
15004
|
-
```ts
|
|
15005
|
-
PortOne.requestPayment({
|
|
15006
|
-
/* 파라미터 생략 */
|
|
15007
|
-
redirectUrl: `${BASE_URL}/payment-redirect`,
|
|
15008
|
-
});
|
|
15009
|
-
```
|
|
15010
|
-
|
|
15011
|
-
쿼리 문자열로 전달되는 주요 필드는 다음과 같습니다.
|
|
15012
|
-
전체 필드 목록은 [requestPayment 응답 형식](https://developers.portone.io/sdk/ko/v2-sdk/payment-response)을 참조해 주시기 바랍니다.
|
|
15013
|
-
|
|
15014
|
-
|키 |설명 |비고 |
|
|
15015
|
-
|---------|-------------------|----------------------------|
|
|
15016
|
-
|paymentId|결제 건 ID |공통 |
|
|
15017
|
-
|code |오류 코드 |실패 시 |
|
|
15018
|
-
|message |오류 문구 |실패 시 |
|
|
15019
|
-
|pgCode |PG 오류 코드 그대로|실패 및 PG 오류 코드 존재 시|
|
|
15020
|
-
|pgMessage|PG 오류 문구 그대로|실패 및 PG 오류 문구 존재 시|
|
|
15021
|
-
|
|
15022
|
-
예를 들어 paymentId가 `payment-39ecfa97`, redirectUrl이 `https://example.com/payment-redirect`인 경우,
|
|
15023
|
-
결제 성공 시에 `https://example.com/payment-redirect?paymentId=payment-39ecfa97`로 리다이렉트됩니다.
|
|
15024
|
-
|
|
15025
17195
|
## 4. 결제 완료 처리 (서버)
|
|
15026
17196
|
|
|
15027
|
-
|
|
17197
|
+
서버는 포트원의 [결제 조회 API](https://developers.portone.io/api/rest-v2/payment#get%20%2Fpayments%2F%7BpaymentId%7D)를
|
|
15028
17198
|
호출하여 해당 결제 건의 상태를 확인하고 결제 완료 처리를 하여야 합니다.
|
|
15029
17199
|
|
|
15030
17200
|
<div class="hint" data-style="info">
|
|
@@ -17651,7 +19821,7 @@ ni @portone/browser-sdk
|
|
|
17651
19821
|
|
|
17652
19822
|
<div class="hint" data-style="warning">
|
|
17653
19823
|
|
|
17654
|
-
KG이니시스 결제 시
|
|
19824
|
+
KG이니시스 결제 시 구매자 이름, 전화번호, 이메일을 필수로 입력해야 합니다.
|
|
17655
19825
|
|
|
17656
19826
|
</div>
|
|
17657
19827
|
|
|
@@ -17661,7 +19831,7 @@ ni @portone/browser-sdk
|
|
|
17661
19831
|
|
|
17662
19832
|
<div class="hint" data-style="warning">
|
|
17663
19833
|
|
|
17664
|
-
스마트로 결제 시 구매자
|
|
19834
|
+
스마트로 결제 시 구매자 전화번호를 필수로 입력해야 합니다.
|
|
17665
19835
|
|
|
17666
19836
|
</div>
|
|
17667
19837
|
|
|
@@ -17682,7 +19852,7 @@ ni @portone/browser-sdk
|
|
|
17682
19852
|
<div class="hint" data-style="warning">
|
|
17683
19853
|
|
|
17684
19854
|
엑심베이의 경우 구매자 이름과 이메일을 필수로 입력해야 합니다.
|
|
17685
|
-
일본 편의점 결제 사용 시 구매자
|
|
19855
|
+
일본 편의점 결제 사용 시 구매자 전화번호를 필수로 입력해야 합니다.
|
|
17686
19856
|
|
|
17687
19857
|
</div>
|
|
17688
19858
|
|
|
@@ -17714,7 +19884,7 @@ ni @portone/browser-sdk
|
|
|
17714
19884
|
|
|
17715
19885
|
- phoneNumber?: string
|
|
17716
19886
|
|
|
17717
|
-
**구매자
|
|
19887
|
+
**구매자 전화번호**
|
|
17718
19888
|
|
|
17719
19889
|
- email?: string
|
|
17720
19890
|
|
|
@@ -18546,7 +20716,7 @@ ni @portone/browser-sdk
|
|
|
18546
20716
|
|
|
18547
20717
|
- phoneNumber?: string
|
|
18548
20718
|
|
|
18549
|
-
**상점
|
|
20719
|
+
**상점 전화번호**
|
|
18550
20720
|
|
|
18551
20721
|
- address?: string
|
|
18552
20722
|
|
|
@@ -19144,7 +21314,7 @@ versionVariants:
|
|
|
19144
21314
|
|
|
19145
21315
|
포트원 모바일 SDK는 Javascript로 작성된 포트원 V2 SDK를 모바일 환경에서 모바일 플랫폼 네이티브 코드(Kotlin, Swift 등) 으로 사용 가능하도록 만들어진 SDK입니다.
|
|
19146
21316
|
|
|
19147
|
-
현재는 Android, iOS, React Native를 지원하고
|
|
21317
|
+
현재는 Android, iOS, React Native, Flutter를 지원하고 있습니다.
|
|
19148
21318
|
|
|
19149
21319
|
## Android SDK
|
|
19150
21320
|
|
|
@@ -19164,11 +21334,12 @@ React Native 환경에서 사용 가능한 SDK입니다. 해당 Git 레포지토
|
|
|
19164
21334
|
|
|
19165
21335
|
- [GitHub 링크](https://github.com/portone-io/react-native-sdk)
|
|
19166
21336
|
|
|
19167
|
-
## Flutter
|
|
21337
|
+
## Flutter SDK
|
|
19168
21338
|
|
|
19169
|
-
Flutter 환경에서 사용 가능한 SDK
|
|
21339
|
+
Flutter 환경에서 사용 가능한 SDK입니다. V1 및 V2 결제/본인인증을 지원하며, 해당 Git 레포지토리의 README.md 파일을 참고하여 사용하실 수 있습니다.
|
|
19170
21340
|
|
|
19171
|
-
- [GitHub 링크](https://github.com/portone-io/
|
|
21341
|
+
- [GitHub 링크](https://github.com/portone-io/portone_flutter)
|
|
21342
|
+
- [pub.dev 링크](https://pub.dev/packages/portone_flutter)
|
|
19172
21343
|
|
|
19173
21344
|
|
|
19174
21345
|
# https://developers.portone.io/sdk/ko/v2-sdk/billing-key-and-pay-request
|
|
@@ -21167,7 +23338,7 @@ title: 전자결제 신청
|
|
|
21167
23338
|
description: 결제대행사 및 결제수단을 선택하고 전자결제를 신청하는 과정을 안내합니다.
|
|
21168
23339
|
---
|
|
21169
23340
|
|
|
21170
|
-
포트원 관리자콘솔에서 [로그인](https://admin.portone.io/auth/signin)을 한 뒤 좌측
|
|
23341
|
+
포트원 관리자콘솔에서 [로그인](https://admin.portone.io/auth/signin)을 한 뒤 좌측 하단에 있는
|
|
21171
23342
|
**\[전자결제 신청]** 버튼을 클릭하면 고객사가 사용하고자 하는 모든 결제 수단과 이를 지원하는 결제대행사를
|
|
21172
23343
|
신청할 수 있는 페이지로 이동합니다.
|
|
21173
23344
|
|
|
@@ -24344,7 +26515,7 @@ API 빌링키 발급 요청 시 스마트 라우팅 그룹 아이디를 지정
|
|
|
24344
26515
|
- **다날** : 카드 / 실시간 계좌이체 / 가상계좌 / 휴대폰 소액결제
|
|
24345
26516
|
- **키움페이** : 카드 / 실시간 계좌이체 / 가상계좌
|
|
24346
26517
|
- **헥토파이낸셜** : 카드 / 실시간 계좌이체 / 가상계좌 / 휴대폰 소액결제
|
|
24347
|
-
- **KG
|
|
26518
|
+
- **KG파이낸셜** : 카드 / 실시간 계좌이체 / 가상계좌 / 휴대폰 소액결제
|
|
24348
26519
|
- **KSNET** : 카드 / 실시간 계좌이체 / 가상계좌 / 휴대폰 소액결제
|
|
24349
26520
|
- **이지페이(KICC)** : 카드 / 실시간 계좌이체 / 가상계좌 / 휴대폰 소액결제
|
|
24350
26521
|
- **웰컴페이먼츠** : 카드 / 실시간 계좌이체 / 가상계좌 / 휴대폰 소액결제
|
|
@@ -24592,6 +26763,21 @@ targetVersions:
|
|
|
24592
26763
|
|
|
24593
26764
|
<details>
|
|
24594
26765
|
|
|
26766
|
+
<summary>갤럭시아머니트리</summary>
|
|
26767
|
+
|
|
26768
|
+
1. [갤럭시아머니트리 가맹점 관리자](https://cpadmin.billgate.net) 접속 후 로그인을 합니다.
|
|
26769
|
+
2. \[기술지원]→\[암호화 정보 확인]을 클릭합니다.
|
|
26770
|
+
3. \[상용서버] 또는 \[테스트서버]를 선택합니다.
|
|
26771
|
+
4. MID, KEY, IV 값을 확인할 수 있습니다.
|
|
26772
|
+
|
|
26773
|
+
(이미지 첨부: 갤럭시아머니트리 BillGate 내 암호화 정보 확인 화면)
|
|
26774
|
+
|
|
26775
|
+
5. 포트원 콘솔에서 채널 추가 시 \[MID], \[KEY], \[IV]를 입력한 후 `저장`을 클릭합니다.
|
|
26776
|
+
|
|
26777
|
+
</details>
|
|
26778
|
+
|
|
26779
|
+
<details>
|
|
26780
|
+
|
|
24595
26781
|
<summary>나이스정보통신</summary>
|
|
24596
26782
|
|
|
24597
26783
|
<div class="hint" data-style="info">
|
|
@@ -24670,9 +26856,9 @@ targetVersions:
|
|
|
24670
26856
|
|
|
24671
26857
|
<details>
|
|
24672
26858
|
|
|
24673
|
-
<summary
|
|
26859
|
+
<summary>KG파이낸셜</summary>
|
|
24674
26860
|
|
|
24675
|
-
포트원 콘솔에서 채널 추가 시 계약 완료 후
|
|
26861
|
+
포트원 콘솔에서 채널 추가 시 계약 완료 후 KG파이낸셜로부터 전달받은 \[서비스ID]를 입력한 후 `저장`을 클릭합니다.
|
|
24676
26862
|
|
|
24677
26863
|
<div class="hint" data-style="info">
|
|
24678
26864
|
|
|
@@ -24760,6 +26946,8 @@ targetVersions:
|
|
|
24760
26946
|
|
|
24761
26947
|
<summary>키움페이</summary>
|
|
24762
26948
|
|
|
26949
|
+
#### 채널 설정
|
|
26950
|
+
|
|
24763
26951
|
1. [키움페이 상점관리자](http://agent.kiwoompay.co.kr/) 접속 후 로그인을 합니다.
|
|
24764
26952
|
2. \[고객지원]→\[기술지원]→\[연동정보설정]를 클릭합니다.
|
|
24765
26953
|
3. CPID를 선택하여 `조회하기`를 클릭합니다.
|
|
@@ -24770,6 +26958,19 @@ targetVersions:
|
|
|
24770
26958
|
|
|
24771
26959
|
6. 포트원 콘솔에서 채널 추가 시 \[CPID], \[결제연동키]를 입력한 후 `저장`을 클릭합니다.
|
|
24772
26960
|
|
|
26961
|
+
#### 결제 결과 통보 URL 설정
|
|
26962
|
+
|
|
26963
|
+
키움페이에서 포트원으로 결제 결과를 전달받기 위해 통보 URL을 설정해야 합니다.
|
|
26964
|
+
|
|
26965
|
+
1. [키움페이 상점관리자](http://agent.kiwoompay.co.kr/) 접속 후 로그인을 합니다.
|
|
26966
|
+
2. \[고객지원]→\[기술지원]→\[연동정보설정]를 클릭합니다.
|
|
26967
|
+
3. CPID를 선택하여 `조회하기`를 클릭합니다.
|
|
26968
|
+
4. 결제수단을 선택합니다.
|
|
26969
|
+
5. `결제 통지URL` 항목에 `https://service.iamport.kr/daou_payments/result`를 입력합니다.
|
|
26970
|
+
6. `취소통지사용여부` 항목을 `아니오`로 설정합니다.
|
|
26971
|
+
|
|
26972
|
+
(이미지 첨부: 키움페이 상점관리자 내 통보 URL 설정 화면)
|
|
26973
|
+
|
|
24773
26974
|
</details>
|
|
24774
26975
|
|
|
24775
26976
|
<!-- VERSION-SPECIFIC: V1 ONLY CONTENT END -->
|
|
@@ -24854,63 +27055,8 @@ targetVersions:
|
|
|
24854
27055
|
|
|
24855
27056
|
<div class="tabs-content" data-title="결제창 일반/정기 결제">
|
|
24856
27057
|
|
|
24857
|
-
|
|
24858
|
-
|
|
24859
|
-
<div class="hint" data-style="info">
|
|
24860
|
-
|
|
24861
|
-
- **INILite Key**는 정기결제 시 필수로 입력해야 합니다.
|
|
24862
|
-
- **INIAPI Key**, **INIAPI IV** 하위 상점 관련 API 사용시 필수로 입력해야 합니다. [영수증 내 하위 상점 거래 등록 API 바로가기](/api/rest-v1/partner#post%20%2Fpartners%2Freceipts%2F%7Bimp_uid%7D)
|
|
24863
|
-
|
|
24864
|
-
</div>
|
|
24865
|
-
|
|
24866
|
-
<!-- VERSION-SPECIFIC: V1 ONLY CONTENT END -->
|
|
24867
|
-
|
|
24868
|
-
<!-- VERSION-SPECIFIC: V2 ONLY CONTENT START -->
|
|
24869
|
-
|
|
24870
|
-
<div class="hint" data-style="info">
|
|
24871
|
-
|
|
24872
|
-
크레덴셜 중 **hashKey** 는 선택사항으로, KG이니시스에서 제공하는 모바일 금액위변조 방지 기능 사용을 원하실 경우 입력하시면 됩니다.
|
|
24873
|
-
|
|
24874
|
-
</div>
|
|
24875
|
-
|
|
24876
|
-
<!-- VERSION-SPECIFIC: V2 ONLY CONTENT END -->
|
|
24877
|
-
|
|
24878
|
-
1. [KG이니시스 가맹점관리자](http://iniweb.inicis.com/security/login.do) 접속 후 로그인을 합니다.
|
|
24879
|
-
|
|
24880
|
-
2. \[상점정보]→\[계약정보]→\[부가정보]를 클릭합니다.
|
|
24881
|
-
|
|
24882
|
-
3. 아래의 크레덴셜 값들을 확인합니다. 값이 표시되지 않는 경우 생성/갱신 버튼을 클릭해 주세요.
|
|
24883
|
-
|
|
24884
|
-
<ul>
|
|
24885
|
-
|
|
24886
|
-
<li>**웹결제 signkey 생성 조회**의 조회 버튼을 클릭하여 값을 확인할 수 있습니다.</li>
|
|
24887
|
-
<li>**INIAPI key 생성 갱신**의 조회 버튼을 클릭하여 \[INIAPI KEY], \[INIAPI IV] 값을 확인할 수 있습니다.</li>
|
|
24888
|
-
|
|
24889
|
-
<!-- VERSION-SPECIFIC: V2 ONLY CONTENT START -->
|
|
24890
|
-
|
|
24891
|
-
<li>**모바일 금액위변조 HashKey**의 조회 버튼을 클릭하여 값을 확인할 수 있습니다.</li>
|
|
24892
|
-
|
|
24893
|
-
<!-- VERSION-SPECIFIC: V2 ONLY CONTENT END -->
|
|
24894
|
-
|
|
24895
|
-
</ul>
|
|
24896
|
-
|
|
24897
|
-
(이미지 첨부: KG이니시스 가맹점관리자 내 크레덴셜 정보 조회 화면 1)
|
|
24898
|
-
|
|
24899
|
-
4. INILite Key의 조회 버튼을 클릭하여 값을 확인할 수 있습니다.
|
|
24900
|
-
|
|
24901
|
-
(이미지 첨부: KG이니시스 가맹점관리자 내 크레덴셜 정보 조회 화면 2)
|
|
24902
|
-
|
|
24903
|
-
5. 포트원 콘솔에서 채널 추가 시 \[상점아이디]와 위 과정에서 발급받은 크레덴셜 값들을 입력한 후 `저장`을 클릭합니다.
|
|
24904
|
-
|
|
24905
|
-
<!-- VERSION-SPECIFIC: V1 ONLY CONTENT START -->
|
|
24906
|
-
|
|
24907
|
-
<div class="hint" data-style="warning">
|
|
24908
|
-
|
|
24909
|
-
포트원 V1 결제모듈을 사용하시는 경우 KG이니시스로부터 전달받은 키파일을 별도로 등록해야 합니다. 키파일 등록과 관련하여 문의사항이 있는 경우 채널톡으로 문의해주세요.
|
|
24910
|
-
|
|
24911
|
-
</div>
|
|
24912
|
-
|
|
24913
|
-
<!-- VERSION-SPECIFIC: V1 ONLY CONTENT END -->
|
|
27058
|
+
1. KG이니시스 계약 완료 이후, 이니시스로부터 전달 받은 MID, INIAPI Key, CBT 타입 값을 포트원 콘솔에서 채널 추가 시
|
|
27059
|
+
`[PG상점아이디 (MID)]`, `[INIAPI Key]`, `[CBT Type]` 항목에 입력 혹은 선택 후 저장을 클릭합니다.
|
|
24914
27060
|
|
|
24915
27061
|
</div>
|
|
24916
27062
|
|
|
@@ -24972,63 +27118,8 @@ DI\_CODE는 12자리로 고객사에서 자체적으로 사이트(서비스)를
|
|
|
24972
27118
|
|
|
24973
27119
|
<div class="tabs-content" data-title="결제창 일반/정기 결제">
|
|
24974
27120
|
|
|
24975
|
-
|
|
24976
|
-
|
|
24977
|
-
<div class="hint" data-style="info">
|
|
24978
|
-
|
|
24979
|
-
- **INILite Key**는 정기결제 시 필수로 입력해야 합니다.
|
|
24980
|
-
- **INIAPI Key**, **INIAPI IV** 하위 상점 관련 API 사용시 필수로 입력해야 합니다. [영수증 내 하위 상점 거래 등록 API 바로가기](/api/rest-v1/partner#post%20%2Fpartners%2Freceipts%2F%7Bimp_uid%7D)
|
|
24981
|
-
|
|
24982
|
-
</div>
|
|
24983
|
-
|
|
24984
|
-
<!-- VERSION-SPECIFIC: V1 ONLY CONTENT END -->
|
|
24985
|
-
|
|
24986
|
-
<!-- VERSION-SPECIFIC: V2 ONLY CONTENT START -->
|
|
24987
|
-
|
|
24988
|
-
<div class="hint" data-style="info">
|
|
24989
|
-
|
|
24990
|
-
크레덴셜 중 **hashKey** 는 선택사항으로, KG이니시스에서 제공하는 모바일 금액위변조 방지 기능 사용을 원하실 경우 입력하시면 됩니다.
|
|
24991
|
-
|
|
24992
|
-
</div>
|
|
24993
|
-
|
|
24994
|
-
<!-- VERSION-SPECIFIC: V2 ONLY CONTENT END -->
|
|
24995
|
-
|
|
24996
|
-
1. [KG이니시스 가맹점관리자](http://iniweb.inicis.com/security/login.do) 접속 후 로그인을 합니다.
|
|
24997
|
-
|
|
24998
|
-
2. \[상점정보]→\[계약정보]→\[부가정보]를 클릭합니다.
|
|
24999
|
-
|
|
25000
|
-
3. 아래의 크레덴셜 값들을 확인합니다. 값이 표시되지 않는 경우 생성/갱신 버튼을 클릭해 주세요.
|
|
25001
|
-
|
|
25002
|
-
<ul>
|
|
25003
|
-
|
|
25004
|
-
<li>**웹결제 signkey 생성 조회**의 조회 버튼을 클릭하여 값을 확인할 수 있습니다.</li>
|
|
25005
|
-
<li>**INIAPI key 생성 갱신**의 조회 버튼을 클릭하여 \[INIAPI KEY], \[INIAPI IV] 값을 확인할 수 있습니다.</li>
|
|
25006
|
-
|
|
25007
|
-
<!-- VERSION-SPECIFIC: V2 ONLY CONTENT START -->
|
|
25008
|
-
|
|
25009
|
-
<li>**모바일 금액위변조 HashKey**의 조회 버튼을 클릭하여 값을 확인할 수 있습니다.</li>
|
|
25010
|
-
|
|
25011
|
-
<!-- VERSION-SPECIFIC: V2 ONLY CONTENT END -->
|
|
25012
|
-
|
|
25013
|
-
</ul>
|
|
25014
|
-
|
|
25015
|
-
(이미지 첨부: KG이니시스 가맹점관리자 내 크레덴셜 정보 조회 화면 1)
|
|
25016
|
-
|
|
25017
|
-
4. INILite Key의 조회 버튼을 클릭하여 값을 확인할 수 있습니다.
|
|
25018
|
-
|
|
25019
|
-
(이미지 첨부: KG이니시스 가맹점관리자 내 크레덴셜 정보 조회 화면 2)
|
|
25020
|
-
|
|
25021
|
-
5. 포트원 콘솔에서 채널 추가 시 \[상점아이디]와 위 과정에서 발급받은 크레덴셜 값들을 입력한 후 `저장`을 클릭합니다.
|
|
25022
|
-
|
|
25023
|
-
<!-- VERSION-SPECIFIC: V1 ONLY CONTENT START -->
|
|
25024
|
-
|
|
25025
|
-
<div class="hint" data-style="warning">
|
|
25026
|
-
|
|
25027
|
-
포트원 V1 결제모듈을 사용하시는 경우 KG이니시스로부터 전달받은 키파일을 별도로 등록해야 합니다. 키파일 등록과 관련하여 문의사항이 있는 경우 채널톡으로 문의해주세요.
|
|
25028
|
-
|
|
25029
|
-
</div>
|
|
25030
|
-
|
|
25031
|
-
<!-- VERSION-SPECIFIC: V1 ONLY CONTENT END -->
|
|
27121
|
+
1. KG이니시스 계약 완료 이후, 이니시스로부터 전달 받은 MID, INIAPI Key, CBT 타입 값을 포트원 콘솔에서 채널 추가 시
|
|
27122
|
+
`[PG상점아이디 (MID)]`, `[INIAPI Key]`, `[CBT Type]` 항목에 입력 혹은 선택 후 저장을 클릭합니다.
|
|
25032
27123
|
|
|
25033
27124
|
</div>
|
|
25034
27125
|
|
|
@@ -25096,25 +27187,13 @@ DI\_CODE는 12자리로 고객사에서 자체적으로 사이트(서비스)를
|
|
|
25096
27187
|
|
|
25097
27188
|
(이미지 첨부: KCP 파트너관리자 내 관리용 사설인증서 발급 완료 화면)
|
|
25098
27189
|
|
|
25099
|
-
4. \[결제관리]→\[
|
|
25100
|
-
|
|
25101
|
-
5. \[상점정보]→\[사이트코드]에서 그룹등록할 사이트코드를 선택합니다.
|
|
25102
|
-
|
|
25103
|
-
6. \[그룹정보]에서 \[유형3]을 선택한 후 원하는 그룹명을 입력합니다.
|
|
25104
|
-
|
|
25105
|
-
7. \[결제입력 정보]에서 \[결제유형] 및 \[납부유형]을 확인하시고 고객사 유형에 맞게 선택합니다.
|
|
25106
|
-
|
|
25107
|
-
8. \[고지방법]에서 원하시는 고지 방법을 선택한 후 \[등록하기]를 클릭합니다.
|
|
27190
|
+
4. \[결제관리]→\[자동결제]→\[그룹관리]→\[그룹등록]을 클릭합니다.
|
|
25108
27191
|
|
|
25109
|
-
|
|
27192
|
+
5. 그룹명을 입력 후 그룹을 생성하고 생성된 그룹아이디를 확인합니다.
|
|
25110
27193
|
|
|
25111
|
-
|
|
25112
|
-
|
|
25113
|
-
10. \[사이트코드]에서 사용한 사이트코드를 선택한 후 \[검색]을 클릭합니다.
|
|
25114
|
-
|
|
25115
|
-
(이미지 첨부: KCP 파트너관리자 내 관리용 그룹조회 화면)
|
|
27194
|
+
(이미지 첨부: KCP 파트너관리자 내 관리용 그룹등록 화면)
|
|
25116
27195
|
|
|
25117
|
-
|
|
27196
|
+
6. 포트원 콘솔에서 채널 추가 시 사이트코드, 사이트키, 앞서 발급한 그룹아이디를 입력한 후 \[저장]을 클릭합니다.
|
|
25118
27197
|
|
|
25119
27198
|
</div>
|
|
25120
27199
|
|
|
@@ -25132,25 +27211,13 @@ DI\_CODE는 12자리로 고객사에서 자체적으로 사이트(서비스)를
|
|
|
25132
27211
|
|
|
25133
27212
|
(이미지 첨부: KCP 파트너관리자 내 관리용 사설인증서 발급 완료 화면)
|
|
25134
27213
|
|
|
25135
|
-
4. \[결제관리]→\[
|
|
25136
|
-
|
|
25137
|
-
5. \[상점정보]→\[사이트코드]에서 그룹등록할 사이트코드를 선택합니다.
|
|
27214
|
+
4. \[결제관리]→\[자동결제]→\[그룹관리]→\[그룹등록]을 클릭합니다.
|
|
25138
27215
|
|
|
25139
|
-
|
|
27216
|
+
5. 그룹명을 입력 후 그룹을 생성하고 생성된 그룹아이디를 확인합니다.
|
|
25140
27217
|
|
|
25141
|
-
|
|
25142
|
-
|
|
25143
|
-
8. \[고지방법]에서 원하시는 고지 방법을 선택한 후 \[등록하기]를 클릭합니다.
|
|
25144
|
-
|
|
25145
|
-
(이미지 첨부: KCP 파트너관리자 내 관리용 그룹등록 화면)
|
|
27218
|
+
(이미지 첨부: KCP 파트너관리자 내 관리용 그룹등록 화면)
|
|
25146
27219
|
|
|
25147
|
-
|
|
25148
|
-
|
|
25149
|
-
10. \[사이트코드]에서 사용한 사이트코드를 선택한 후 \[검색]을 클릭합니다.
|
|
25150
|
-
|
|
25151
|
-
(이미지 첨부: KCP 파트너관리자 내 관리용 그룹조회 화면)
|
|
25152
|
-
|
|
25153
|
-
11. 포트원 콘솔에서 채널 추가 시 사이트코드, 사이트키, 앞서 발급한 정기자동결제 그룹아이디를 입력한 후 \[저장]을 클릭합니다.
|
|
27220
|
+
6. 포트원 콘솔에서 채널 추가 시 사이트코드, 사이트키, 앞서 발급한 정기자동결제 그룹아이디를 입력한 후 \[저장]을 클릭합니다.
|
|
25154
27221
|
|
|
25155
27222
|
</div>
|
|
25156
27223
|
|
|
@@ -25215,21 +27282,13 @@ DI\_CODE는 12자리로 고객사에서 자체적으로 사이트(서비스)를
|
|
|
25215
27282
|
9. 정기결제를 이용하시는 경우, 아래 절차를 진행해주세요.
|
|
25216
27283
|
|
|
25217
27284
|
1. [KCP 파트너관리자](http://partner.kcp.co.kr/) 접속 후 로그인을 합니다.
|
|
25218
|
-
2. \[결제관리]→\[
|
|
25219
|
-
3.
|
|
25220
|
-
4. \[그룹정보]에서 \[유형3]을 선택한 후 원하는 그룹명을 입력합니다.
|
|
25221
|
-
5. \[결제입력 정보]에서 \[결제유형] 및 \[납부유형]을 확인하시고 고객사 유형에 맞게 선택합니다.
|
|
25222
|
-
6. \[고지방법]에서 원하시는 고지 방법을 선택한 후 \[등록하기]를 클릭합니다.
|
|
27285
|
+
2. \[결제관리]→\[자동결제]→\[그룹관리]→\[그룹등록]을 클릭합니다.
|
|
27286
|
+
3. 그룹명을 입력 후 그룹을 생성하고 생성된 그룹아이디를 확인합니다.
|
|
25223
27287
|
|
|
25224
27288
|
(이미지 첨부: KCP 파트너관리자 내 관리용 그룹등록 화면)
|
|
25225
27289
|
|
|
25226
|
-
|
|
25227
|
-
|
|
25228
|
-
|
|
25229
|
-
(이미지 첨부: KCP 파트너관리자 내 관리용 그룹조회 화면)
|
|
25230
|
-
|
|
25231
|
-
9. 포트원 콘솔에서 채널 추가 시 앞서 발급한 \[MID(사이트코드)], \[PG-API 인증서키], \[PG-API 개인키],
|
|
25232
|
-
\[개인키 비밀번호], \[정기자동결제 그룹아이디]를 입력한 후 \[저장]을 클릭합니다.
|
|
27290
|
+
4. 포트원 콘솔에서 채널 추가 시 앞서 발급한 \[MID(사이트코드)], \[PG-API 인증서키], \[PG-API 개인키],
|
|
27291
|
+
\[개인키 비밀번호], \[자동결제 그룹아이디]를 입력한 후 \[저장]을 클릭합니다.
|
|
25233
27292
|
|
|
25234
27293
|
<!-- VERSION-SPECIFIC: V2 ONLY CONTENT END -->
|
|
25235
27294
|
|
|
@@ -25324,10 +27383,10 @@ PG 거래대사 메뉴를 사용하시는 경우 \[대사 시크릿 키] 항목
|
|
|
25324
27383
|
|
|
25325
27384
|
</details>
|
|
25326
27385
|
|
|
25327
|
-
<!-- VERSION-SPECIFIC: V1 ONLY CONTENT START -->
|
|
25328
|
-
|
|
25329
27386
|
<details>
|
|
25330
27387
|
|
|
27388
|
+
<!-- VERSION-SPECIFIC: V1 ONLY CONTENT START -->
|
|
27389
|
+
|
|
25331
27390
|
<summary>페이먼트월</summary>
|
|
25332
27391
|
|
|
25333
27392
|
1. [페이먼트월](http://api.paymentwall.com/developers/applications) 접속 후 로그인을 합니다.
|
|
@@ -25355,10 +27414,41 @@ PG 거래대사 메뉴를 사용하시는 경우 \[대사 시크릿 키] 항목
|
|
|
25355
27414
|
|
|
25356
27415
|
(이미지 첨부: 페이먼트월 Pingback 설정 화면)
|
|
25357
27416
|
|
|
25358
|
-
</details>
|
|
25359
|
-
|
|
25360
27417
|
<!-- VERSION-SPECIFIC: V1 ONLY CONTENT END -->
|
|
25361
27418
|
|
|
27419
|
+
<!-- VERSION-SPECIFIC: V2 ONLY CONTENT START -->
|
|
27420
|
+
|
|
27421
|
+
<summary>페이먼트월</summary>
|
|
27422
|
+
|
|
27423
|
+
1. [페이먼트월](http://api.paymentwall.com/developers/applications) 접속 후 로그인을 합니다.
|
|
27424
|
+
2. \[My Projects]를 클릭합니다.
|
|
27425
|
+
|
|
27426
|
+
(이미지 첨부: 페이먼트월 페이지 내 Key 조회 화면)
|
|
27427
|
+
|
|
27428
|
+
3. 포트원 콘솔에서 채널 추가 시 \[Project Key], \[Secret Key]를 입력한 후 `저장`을 클릭합니다.
|
|
27429
|
+
|
|
27430
|
+
#### 핑백(Pingback) URL 설정하기
|
|
27431
|
+
|
|
27432
|
+
페이먼트월에서 포트원으로 결제 결과를 전달받기 위해 핑백 URL을 설정해야 합니다.
|
|
27433
|
+
|
|
27434
|
+
1. [페이먼트월](https://api.paymentwall.com/developers/applications) 페이지에서 \[My Projects]를 클릭합니다.
|
|
27435
|
+
|
|
27436
|
+
(이미지 첨부: 페이먼트월 My Projects 메뉴)
|
|
27437
|
+
|
|
27438
|
+
2. 사용할 프로젝트의 \[Settings] 탭을 클릭합니다.
|
|
27439
|
+
|
|
27440
|
+
(이미지 첨부: 페이먼트월 프로젝트 setting 탭)
|
|
27441
|
+
|
|
27442
|
+
3. \[Pingback type]을 `URL`로 선택합니다.
|
|
27443
|
+
4. \[Pingback URL]에 `https://tx-gateway-service.prod.iamport.co/paymentwall`를 입력합니다.
|
|
27444
|
+
5. \[Pingback signature version]을 `3`으로 설정합니다.
|
|
27445
|
+
|
|
27446
|
+
(이미지 첨부: 페이먼트월 Pingback 설정 화면)
|
|
27447
|
+
|
|
27448
|
+
<!-- VERSION-SPECIFIC: V2 ONLY CONTENT END -->
|
|
27449
|
+
|
|
27450
|
+
</details>
|
|
27451
|
+
|
|
25362
27452
|
<details>
|
|
25363
27453
|
|
|
25364
27454
|
<summary>페이팔</summary>
|
|
@@ -25469,6 +27559,36 @@ PG 거래대사 메뉴를 사용하시는 경우 \[대사 시크릿 키] 항목
|
|
|
25469
27559
|
|
|
25470
27560
|
</details>
|
|
25471
27561
|
|
|
27562
|
+
<details>
|
|
27563
|
+
|
|
27564
|
+
<!-- VERSION-SPECIFIC: V2 ONLY CONTENT START -->
|
|
27565
|
+
|
|
27566
|
+
<summary>Triple-A</summary>
|
|
27567
|
+
|
|
27568
|
+
1. Triple-A 대시보드의 API Credentials 페이지로 이동합니다.
|
|
27569
|
+
2. `+ Create credentials` 버튼을 클릭하여 Client ID와 Client Secret을 생성합니다.
|
|
27570
|
+
3. API IDs 리스트에서 Merchant key를 확인합니다.
|
|
27571
|
+
4. 포트원 콘솔에서 채널 추가 시 확인한 Merchant Key를 PG 상점아이디에 입력하고, Client ID와 Client Secret을 입력한 후 `저장`을 클릭합니다.
|
|
27572
|
+
|
|
27573
|
+
<div class="hint" data-style="info">
|
|
27574
|
+
|
|
27575
|
+
테스트 환경에서는 Testnet3 testBTC로만 결제가 가능합니다.
|
|
27576
|
+
|
|
27577
|
+
</div>
|
|
27578
|
+
|
|
27579
|
+
<!-- VERSION-SPECIFIC: V2 ONLY CONTENT END -->
|
|
27580
|
+
|
|
27581
|
+
</details>
|
|
27582
|
+
|
|
27583
|
+
<details>
|
|
27584
|
+
|
|
27585
|
+
<summary>이지페이(KICC)</summary>
|
|
27586
|
+
|
|
27587
|
+
1. KICC 계약 완료 이후, KICC로부터 전달 받은 MID, 가맹점 암호키 값을 포트원 콘솔에서 채널 추가 시
|
|
27588
|
+
`[가맹점 ID]`, `[암복호화 키]` 항목에 입력한 후 저장을 클릭합니다.
|
|
27589
|
+
|
|
27590
|
+
</details>
|
|
27591
|
+
|
|
25472
27592
|
## <span id="integration-identifiers">4. 포트원 연동정보 확인하기</span>
|
|
25473
27593
|
|
|
25474
27594
|
포트원을 이용한 결제 연동 시 필요한 연동정보를 확인합니다.
|
|
@@ -25541,6 +27661,48 @@ targetVersions:
|
|
|
25541
27661
|
- v2
|
|
25542
27662
|
---
|
|
25543
27663
|
|
|
27664
|
+
## AI Codemate
|
|
27665
|
+
|
|
27666
|
+
AI Codemate 는 Claude Code를 사용하여 작업자의 프로젝트 환경을 AI를 통해 분석해 맞춤형 결제 연동 코드를 생성하고,
|
|
27667
|
+
기존 연동 코드를 검토하는 기능을 제공합니다.
|
|
27668
|
+
[(GitHub 저장소 바로가기)](https://github.com/portone-io/portone-cli)
|
|
27669
|
+
|
|
27670
|
+
플러그인은 포트원 MCP 서버를 기반으로 공식 문서와 API 스펙을 활용하여 정확한 코드를 생성합니다.
|
|
27671
|
+
|
|
27672
|
+
### 설치 방법
|
|
27673
|
+
|
|
27674
|
+
Node.js 22.6.0 이상이 설치된 환경에서 다음 명령어를 실행합니다:
|
|
27675
|
+
|
|
27676
|
+
```bash
|
|
27677
|
+
npx @portone/cli@latest setup
|
|
27678
|
+
```
|
|
27679
|
+
|
|
27680
|
+
<div class="hint" data-style="info">
|
|
27681
|
+
|
|
27682
|
+
명령어 실행 시 사용자의 Claude Code에 포트원 Claude 플러그인이 자동으로 등록됩니다.
|
|
27683
|
+
|
|
27684
|
+
</div>
|
|
27685
|
+
|
|
27686
|
+
### 사용 방법
|
|
27687
|
+
|
|
27688
|
+
#### 결제 연동 코드 생성
|
|
27689
|
+
|
|
27690
|
+
Claude Code에서 `/portone-integration:start` 명령어를 입력하면 대화형으로 결제 연동 코드를 생성할 수 있습니다.
|
|
27691
|
+
|
|
27692
|
+
```bash
|
|
27693
|
+
/portone-integration:start # 대화형으로 모든 옵션 선택
|
|
27694
|
+
```
|
|
27695
|
+
|
|
27696
|
+
### 지원 범위
|
|
27697
|
+
|
|
27698
|
+
Claude Code에서 사용하는 모델이 지원하는 모든 프레임워크와 언어를 지원합니다.
|
|
27699
|
+
|
|
27700
|
+
<div class="hint" data-style="warning">
|
|
27701
|
+
|
|
27702
|
+
신규 프로젝트의 경우 V2 사용을 권장합니다. V1은 레거시 프로젝트 유지보수 용도로 지원됩니다.
|
|
27703
|
+
|
|
27704
|
+
</div>
|
|
27705
|
+
|
|
25544
27706
|
## 포트원 MCP (Model Context Protocol) 서버
|
|
25545
27707
|
|
|
25546
27708
|
포트원은 쉬운 연동과 빠른 개발을 위해 MCP 서버를 제공합니다. [(GitHub 저장소 바로가기)](https://github.com/portone-io/mcp-server)
|
|
@@ -26049,7 +28211,7 @@ targetVersions:
|
|
|
26049
28211
|
|
|
26050
28212
|
<span>API 문서 바로가기</span>
|
|
26051
28213
|
|
|
26052
|
-
<i class="
|
|
28214
|
+
<i class="icon-[ic--baseline-chevron-right] inline-block text-2xl" />
|
|
26053
28215
|
|
|
26054
28216
|
</a>
|
|
26055
28217
|
|
|
@@ -26061,7 +28223,7 @@ targetVersions:
|
|
|
26061
28223
|
|
|
26062
28224
|
<span>API 문서 바로가기</span>
|
|
26063
28225
|
|
|
26064
|
-
<i class="
|
|
28226
|
+
<i class="icon-[ic--baseline-chevron-right] inline-block text-2xl" />
|
|
26065
28227
|
|
|
26066
28228
|
</a>
|
|
26067
28229
|
|
|
@@ -26957,6 +29119,10 @@ description: 파트너 정산 자동화 솔루션에서 자주 사용되는 용
|
|
|
26957
29119
|
|
|
26958
29120
|
## **공통 용어**
|
|
26959
29121
|
|
|
29122
|
+
### 정산
|
|
29123
|
+
|
|
29124
|
+
포트원 콘솔에서는 '정산'을 '파트너에게 지급할 금액을 산출하는 과정'으로 정의합니다.
|
|
29125
|
+
|
|
26960
29126
|
### 고객사 / 파트너
|
|
26961
29127
|
|
|
26962
29128
|
고객사는 포트원의 결제서비스를 이용하고 있는 포트원의 고객을 의미합니다.
|
|
@@ -26977,6 +29143,18 @@ description: 파트너 정산 자동화 솔루션에서 자주 사용되는 용
|
|
|
26977
29143
|
|
|
26978
29144
|
</div>
|
|
26979
29145
|
|
|
29146
|
+
### 전 영업일
|
|
29147
|
+
|
|
29148
|
+
선택한 날짜가 공휴일인 경우, 그 이전의 가장 가까운 영업일을 의미합니다.
|
|
29149
|
+
|
|
29150
|
+
### 후 영업일
|
|
29151
|
+
|
|
29152
|
+
선택한 날짜가 공휴일인 경우, 그 이후의 가장 가까운 영업일을 의미합니다.
|
|
29153
|
+
|
|
29154
|
+
### 달력일
|
|
29155
|
+
|
|
29156
|
+
영업일과 관계없이 선택한 날짜를 의미합니다. 주말과 공휴일도 포함됩니다.
|
|
29157
|
+
|
|
26980
29158
|
---
|
|
26981
29159
|
|
|
26982
29160
|
## **정산금 계산 자동화 용어**
|
|
@@ -26994,6 +29172,32 @@ description: 파트너 정산 자동화 솔루션에서 자주 사용되는 용
|
|
|
26994
29172
|
|
|
26995
29173
|
소득자(개인 파트너)가 자신의 세금을 직접 납부하지 않고, 원천징수 대상소득을 지급하는 원천징수 의무자(플랫폼사)가 그 금액을 미리 떼어서 대신 납부하는 세금입니다. 원천 징수세는 계약 등록에서 미리 설정할 수 있습니다.
|
|
26996
29174
|
|
|
29175
|
+
### 정산 파라미터
|
|
29176
|
+
|
|
29177
|
+
정산 금액을 계산하기 위해 시스템에 전달되는 데이터 변수들을 의미합니다. 정산 파라미터는 플랫폼 프로모션, 수수료율 등 다양한 요소를 포함할 수 있으며, 이를 기반으로 정산금 계산식을 만들 수 있습니다.
|
|
29178
|
+
|
|
29179
|
+
### 정산 시작일
|
|
29180
|
+
|
|
29181
|
+
정산 주기를 계산하기 위한 기점이 되는 날짜입니다. 일반적으로 결제 완료 시점 또는 구매 확정 시점으로 설정합니다.
|
|
29182
|
+
|
|
29183
|
+
### 정산일
|
|
29184
|
+
|
|
29185
|
+
정산금 지급이 가능해지는 시점입니다.
|
|
29186
|
+
|
|
29187
|
+
<div class="hint" data-style="Info">
|
|
29188
|
+
|
|
29189
|
+
정산일 = 정산 시작일 + 보류일
|
|
29190
|
+
|
|
29191
|
+
</div>
|
|
29192
|
+
|
|
29193
|
+
### 부가세 부담 주체
|
|
29194
|
+
|
|
29195
|
+
플랫폼에서 부과하는 중개 수수료에 대한 부가세의 부담 주체를 의미합니다.
|
|
29196
|
+
|
|
29197
|
+
**파트너 부담** : 중개 수수료에 부가세를 별도로 청구합니다. 파트너 정산 금액에서 중개수수료에 대한 부가세를 자동 차감 후 지급합니다.
|
|
29198
|
+
|
|
29199
|
+
**우리 회사 부담** : 중개 수수료에 부가세를 포함하여 정산합니다. 즉, 파트너 정산 금액에 영향을 미치지 않습니다.
|
|
29200
|
+
|
|
26997
29201
|
---
|
|
26998
29202
|
|
|
26999
29203
|
## **지급대행 서비스 용어**
|
|
@@ -27013,6 +29217,7 @@ description: 파트너 정산 자동화 솔루션에서 자주 사용되는 용
|
|
|
27013
29217
|
### 즉시지급(바로지급)과 예약지급
|
|
27014
29218
|
|
|
27015
29219
|
**즉시지급**은 지급 요청 즉시 실시간으로 송금이 실행되는 지급 방식입니다.
|
|
29220
|
+
|
|
27016
29221
|
**예약지급**은 미래의 특정 시점에 지급이 실행되도록 예약하는 지급 방식입니다. 예약지급은 주말과 공휴일도 포함시켜 달력일로 예약할 수 있습니다.
|
|
27017
29222
|
|
|
27018
29223
|
<div class="hint" data-style="warning">
|
|
@@ -27064,6 +29269,10 @@ description: 파트너 정산 자동화 솔루션에서 자주 사용되는 용
|
|
|
27064
29269
|
|
|
27065
29270
|
</div>
|
|
27066
29271
|
|
|
29272
|
+
### 발행 마감일
|
|
29273
|
+
|
|
29274
|
+
전자세금계산서법에 따라 세금계산서를 반드시 발행해야 하는 법적 기한입니다. 일반적으로 거래가 발생한 달의 다음 달 10일까지 국세청에 전송되어야 합니다.
|
|
29275
|
+
|
|
27067
29276
|
|
|
27068
29277
|
# https://developers.portone.io/platform/ko/guides/process
|
|
27069
29278
|
|
|
@@ -29783,11 +31992,11 @@ iOS13 이후 아이패드 기기에서 결제 요청 시 PC 환경의 결제창
|
|
|
29783
31992
|
|
|
29784
31993
|
## 기타 수정사항
|
|
29785
31994
|
|
|
29786
|
-
### ✔️ KG
|
|
31995
|
+
### ✔️ KG파이낸셜을 통해 신용카드 결제를 이용할 수 있습니다
|
|
29787
31996
|
|
|
29788
|
-
KG
|
|
31997
|
+
KG파이낸셜과 계약을 통해 새로운 결제수단으로 신용카드를 이용할 수 있습니다. 하단의 일반 문의 채널을 통해 관련 문의를 남겨주시면 포트원 고객지원팀이 안내드리겠습니다.
|
|
29789
31998
|
|
|
29790
|
-
본 기능 설정을 위한 자세한 내용은 관련 연동가이드를 확인 바랍니다. [→ KG
|
|
31999
|
+
본 기능 설정을 위한 자세한 내용은 관련 연동가이드를 확인 바랍니다. [→ KG파이낸셜](https://developers.portone.io/docs/ko/pg/payment-gateway/kg)
|
|
29791
32000
|
|
|
29792
32001
|
|
|
29793
32002
|
# https://developers.portone.io/release-notes/api-sdk/2023-07-10
|
|
@@ -31110,10 +33319,10 @@ writtenAt: 2023-09-01T00:00:00.000Z
|
|
|
31110
33319
|
|
|
31111
33320
|
플랫폼 및 마켓플레이스 사업자가 손쉽게 하위정산 할 수 있는 파트너정산 서비스가 런칭 되었습니다.
|
|
31112
33321
|
파트너(셀러) 등록, 계약 등록, 정산등록 과 같은 정산의 세밀한 모든 부분을 관리자 콘솔로 관리하세요!
|
|
31113
|
-
해당 서비스는 유료 서비스입니다. 문의를 원하시면 신청(<https://
|
|
33322
|
+
해당 서비스는 유료 서비스입니다. 문의를 원하시면 신청(<https://inquiry.portone.io/fs>하시면
|
|
31114
33323
|
영업일 2일안에 연락드리겠습니다.
|
|
31115
33324
|
|
|
31116
|
-
[→ 파트너 정산 자동화 서비스 소개](https://portone.io/
|
|
33325
|
+
[→ 파트너 정산 자동화 서비스 소개](https://portone.io/platform)
|
|
31117
33326
|
[→ 파트너 정산 자동화 연동가이드 확인하기](https://developers.portone.io/platform/ko/readme)
|
|
31118
33327
|
|
|
31119
33328
|
|
|
@@ -31675,17 +33884,17 @@ writtenAt: 2024-08-22T00:00:00.000Z
|
|
|
31675
33884
|
|
|
31676
33885
|
**주문 정산건 생성 요청**
|
|
31677
33886
|
|
|
31678
|
-
- **`discounts`:[\[CreatePlatformOrderTransferBodyDiscount\[\]\]](/api/rest-v2/
|
|
33887
|
+
- **`discounts`:[\[CreatePlatformOrderTransferBodyDiscount\[\]\]](/api/rest-v2/platform.transfer#CreatePlatformOrderTransferBodyDiscount)** 할인 정보에 면세 할인 금액 필드가 추가되었습니다.
|
|
31679
33888
|
- **`taxFreeAmount?: integer`** 면세 할인 금액
|
|
31680
33889
|
|
|
31681
33890
|
**주문 취소 정산건 생성 요청**
|
|
31682
33891
|
|
|
31683
|
-
- **`discounts`:[\[CreatePlatformOrderCancelTransferBodyDiscount\[\]\]](/api/rest-v2/
|
|
33892
|
+
- **`discounts`:[\[CreatePlatformOrderCancelTransferBodyDiscount\[\]\]](/api/rest-v2/platform.transfer#CreatePlatformOrderCancelTransferBodyDiscount)** 할인 정보에 면세 할인 금액 필드가 추가되었습니다.
|
|
31684
33893
|
- **`taxFreeAmount?: integer`** 면세 할인 금액
|
|
31685
33894
|
|
|
31686
33895
|
**주문 정산건 생성, 주문 취소 정산건 생성 응답**
|
|
31687
33896
|
|
|
31688
|
-
- **`amount`:[\[PlatformOrderSettlementAmount\]](/api/rest-v2/
|
|
33897
|
+
- **`amount`:[\[PlatformOrderSettlementAmount\]](/api/rest-v2/platform.transfer#PlatformOrderSettlementAmount)** 정산 금액 정보에 필드가 추가되었습니다.
|
|
31689
33898
|
- **`paymentTaxFree: integer`** 결제 면세 금액
|
|
31690
33899
|
- 기존 `taxFree`를 대체하는 필드입니다. `taxFree`를 사용하고 계셨다면 `paymentTaxFree`를 대신 사용해 주세요
|
|
31691
33900
|
|
|
@@ -31698,13 +33907,13 @@ writtenAt: 2024-08-22T00:00:00.000Z
|
|
|
31698
33907
|
|
|
31699
33908
|
- **`discountShareTaxFree: integer`** 면세 할인 분담 금액
|
|
31700
33909
|
|
|
31701
|
-
- **`discounts`:[\[PlatformOrderTransferDiscount\[\]\]](/api/rest-v2/
|
|
33910
|
+
- **`discounts`:[\[PlatformOrderTransferDiscount\[\]\]](/api/rest-v2/platform.transfer#PlatformOrderTransferDiscount)** 정산 금액 계산 시 사용된 할인 정보에 필드가 추가되었습니다.
|
|
31702
33911
|
- **`taxFreeAmount: integer`** 면세 할인 금액
|
|
31703
33912
|
- **`shareTaxFreeAmount: integer`** 면세 할인 분담 금액
|
|
31704
33913
|
|
|
31705
33914
|
**정산 상세 내역 다운로드 필드 추가**
|
|
31706
33915
|
|
|
31707
|
-
- **`fields?`:[\[PlatformTransferSheetField\[\]\]](/api/rest-v2/
|
|
33916
|
+
- **`fields?`:[\[PlatformTransferSheetField\[\]\]](/api/rest-v2/platform.transfer#PlatformTransferSheetField)** 다운로드 할 시트 필드가 추가되었습니다.
|
|
31708
33917
|
- **`SETTLEMENT_PAYMENT_SUPPLY_AMOUNT`**: 결제 공급가액
|
|
31709
33918
|
- 기존 `SETTLEMENT_SUPPLY_AMOUNT`를 대체하는 필드입니다. `SETTLEMENT_SUPPLY_AMOUNT`를 사용하고 계셨다면 `SETTLEMENT_PAYMENT_SUPPLY_AMOUNT`를 대신 사용해 주세요
|
|
31710
33919
|
|
|
@@ -31804,32 +34013,32 @@ writtenAt: 2024-10-21T00:00:00.000Z
|
|
|
31804
34013
|
|
|
31805
34014
|
일괄 지급 내역 다건 조회 응답값이 수정되었습니다.
|
|
31806
34015
|
|
|
31807
|
-
- **`items`: [PlatformBulkPayout\[\]](/api/rest-v2/
|
|
34016
|
+
- **`items`: [PlatformBulkPayout\[\]](/api/rest-v2/platform.bulkPayout#PlatformBulkPayout)** 일괄 지급 내역에 필드가 추가되었습니다.
|
|
31808
34017
|
- **`scheduledAt?: string`** 일괄지급 예정일시
|
|
31809
|
-
- **`status`: [PlatformBulkPayoutStatus](/api/rest-v2/
|
|
34018
|
+
- **`status`: [PlatformBulkPayoutStatus](/api/rest-v2/platform.bulkPayout#PlatformBulkPayoutStatus)** 일괄지급 상태에 `SCHEDULED` (예약됨) 상태가 추가되었습니다.
|
|
31810
34019
|
|
|
31811
|
-
- **`counts`: [PlatformBulkPayoutStatusStats](/api/rest-v2/
|
|
34020
|
+
- **`counts`: [PlatformBulkPayoutStatusStats](/api/rest-v2/platform.bulkPayout#PlatformBulkPayoutStatusStats)** 일괄지급 상태별 통계에 `scheduled`상태인 일괄지급 건 수가 추가되었습니다.
|
|
31812
34021
|
- **`scheduled: integer`** 예약된 일괄지급 건 수
|
|
31813
34022
|
|
|
31814
34023
|
#### ✔️ 지급 내역 다건 조회
|
|
31815
34024
|
|
|
31816
34025
|
지급 내역 다건 조회 응답값이 수정되었습니다.
|
|
31817
34026
|
|
|
31818
|
-
- **`items`: [PlatformPayout\[\]](/api/rest-v2/
|
|
34027
|
+
- **`items`: [PlatformPayout\[\]](/api/rest-v2/platform.payout#PlatformPayout)** 지급 내역에 필드가 추가되었습니다.
|
|
31819
34028
|
- **`scheduledAt?: string`** 지급 예정일시
|
|
31820
|
-
- **`status`: [PlatformPayoutStatus](/api/rest-v2/
|
|
34029
|
+
- **`status`: [PlatformPayoutStatus](/api/rest-v2/platform.payout#PlatformPayoutStatus)** 지급 상태에 `SCHEDULED` (예약됨) 상태가 추가되었습니다.
|
|
31821
34030
|
|
|
31822
|
-
- **`counts`: [PlatformPayoutStatusStats](/api/rest-v2/
|
|
34031
|
+
- **`counts`: [PlatformPayoutStatusStats](/api/rest-v2/platform.payout#PlatformPayoutStatusStats)** 지급 상태별 통계에 `scheduled` 상태인 지급 건 수가 추가되었습니다.
|
|
31823
34032
|
- **`scheduled: integer`** 예약된 지급 건 수
|
|
31824
34033
|
|
|
31825
34034
|
#### ✔️ 정산 내역 다건 조회
|
|
31826
34035
|
|
|
31827
34036
|
정산 내역 다건 조회 응답값이 수정되었습니다.
|
|
31828
34037
|
|
|
31829
|
-
- **`items`: [PlatformPartnerSettlement\[\]](/api/rest-v2/
|
|
31830
|
-
- **`status`: [PlatformPartnerSettlementStatus](/api/rest-v2/
|
|
34038
|
+
- **`items`: [PlatformPartnerSettlement\[\]](/api/rest-v2/platform.partnerSettlement#PlatformPartnerSettlement)** 정산 내역에 필드가 추가되었습니다.
|
|
34039
|
+
- **`status`: [PlatformPartnerSettlementStatus](/api/rest-v2/platform.partnerSettlement#PlatformPartnerSettlementStatus)** 정산 상태에 `PAYOUT_SCHEDULED` (지급 예약) 상태가 추가되었습니다.
|
|
31831
34040
|
|
|
31832
|
-
- **`counts`: [PlatformPartnerSettlementStatusStats](/api/rest-v2/
|
|
34041
|
+
- **`counts`: [PlatformPartnerSettlementStatusStats](/api/rest-v2/platform.partnerSettlement#PlatformPartnerSettlementStatusStats)** 정산 상태별 통계에 payoutScheduled 상태인 정산 내역 건 수가 추가되었습니다.
|
|
31833
34042
|
- **`payoutScheduled: integer`** 지급 예약된 정산 내역 건 수
|
|
31834
34043
|
|
|
31835
34044
|
---
|
|
@@ -32178,8 +34387,8 @@ writtenAt: 2025-02-10T00:00:00.000Z
|
|
|
32178
34387
|
|
|
32179
34388
|
> 영향 API : [정산건 조회](https://developers.portone.io/api/rest-v2/platform.transfer?v=v2#get%20%2Fplatform%2Ftransfers%2F%7Bid%7D), [주문 정산건 생성](https://developers.portone.io/api/rest-v2/platform.transfer?v=v2#post%20%2Fplatform%2Ftransfers%2Forder), [주문 취소 정산건 생성](https://developers.portone.io/api/rest-v2/platform.transfer?v=v2#post%20%2Fplatform%2Ftransfers%2Forder-cancel), [정산건 다건 조회](https://developers.portone.io/api/rest-v2/platform.transfer?v=v2#get%20%2Fplatform%2Ftransfer-summaries)
|
|
32180
34389
|
|
|
32181
|
-
- 사용자 정의 함수 : [PlatformOrderTransfer](https://developers.portone.io/api/rest-v2/
|
|
32182
|
-
- 정산 파라미터 : [PlatformOrderTransfer](https://developers.portone.io/api/rest-v2/
|
|
34390
|
+
- 사용자 정의 함수 : [PlatformOrderTransfer](https://developers.portone.io/api/rest-v2/platform.transfer?v=v2#PlatformOrderTransfer).amount.**userDefinedFormulas**
|
|
34391
|
+
- 정산 파라미터 : [PlatformOrderTransfer](https://developers.portone.io/api/rest-v2/platform.transfer?v=v2#PlatformOrderTransfer).**parameters**
|
|
32183
34392
|
|
|
32184
34393
|
더 궁금한 점이 있다면 고객 지원팀에 문의해 주세요! 🚀
|
|
32185
34394
|
|
|
@@ -33207,6 +35416,267 @@ GET /platform/transfers/{id}?test=true
|
|
|
33207
35416
|
- 기술지원 문의: <support.b2b@portone.io> / 파트너스 슬랙 채널
|
|
33208
35417
|
|
|
33209
35418
|
|
|
35419
|
+
# https://developers.portone.io/release-notes/platform/2026-02-19
|
|
35420
|
+
|
|
35421
|
+
---
|
|
35422
|
+
releasedAt: 2026-02-19T00:00:00.000Z
|
|
35423
|
+
writtenAt: 2026-02-19T00:00:00.000Z
|
|
35424
|
+
---
|
|
35425
|
+
|
|
35426
|
+
안녕하세요, 파트너 정산 자동화 팀입니다.
|
|
35427
|
+
|
|
35428
|
+
이번 업데이트에서는 세금 계산서 메뉴가 개편되고, 사용성을 대폭 개선하는 거래처 관리 기능을 새롭게 제공합니다. 또한 헬프센터 자주 묻는 질문에 세금계산서 카테고리가 신설되어 관련 안내를 보다 쉽게 찾으실 수 있습니다.
|
|
35429
|
+
|
|
35430
|
+
---
|
|
35431
|
+
|
|
35432
|
+
## 거래처 관리 기능 신규 제공
|
|
35433
|
+
|
|
35434
|
+
세금계산서 정발행·역발행 시 활용할 수 있는 거래처 관리 기능이 추가되었습니다.
|
|
35435
|
+
|
|
35436
|
+
"거래처 관리" 메뉴에서 거래처의 사업자 정보를 등록하고 관리할 수 있으며, CSV 또는 엑셀 파일로 일괄 등록도 가능합니다.
|
|
35437
|
+
|
|
35438
|
+
일괄 등록 시 사업자 정보 조회 및 휴폐업 상태 조회 실행 여부를 선택할 수 있습니다.
|
|
35439
|
+
|
|
35440
|
+
(이미지 첨부: 거래처 관리 화면)
|
|
35441
|
+
|
|
35442
|
+
---
|
|
35443
|
+
|
|
35444
|
+
## 세금계산서 작성에 따른 연동
|
|
35445
|
+
|
|
35446
|
+
세금계산서 작성 시 거래처 검색으로 공급받는자 정보를 간편하게 설정할 수 있습니다. 정발행 시 공급받는자가 거래처로 자동 등록되며, 역발행은 사전에 거래처 등록 및 국세청 연동이 필요합니다. 세금계산서 내역은 거래처 단위 또는 사업자등록번호 기준으로 검색할 수 있고, 일괄 등록 시 거래처 아이디로 자동 매핑됩니다.
|
|
35447
|
+
|
|
35448
|
+
(이미지 첨부: 세금계산서 작성 페이지 하단)
|
|
35449
|
+
|
|
35450
|
+
---
|
|
35451
|
+
|
|
35452
|
+
## 세금계산서 단독 고객사 메뉴 개편
|
|
35453
|
+
|
|
35454
|
+
세금계산서 단독 이용 고객사의 관리자 콘솔 메뉴가 아래와 같이 개편되었습니다.
|
|
35455
|
+
|
|
35456
|
+
세금계산서 > 세금계산서 작성 / 세금계산서 관리 / 거래처 관리
|
|
35457
|
+
|
|
35458
|
+
기존에 파트너 정산 자동화 탭에 있던 세금계산서 관련 기능이 독립 메뉴로 분리되어, 보다 직관적으로 접근할 수 있습니다.
|
|
35459
|
+
|
|
35460
|
+
(이미지 첨부: 포트원 관리자 콘솔 메뉴)
|
|
35461
|
+
|
|
35462
|
+
---
|
|
35463
|
+
|
|
35464
|
+
## 자주 묻는 질문에 세금계산서 탭 신설
|
|
35465
|
+
|
|
35466
|
+
헬프센터 자주 묻는 질문에 세금계산서 카테고리가 신설되었습니다. 거래처 관리, 정발행·역발행, 국세청 연동 등 세금계산서 관련 FAQ를 한 곳에서 확인하실 수 있습니다. 기존 파트너 정산 자동화 탭에 있던 세금계산서 관련 FAQ가 새로운 세금계산서 탭으로 이동되었습니다.
|
|
35467
|
+
|
|
35468
|
+
(이미지 첨부: 포트원 헬프센터 자주 묻는 질문)
|
|
35469
|
+
|
|
35470
|
+
---
|
|
35471
|
+
|
|
35472
|
+
작성일자: **2026년 2월 19일**
|
|
35473
|
+
|
|
35474
|
+
- 일반 문의: <cs@portone.io> / 채널톡
|
|
35475
|
+
- 기술지원 문의: <support.b2b@portone.io> / 파트너스 슬랙 채널
|
|
35476
|
+
|
|
35477
|
+
|
|
35478
|
+
# https://developers.portone.io/release-notes/platform/2026-03-06
|
|
35479
|
+
|
|
35480
|
+
---
|
|
35481
|
+
releasedAt: 2026-03-06T00:00:00.000Z
|
|
35482
|
+
writtenAt: 2026-03-06T00:00:00.000Z
|
|
35483
|
+
---
|
|
35484
|
+
|
|
35485
|
+
안녕하세요, 포트원 파트너 정산 자동화팀 입니다.
|
|
35486
|
+
|
|
35487
|
+
파트너 정산 자동화 제품에 대한 전반적인 사용성 개선과 안정화에 대한 업데이트가 진행됨에 따라 업데이트 사항을 안내해 드립니다.
|
|
35488
|
+
|
|
35489
|
+
---
|
|
35490
|
+
|
|
35491
|
+
## 정산 상세 내역의 상태 라벨 개선
|
|
35492
|
+
|
|
35493
|
+
정산 상세 내역에서 상태의 명칭이 불명확한 부분을 개선하였습니다.
|
|
35494
|
+
|
|
35495
|
+
|기존 |신규 |설명 |
|
|
35496
|
+
|---------|---------|----------------------------------------------------------------|
|
|
35497
|
+
|정산 예정|정산 예정|정산 시작일에 도래하지 않아 아직 금액 및 정산일 확정이 안된 경우|
|
|
35498
|
+
|정산 중 |정산 중 |정산 시작일을 지나 정산 금액 및 정산일이 확정된 상태 |
|
|
35499
|
+
|정산 완료|정산 확정|정산일이 지나 지급 가능한 상태 |
|
|
35500
|
+
|N/A |지급 확정|특정 지급건에 집계되어 이체 가능한 상태 |
|
|
35501
|
+
|이체 중 |지급 중 |지급이 예약되어 있거나 지급이 진행중인 상태 |
|
|
35502
|
+
|이체 완료|지급 완료|지급 및 정산이 완료된 상태 |
|
|
35503
|
+
|
|
35504
|
+
(이미지 첨부: 정산 상세 내역 상태 라벨 개선 화면)
|
|
35505
|
+
|
|
35506
|
+
---
|
|
35507
|
+
|
|
35508
|
+
## 정산 상세 내역 및 정산 내역 삭제 기능 지원
|
|
35509
|
+
|
|
35510
|
+
정산 내역 및 정산 상세 내역에 특정 상태인 데이터 삭제가 콘솔 및 API로 제공됩니다.
|
|
35511
|
+
|
|
35512
|
+
### 삭제 가능한 상태
|
|
35513
|
+
|
|
35514
|
+
- 정산 상세 내역(주문/수기 정산건): **정산 예정, 정산 중, 정산 확정**
|
|
35515
|
+
- 정산 내역: **지급 예정, 지급 보류, 지급 취소, 지급 제외**
|
|
35516
|
+
|
|
35517
|
+
### 유의 사항
|
|
35518
|
+
|
|
35519
|
+
- 삭제된 데이터에 대한 복원은 불가능합니다.
|
|
35520
|
+
- 정산 내역 건별 삭제 시 연관된 정산 상세 내역(주문/수기정산건)이 삭제 가능하다면 함께 삭제됩니다.
|
|
35521
|
+
|
|
35522
|
+
(이미지 첨부: 정산 내역/상세 내역 삭제 기능 (1))
|
|
35523
|
+
|
|
35524
|
+
(이미지 첨부: 정산 내역/상세 내역 삭제 기능 (2))
|
|
35525
|
+
|
|
35526
|
+
---
|
|
35527
|
+
|
|
35528
|
+
## 정산 내역 지급 예정 상태로 복원 시 오류 해결
|
|
35529
|
+
|
|
35530
|
+
기존 지급 보류/지급 실패 상태에서 지급 예정 상태로 변경 시 오류가 발생하였으나 해당 부분이 해결되었습니다.
|
|
35531
|
+
|
|
35532
|
+
위 오류는 상태 변경 과정에서 같은 집계 조건의 지급 예정 상태의 내역이 추가 생성된 경우 발생하는 오류로, 현재는 지급 예정 상태의 내역을 **중복 적재 가능**하게 개선하였습니다.
|
|
35533
|
+
|
|
35534
|
+
(이미지 첨부: 지급 예정 복원 오류 개선)
|
|
35535
|
+
|
|
35536
|
+
---
|
|
35537
|
+
|
|
35538
|
+
## 비활성화 가상 계좌 노출 지원
|
|
35539
|
+
|
|
35540
|
+
더즌 계좌 변경 안내에 따라서 신규 계좌 발급이 완료되었습니다. 다만 기존 계좌의 내역 조회를 지속 지원해드리기 위해 비활성 상태로 계좌 노출이 지원됩니다.
|
|
35541
|
+
|
|
35542
|
+
### 안내 사항
|
|
35543
|
+
|
|
35544
|
+
- 비활성 계좌도 이전 입출금 내역에 대해 확인하실 수 있습니다.
|
|
35545
|
+
- 비활성 계좌는 출금/지급 시 활용할 수 없으며, 잔액 조회가 불가합니다.
|
|
35546
|
+
|
|
35547
|
+
(이미지 첨부: 비활성화 가상 계좌 노출)
|
|
35548
|
+
|
|
35549
|
+
---
|
|
35550
|
+
|
|
35551
|
+
## 출금 시 입금 계좌 예금주 저장
|
|
35552
|
+
|
|
35553
|
+
기존 예치금 출금 시 조회된 입금 계좌 예금주가 이체 내역에 반영되지 않던 부분을 개선하였습니다. 배포 이후로 진행되는 모든 출금 건들에 대해서 입금 대상 계좌에 대한 예금주 정보가 저장됩니다.
|
|
35554
|
+
|
|
35555
|
+
---
|
|
35556
|
+
|
|
35557
|
+
## 이체 속도 개선
|
|
35558
|
+
|
|
35559
|
+
현재 이체 프로세스를 개선하여 기존보다 **3배 더 많은 이체 건**들을 병렬 처리할 수 있게 되었습니다.
|
|
35560
|
+
|
|
35561
|
+
(이미지 첨부: 이체 속도 개선)
|
|
35562
|
+
|
|
35563
|
+
---
|
|
35564
|
+
|
|
35565
|
+
## 정산 내역 ‘지급 제외’ 상태 추가
|
|
35566
|
+
|
|
35567
|
+
정산 내역 중 영구적으로 지급을 제외할 데이터를 관리하기 위한 “지급 제외” 상태를 추가합니다.
|
|
35568
|
+
|
|
35569
|
+
- 지급 보류/취소/예정 상태와 별개로 정산 내역에 “지급 제외” 상태가 추가됩니다.
|
|
35570
|
+
- “지급 제외” 상태는 지급이 불가능한 상태입니다. (지급 내역 확정 시 자동 제외됩니다.)
|
|
35571
|
+
- “지급 제외” 상태는 “지급 보류 / 지급 예정” 상태로 변경할 수 있습니다.
|
|
35572
|
+
- “지급 보류 / 취소 / 예정” 상태에서 “지급 제외” 상태로 변경할 수 있습니다.
|
|
35573
|
+
|
|
35574
|
+
(이미지 첨부: 정산 내역 ‘지급 제외’ 상태)
|
|
35575
|
+
|
|
35576
|
+
---
|
|
35577
|
+
|
|
35578
|
+
## 세금계산서 기능 개선
|
|
35579
|
+
|
|
35580
|
+
- 거래처 관리 엑셀 다운로드 시 주소/업태/업종 데이터가 추가됩니다.
|
|
35581
|
+
- ‘요청’ 상태의 세금계산서를 회수 없이 메일 주소만 변경하여 재전송 가능하도록 개선됩니다.
|
|
35582
|
+
- 세금계산서 메뉴에서 상태값 외 다른 항목(예: 발행일, 금액 등)으로도 필터 및 정렬(오름/내림차순) 가능하도록 개선됩니다.
|
|
35583
|
+
- 세금계산서 내역 관리에서 체크박스 일괄 ‘발행취소, 삭제, 재전송’ 기능이 가능하도록 개선됩니다.
|
|
35584
|
+
|
|
35585
|
+
---
|
|
35586
|
+
|
|
35587
|
+
## API 변경 사항 안내
|
|
35588
|
+
|
|
35589
|
+
### A. 정산 내역 삭제 API 제공
|
|
35590
|
+
|
|
35591
|
+
오등록되거나 재등록이 필요한 정산 데이터를 삭제하기 위해서 정산 내역 단위 삭제 API가 제공됩니다.\
|
|
35592
|
+
해당 정산 내역을 삭제하시게 되면 연관된 정산 상세 내역 데이터와 함께 삭제가 진행되므로 유의하여 활용해주시길 바랍니다.
|
|
35593
|
+
|
|
35594
|
+
```http
|
|
35595
|
+
POST /platform/partner-settlements/delete?test=false
|
|
35596
|
+
Content-Type: application/json
|
|
35597
|
+
|
|
35598
|
+
{
|
|
35599
|
+
"partnerSettlementIds": []
|
|
35600
|
+
}
|
|
35601
|
+
```
|
|
35602
|
+
|
|
35603
|
+
- _해당 API는 unstable 입니다._
|
|
35604
|
+
|
|
35605
|
+
---
|
|
35606
|
+
|
|
35607
|
+
### B. 정산 내역 일괄 지급 처리 API 제공
|
|
35608
|
+
|
|
35609
|
+
외화 정산 내역의 경우에는 현재 지급 대행 등이 제공되지 않아 지급 건을 수기 보정 요청주시던 부분에 대해서 직접 보정이 가능하도록 API를 제공합니다.
|
|
35610
|
+
해당 API를 활용하시면 자동적으로 일괄 지급 / 지급 내역 등을 생성하여 지급 완료 상태로 데이터가 보정됩니다.
|
|
35611
|
+
|
|
35612
|
+
```http
|
|
35613
|
+
POST /platform/partner-settlements/complete-payout?test=false
|
|
35614
|
+
Content-Type: application/json
|
|
35615
|
+
|
|
35616
|
+
{
|
|
35617
|
+
"bulkPayoutId": "",
|
|
35618
|
+
"name": "",
|
|
35619
|
+
"partnerSettlementIds": [],
|
|
35620
|
+
"completeAt": "2026-02-01"
|
|
35621
|
+
}
|
|
35622
|
+
```
|
|
35623
|
+
|
|
35624
|
+
- _해당 API는 unstable 입니다._
|
|
35625
|
+
|
|
35626
|
+
---
|
|
35627
|
+
|
|
35628
|
+
### C. 주문 정산 / 주문 취소 정산 / 수기 정산 등록 시 id 직접 지정 가능
|
|
35629
|
+
|
|
35630
|
+
중복 등록 방지 및 고객사 자체 아이디 매핑을 위해 주문/주문 취소/수기 정산 등록 시 id 필드를 직접 지정할 수 있습니다.
|
|
35631
|
+
id 필드가 지정되지 않은 경우에는 자동 생성되며 기존과 같이 활용하실 수 있습니다.
|
|
35632
|
+
|
|
35633
|
+
```http
|
|
35634
|
+
POST /platform/transfers/manual
|
|
35635
|
+
POST /platform/transfers/order
|
|
35636
|
+
POST /platform/transfers/order-cancel
|
|
35637
|
+
|
|
35638
|
+
Content-Type: application/json
|
|
35639
|
+
|
|
35640
|
+
{
|
|
35641
|
+
"id": "custom-id"
|
|
35642
|
+
// ... 기존 API 명세
|
|
35643
|
+
}
|
|
35644
|
+
```
|
|
35645
|
+
|
|
35646
|
+
참고: order-cancel 의 경우 transfer\_id 와 id 가 동시에 존재하는데, transfer\_id 는 기존과 같이 취소 대상 원본 주문 정산 건에 대한 식별자입니다.
|
|
35647
|
+
|
|
35648
|
+
---
|
|
35649
|
+
|
|
35650
|
+
### D. 정산 상세 다건 조회 API 사용자 정의 속성 검색 지원 및 성능 개선
|
|
35651
|
+
|
|
35652
|
+
정산 상세 내역 조회 시 사용자 정의 속성에 대한 지원이 추가됩니다. 접두사 일치로 검색이 지원됩니다.
|
|
35653
|
+
|
|
35654
|
+
```http
|
|
35655
|
+
POST /platform/transfer-summaries
|
|
35656
|
+
Content-Type: application/json
|
|
35657
|
+
|
|
35658
|
+
{
|
|
35659
|
+
"filter": {
|
|
35660
|
+
"userDefinedProperty": {
|
|
35661
|
+
"key": "USER DEFINED KEY",
|
|
35662
|
+
"value": "exact match"
|
|
35663
|
+
}
|
|
35664
|
+
}
|
|
35665
|
+
// ...
|
|
35666
|
+
}
|
|
35667
|
+
```
|
|
35668
|
+
|
|
35669
|
+
또한 정산 상세 다건 조회 시 파트너 정보 조회 비용을 최적화하여 조회 성능을 개선하였습니다.
|
|
35670
|
+
P50 기준 내부 테스트 결과 **60% 이상의 latency 감소**가 확인되었습니다.
|
|
35671
|
+
|
|
35672
|
+
---
|
|
35673
|
+
|
|
35674
|
+
작성일자: **2026년 3월 3일**
|
|
35675
|
+
|
|
35676
|
+
- 일반 문의: <cs@portone.io> / 채널톡
|
|
35677
|
+
- 기술지원 문의: <support.b2b@portone.io> / 파트너스 슬랙 채널
|
|
35678
|
+
|
|
35679
|
+
|
|
33210
35680
|
# https://developers.portone.io/blog/posts/2024-02/v2-oom
|
|
33211
35681
|
|
|
33212
35682
|
---
|
|
@@ -35751,3 +38221,123 @@ Event Sourcing의 경우 굉장히 낯선 기술이고, 국내에서 해당 기
|
|
|
35751
38221
|
|
|
35752
38222
|
과감한 결정을 한 만큼 장기적으로 그 효과는 강력할 것이라고 생각합니다.
|
|
35753
38223
|
Event Sourcing이라는 단단한 뿌리 위에서 폭발적으로 성장하는 포트원을 지켜봐 주세요!
|
|
38224
|
+
|
|
38225
|
+
|
|
38226
|
+
# https://developers.portone.io/blog/posts/2025-12/portone-chatbot
|
|
38227
|
+
|
|
38228
|
+
---
|
|
38229
|
+
title: 포트원 AI 챗봇이 반복되는 기술 문의를 획기적으로 단축한 비결
|
|
38230
|
+
description: 잘 만든 AI 서비스 하나로 1000개의 기술 문의를 대신한 이야기
|
|
38231
|
+
author: portone-io
|
|
38232
|
+
date: 2025-12-17T15:00:00.000Z
|
|
38233
|
+
tags:
|
|
38234
|
+
- AI
|
|
38235
|
+
- Chatbot
|
|
38236
|
+
---
|
|
38237
|
+
|
|
38238
|
+
안녕하세요, 온라인 비즈니스 결제 인프라를 만드는 포트원입니다.
|
|
38239
|
+
결제 연동은 복잡합니다. 개발 환경도 다르고, 사용하는 언어도 제각각이죠. 그러다 보니 포트원 CS 채널에는 하루에도
|
|
38240
|
+
수많은 '기술 문의'가 쏟아집니다.
|
|
38241
|
+
문제는 여기서 발생합니다. 고객의 질문은 고도화되는데, CS 담당자가 모든 개발 지식을 알 수는 없으니까요.
|
|
38242
|
+
결국 문의는 개발팀으로 넘어오고, "문의 - CS팀 - 개발자 - 답변 작성 - CS팀 - 고객"으로 이어지는 비효율의
|
|
38243
|
+
무한 루프가 시작됩니다.
|
|
38244
|
+
|
|
38245
|
+
**"이 단순 반복 업무를 AI가 대신할 수는 없을까?"**
|
|
38246
|
+
|
|
38247
|
+
최근 포트원이 공개한 AI 챗봇, ‘포트원 AI Assistant’ 프로젝트는 위 질문에서 시작되었습니다.
|
|
38248
|
+
해커톤에서 시작된 실험을 실제 서비스로 안착시키기까지, 포트원의 한지환 프로덕트 오너와 전우제 백엔드 엔지니어가
|
|
38249
|
+
함께한 치열했던 개발기를 공개합니다.
|
|
38250
|
+
|
|
38251
|
+
## ‘단순한 기술 문의의 반복, 어려워지는 온보딩’
|
|
38252
|
+
|
|
38253
|
+
포트원 개발팀은 단순한 기술 문의가 지속적으로 반복되며 개발자들이 CS답변에 쓰는 리소스가 점점 늘어나는 상황과,
|
|
38254
|
+
결제 연동 과정에서 고객들이 길어지는 상담으로 이탈하는 문제를 발견했습니다.
|
|
38255
|
+
|
|
38256
|
+
한지환 프로덕트 오너 : 포트원의 미션은 '온라인 비즈니스를 하고 있는 누구나 결제 연동을 쉽게 하는 것'입니다. 그런데
|
|
38257
|
+
아이러니하게도 연동 과정에서 고객들이 겪는 어려움을 해결해 주는 과정이 점점 느려졌어요. 기술 문의가 들어오면
|
|
38258
|
+
CS팀에서 개발자에게 전달하고, 개발자가 내용을 확인하고 답변을 줄 때까지 고객은 기다려야 했죠. 내부적으로도 리소스
|
|
38259
|
+
낭비가 심했습니다. 개발자들이 코드 짜는 시간보다 기술 문의 답변을 검수해 주는 시간이 점점 늘어나기 시작했거든요.
|
|
38260
|
+
|
|
38261
|
+
전우제 엔지니어 : 반복되는 기술 문의를 들여다보면 패턴이 보였어요. "결제 연동 오류가 나요"라고 하는데, 살펴보면
|
|
38262
|
+
뻔한 실수인 경우가 많았죠. 개발자가 보면 1초 만에 아는 내용인데, CS팀을 거치다 보니 답변이 늦어지는 상황이
|
|
38263
|
+
반복됐습니다. 이 시간을 단축하고 싶다는 니즈는 개발팀 내에서도 꽤 오래전부터 있었습니다
|
|
38264
|
+
|
|
38265
|
+
## 해커톤이 가져다준 AI 실험 기회
|
|
38266
|
+
|
|
38267
|
+
이 문제를 해결하기 위해 처음부터 거창한 프로젝트를 띄운 건 아니었습니다.
|
|
38268
|
+
시작은 포트원 개발팀이 참여한 'AWS X 메가존 해커톤'이었습니다.
|
|
38269
|
+
|
|
38270
|
+
전우제 엔지니어 : 사실 이 아이디어가 해커톤 메인 출품작은 아니었어요.
|
|
38271
|
+
하지만 해커톤 기간 동안 AWS Bedrock과 Claude 모델을 마음껏 테스트해 볼 수 있는 '크레딧'이 생겼다는 게 중요했습니다. 회사 입장에서 AI 도입의 가장 큰 장벽은 '비용'이거든요.
|
|
38272
|
+
|
|
38273
|
+
"이게 진짜 될까?" 싶은 아이디어를 비용 걱정 없이 검증해 볼 수 있는 완벽한 타이밍이었죠.
|
|
38274
|
+
그때 얻은 'AI 서비스 구성 감각'이 실제 제품 개발로 이어지는 결정적인 트리거가 됐습니다.
|
|
38275
|
+
|
|
38276
|
+
## AI를 '답변 기계'가 아닌 '사고 파트너'로
|
|
38277
|
+
|
|
38278
|
+
가장 큰 기술적 난관은 AI 챗봇의 고질병인 '할루시네이션(거짓 답변)'이었습니다.
|
|
38279
|
+
결제 연동 가이드에서 없는 함수를 있다고 하거나, 잘못된 파라미터를 알려주면 치명적이니까요.
|
|
38280
|
+
|
|
38281
|
+
보통은 이를 해결하기 위해 RAG(검색 증강 생성)와 Vector DB를 사용하지만,
|
|
38282
|
+
포트원 개발팀은 조금 다른 접근을 택했습니다.
|
|
38283
|
+
|
|
38284
|
+
### Vector DB 없는 RAG? "MCP의 도입"
|
|
38285
|
+
|
|
38286
|
+
초기 테스트 결과, 단순히 문서를 쪼개서 Vector DB에 넣고 검색하는 방식은 한계가 명확했습니다. 문맥이 잘린 채
|
|
38287
|
+
검색되다 보니 AI가 엉뚱한 문서를 참고해서 답변하는 경우가 많았죠.
|
|
38288
|
+
|
|
38289
|
+
그래서 우리는 MCP(Model Context Protocol) 개념을 적극적으로 도입했습니다.
|
|
38290
|
+
|
|
38291
|
+
쉽게 말해, AI에게 미리 정답지(문서 조각)를 쥐여주는 게 아니라, "네가 모르는 게 있으면
|
|
38292
|
+
우리 개발자 문서 도구(Tool)를 사용해서 직접 검색해 봐"라고 시키는 방식입니다. AI를 단순 답변기가 아니라,
|
|
38293
|
+
문서를 검색하고 내용을 판단하는 '사고 파트너(Thinking Partner)'로 설계한 것이죠.
|
|
38294
|
+
|
|
38295
|
+
### 비용과 성능의 줄타기 (Claude 4.0 Sonnet)
|
|
38296
|
+
|
|
38297
|
+
모델 선정도 치열했습니다. 성능이 좋은 모델은 비싸고, 싼 모델은 답변 품질이 다소 낮습니다.
|
|
38298
|
+
|
|
38299
|
+
비용 절감과 품질 사이에서 고민하다 결국 Claude 4.0 Sonnet을 채택했습니다. 저렴하지 않은 모델을 썼음에도 비용은
|
|
38300
|
+
오히려 통제 가능했습니다.
|
|
38301
|
+
|
|
38302
|
+
- MCP 서버를 최적화하여 불필요한 토큰 소모를 줄였습니다.
|
|
38303
|
+
- 답변의 정확도가 올라가니, 사용자가 여러 번 다시 묻는 횟수가 줄어들어 전체적인 토큰 사용량은 합리적인 수준(하루 100건 사용 기준 월 $25\~30 내외)으로 유지되었습니다.
|
|
38304
|
+
|
|
38305
|
+
### "기다림도 UX다"
|
|
38306
|
+
|
|
38307
|
+
(관련 이미지 첨부)
|
|
38308
|
+
|
|
38309
|
+
LLM의 답변 속도를 우리가 직접 획기적으로 줄이는 건 불가능했죠. 대신 이용자 입장에서의
|
|
38310
|
+
'체감 시간'을 줄이려고 했습니다.
|
|
38311
|
+
단순히 로딩 바가 도는 게 아니라, "현재 개발자 문서를 검색하고 있습니다...", "관련 내용을 분석 중입니다..." 처럼
|
|
38312
|
+
AI가 현재 수행 중인 작업을 실시간으로 보여주었습니다. (Perplexity나 Gemini처럼요.) 이 작은 장치가 고객이
|
|
38313
|
+
이탈하지 않고 답변을 기다리게 만드는 핵심 UX가 되었습니다.
|
|
38314
|
+
|
|
38315
|
+
## AI 챗봇 도입 성과 : "CS 문의가 줄었습니다"
|
|
38316
|
+
|
|
38317
|
+
(관련 이미지 첨부)
|
|
38318
|
+
|
|
38319
|
+
포트원 AI 챗봇 도입 3주 차, 변화는 데이터로 나타나고 있습니다.
|
|
38320
|
+
|
|
38321
|
+
한지환 프로덕트 오너 : CS팀에서 먼저 피드백이 왔어요. "체감상 기술 문의가 확 줄었다"고요. 하루 평균 약 50\~100건
|
|
38322
|
+
정도의 문의를 AI가 처리하고 있습니다. 도입 후 약 1,000건의 문의를 처리했죠. 특히 "API 키 어디서 찾나요?",
|
|
38323
|
+
"이 오류 코드는 뭔가요?" 같은 단순 문의는 AI 챗봇 선에서 대부분 해결됩니다.
|
|
38324
|
+
|
|
38325
|
+
재미있는 건 개발자들의 반응입니다. "CS팀에서 넘어오는 기술 문의 난이도가 올라갔다"고 해요.
|
|
38326
|
+
|
|
38327
|
+
전우제 엔지니어 : 예전엔 "뭐가 안 돼요"라는 단순한 질문이 왔다면, 이제는 AI를 통해 1차적인 해결을 시도해 본
|
|
38328
|
+
고객들이 "AI 챗봇을 보고 여기까지 해봤는데, 이 부분에서 막힙니다"라고 구체적인 질문을 던집니다.
|
|
38329
|
+
|
|
38330
|
+
비효율적인 핑퐁이 사라지고, 개발자와 CS팀 모두가 '진짜 해결해야 할 문제'에 집중할 수 있게 된 것입니다.
|
|
38331
|
+
|
|
38332
|
+
## 포트원의 다음 미션 : "결제 연동, 클릭 한 번으로 해결"
|
|
38333
|
+
|
|
38334
|
+
포트원 AI Assistant는 이제 시작입니다. 포트원은 '단순히 질문을 답변해주는 봇'을 넘어 '결제를 직접 연동하는
|
|
38335
|
+
에이전트(Agent)'를 꿈꿉니다.
|
|
38336
|
+
|
|
38337
|
+
한지환 프로덕트 오너 : 지금은 "PG 어떻게 연동해요?"라고 물으면 방법을 알려주죠. 하지만 포트원이 준비하는
|
|
38338
|
+
다음 단계는 그 이상입니다. 고객의 깃허브(Github)를 AI가 분석하고, 프로젝트 환경에 맞는 결제 연동 코드를 직접
|
|
38339
|
+
짜서 PR(Pull Request)까지 날려주는 단계. 이미 PoC(개념 검증)는 마쳤고 개발이 진행 중입니다.
|
|
38340
|
+
|
|
38341
|
+
개발자가 더 이상 단순 반복 업무에 시달리지 않는 세상, 누구나 말 한마디로 결제를 연동하는 세상.
|
|
38342
|
+
|
|
38343
|
+
포트원의 ‘AI를 활용한 결제 연동 경험 혁신’은 이제 막 본궤도에 올랐습니다.
|