@portone/mcp-server 0.13.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/LICENSE-APACHE +201 -0
- package/LICENSE-MIT +21 -0
- package/README.md +165 -0
- package/assets/docs/README.md +27 -0
- package/assets/docs/api/backward-compatibility.md +40 -0
- package/assets/docs/blog/posts/2024-02/v2-oom.md +341 -0
- package/assets/docs/blog/posts/2024-02/v2-webhook.md +314 -0
- package/assets/docs/blog/posts/2024-02/v2-zio.md +529 -0
- package/assets/docs/blog/posts/2024-03/tgs.md +238 -0
- package/assets/docs/blog/posts/2024-04/gcp-datastream.md +307 -0
- package/assets/docs/blog/posts/2024-04/solid.md +558 -0
- package/assets/docs/blog/posts/2024-07/v2-event-sourcing-basic.md +231 -0
- package/assets/docs/help/admin-console/analytics/content32.md +270 -0
- package/assets/docs/help/admin-console/console-account/content31.md +94 -0
- package/assets/docs/help/admin-console/console_home/content34.md +82 -0
- package/assets/docs/help/admin-console/integration/content28.md +79 -0
- package/assets/docs/help/admin-console/payment-service/content29.md +260 -0
- package/assets/docs/help/admin-console/pg-settlement/content30.md +352 -0
- package/assets/docs/help/admin-console/platform-settlement/content33-1.md +201 -0
- package/assets/docs/help/api-sdk-2024-12-19.md +64 -0
- package/assets/docs/help/api-sdk-2025-01-15.md +84 -0
- package/assets/docs/help/applepay.md +46 -0
- package/assets/docs/help/content100000.md +46 -0
- package/assets/docs/help/content100002.md +52 -0
- package/assets/docs/help/content100004.md +29 -0
- package/assets/docs/help/content100014.md +50 -0
- package/assets/docs/help/content100015.md +20 -0
- package/assets/docs/help/content100016.md +28 -0
- package/assets/docs/help/content100020.md +28 -0
- package/assets/docs/help/content100022.md +40 -0
- package/assets/docs/help/content100023.md +21 -0
- package/assets/docs/help/content100024.md +25 -0
- package/assets/docs/help/content100025.md +40 -0
- package/assets/docs/help/content100026.md +20 -0
- package/assets/docs/help/content100027.md +24 -0
- package/assets/docs/help/content100029.md +29 -0
- package/assets/docs/help/content100030.md +82 -0
- package/assets/docs/help/content100033.md +44 -0
- package/assets/docs/help/content100035.md +34 -0
- package/assets/docs/help/content100036.md +14 -0
- package/assets/docs/help/content100037.md +16 -0
- package/assets/docs/help/content100038.md +32 -0
- package/assets/docs/help/content100039.md +28 -0
- package/assets/docs/help/content100040.md +31 -0
- package/assets/docs/help/content100041.md +37 -0
- package/assets/docs/help/content100044.md +15 -0
- package/assets/docs/help/content100045.md +21 -0
- package/assets/docs/help/content100046.md +34 -0
- package/assets/docs/help/content100047.md +32 -0
- package/assets/docs/help/content100048.md +25 -0
- package/assets/docs/help/content100049.md +20 -0
- package/assets/docs/help/content100052.md +147 -0
- package/assets/docs/help/content100053.md +40 -0
- package/assets/docs/help/content100054.md +18 -0
- package/assets/docs/help/content100055.md +37 -0
- package/assets/docs/help/content100056.md +15 -0
- package/assets/docs/help/content100057.md +28 -0
- package/assets/docs/help/content100058.md +36 -0
- package/assets/docs/help/content100059.md +23 -0
- package/assets/docs/help/content100060.md +43 -0
- package/assets/docs/help/content200001.md +21 -0
- package/assets/docs/help/content200002.md +38 -0
- package/assets/docs/help/content200005.md +30 -0
- package/assets/docs/help/content200012.md +91 -0
- package/assets/docs/help/content200013.md +52 -0
- package/assets/docs/help/content200015.md +41 -0
- package/assets/docs/help/content200016.md +30 -0
- package/assets/docs/help/content200017.md +39 -0
- package/assets/docs/help/content200018.md +105 -0
- package/assets/docs/help/content200019.md +59 -0
- package/assets/docs/help/content200020.md +42 -0
- package/assets/docs/help/content200023.md +54 -0
- package/assets/docs/help/content200024.md +49 -0
- package/assets/docs/help/content200025.md +68 -0
- package/assets/docs/help/content200027.md +34 -0
- package/assets/docs/help/content200028.md +70 -0
- package/assets/docs/help/content200029.md +71 -0
- package/assets/docs/help/content200030.md +67 -0
- package/assets/docs/help/content200032.md +39 -0
- package/assets/docs/help/content200033.md +21 -0
- package/assets/docs/help/content200034.md +34 -0
- package/assets/docs/help/content200037.md +38 -0
- package/assets/docs/help/content200038.md +50 -0
- package/assets/docs/help/content200039.md +45 -0
- package/assets/docs/help/content200040.md +15 -0
- package/assets/docs/help/content200043.md +23 -0
- package/assets/docs/help/content200044.md +33 -0
- package/assets/docs/help/content200045.md +25 -0
- package/assets/docs/help/content200046.md +104 -0
- package/assets/docs/help/content200048.md +34 -0
- package/assets/docs/help/content200049.md +54 -0
- package/assets/docs/help/content200050.md +43 -0
- package/assets/docs/help/content200051.md +81 -0
- package/assets/docs/help/content51.md +38 -0
- package/assets/docs/help/content61.md +165 -0
- package/assets/docs/help/core-service/channel-setting/danal.md +170 -0
- package/assets/docs/help/core-service/channel-setting/daou.md +118 -0
- package/assets/docs/help/core-service/channel-setting/eximbay.md +136 -0
- package/assets/docs/help/core-service/channel-setting/inicis.md +340 -0
- package/assets/docs/help/core-service/channel-setting/kakaopay.md +107 -0
- package/assets/docs/help/core-service/channel-setting/kcp_channel.md +235 -0
- package/assets/docs/help/core-service/channel-setting/kicc.md +114 -0
- package/assets/docs/help/core-service/channel-setting/kpn.md +93 -0
- package/assets/docs/help/core-service/channel-setting/ksnet.md +116 -0
- package/assets/docs/help/core-service/channel-setting/mobilians.md +107 -0
- package/assets/docs/help/core-service/channel-setting/naverpay.md +179 -0
- package/assets/docs/help/core-service/channel-setting/nice.md +210 -0
- package/assets/docs/help/core-service/channel-setting/payco.md +124 -0
- package/assets/docs/help/core-service/channel-setting/paymentwall.md +107 -0
- package/assets/docs/help/core-service/channel-setting/paypal.md +247 -0
- package/assets/docs/help/core-service/channel-setting/settle.md +123 -0
- package/assets/docs/help/core-service/channel-setting/smartro.md +164 -0
- package/assets/docs/help/core-service/channel-setting/smilepay.md +83 -0
- package/assets/docs/help/core-service/channel-setting/tosspay.md +168 -0
- package/assets/docs/help/core-service/channel-setting/tosspayments.md +232 -0
- package/assets/docs/help/core-service/channel-setting/welcome.md +110 -0
- package/assets/docs/help/core-service/how-to-use/additional-danal.md +71 -0
- package/assets/docs/help/core-service/how-to-use/additional-daou.md +65 -0
- package/assets/docs/help/core-service/how-to-use/additional-eximbay.md +54 -0
- package/assets/docs/help/core-service/how-to-use/additional-inicis.md +97 -0
- package/assets/docs/help/core-service/how-to-use/additional-kakaopay.md +56 -0
- package/assets/docs/help/core-service/how-to-use/additional-kcp.md +53 -0
- package/assets/docs/help/core-service/how-to-use/additional-kicc.md +67 -0
- package/assets/docs/help/core-service/how-to-use/additional-ksnet.md +68 -0
- package/assets/docs/help/core-service/how-to-use/additional-mobilians.md +71 -0
- package/assets/docs/help/core-service/how-to-use/additional-naverpay-order.md +69 -0
- package/assets/docs/help/core-service/how-to-use/additional-naverpay.md +72 -0
- package/assets/docs/help/core-service/how-to-use/additional-nice.md +112 -0
- package/assets/docs/help/core-service/how-to-use/additional-payco.md +68 -0
- package/assets/docs/help/core-service/how-to-use/additional-settle.md +70 -0
- package/assets/docs/help/core-service/how-to-use/additional-smartro.md +70 -0
- package/assets/docs/help/core-service/how-to-use/additional-tosspay.md +57 -0
- package/assets/docs/help/core-service/how-to-use/additional-tosspayments.md +47 -0
- package/assets/docs/help/core-service/how-to-use/additional-welcome.md +72 -0
- package/assets/docs/help/core-service/how-to-use/cancel-deadline-by-paymethod.md +68 -0
- package/assets/docs/help/core-service/how-to-use/cancel-guide-using-admin-console.md +49 -0
- package/assets/docs/help/core-service/how-to-use/cancel-reversal.md +114 -0
- package/assets/docs/help/core-service/how-to-use/cellphone-identity-verification.md +62 -0
- package/assets/docs/help/core-service/how-to-use/content200000.md +72 -0
- package/assets/docs/help/core-service/how-to-use/content200009.md +83 -0
- package/assets/docs/help/core-service/how-to-use/danal-contract.md +82 -0
- package/assets/docs/help/core-service/how-to-use/daou-contract.md +82 -0
- package/assets/docs/help/core-service/how-to-use/eximbay-contract.md +75 -0
- package/assets/docs/help/core-service/how-to-use/high-risk-industry.md +554 -0
- package/assets/docs/help/core-service/how-to-use/identity-verification-value.md +61 -0
- package/assets/docs/help/core-service/how-to-use/impossible-partial-cancel.md +53 -0
- package/assets/docs/help/core-service/how-to-use/information-pg.md +151 -0
- package/assets/docs/help/core-service/how-to-use/inicis-contract.md +95 -0
- package/assets/docs/help/core-service/how-to-use/inicis-vat.md +45 -0
- package/assets/docs/help/core-service/how-to-use/inicis-vbank-refund.md +45 -0
- package/assets/docs/help/core-service/how-to-use/kakao-contract.md +73 -0
- package/assets/docs/help/core-service/how-to-use/kakaopay-contract.md +41 -0
- package/assets/docs/help/core-service/how-to-use/kcp-contract.md +82 -0
- package/assets/docs/help/core-service/how-to-use/kcp-vat.md +39 -0
- package/assets/docs/help/core-service/how-to-use/kcp-vbank-refund.md +46 -0
- package/assets/docs/help/core-service/how-to-use/kicc-contract.md +81 -0
- package/assets/docs/help/core-service/how-to-use/ksnet-contract.md +78 -0
- package/assets/docs/help/core-service/how-to-use/mobilians-contract.md +81 -0
- package/assets/docs/help/core-service/how-to-use/naverpay-contract.md +86 -0
- package/assets/docs/help/core-service/how-to-use/naverpay-order-1.md +36 -0
- package/assets/docs/help/core-service/how-to-use/naverpay-order-contract.md +88 -0
- package/assets/docs/help/core-service/how-to-use/naverpay-order-diff.md +66 -0
- package/assets/docs/help/core-service/how-to-use/naverpay-order-review-items.md +66 -0
- package/assets/docs/help/core-service/how-to-use/naverpay-review-items.md +199 -0
- package/assets/docs/help/core-service/how-to-use/nice-contract.md +81 -0
- package/assets/docs/help/core-service/how-to-use/open-immediately.md +60 -0
- package/assets/docs/help/core-service/how-to-use/other-hosting-company.md +38 -0
- package/assets/docs/help/core-service/how-to-use/payco-contract.md +74 -0
- package/assets/docs/help/core-service/how-to-use/payment-settlement-method.md +30 -0
- package/assets/docs/help/core-service/how-to-use/paymentwall-contract.md +85 -0
- package/assets/docs/help/core-service/how-to-use/paypal-contract.md +66 -0
- package/assets/docs/help/core-service/how-to-use/point-service.md +293 -0
- package/assets/docs/help/core-service/how-to-use/refund-date.md +66 -0
- package/assets/docs/help/core-service/how-to-use/requirements.md +100 -0
- package/assets/docs/help/core-service/how-to-use/settle-contract.md +79 -0
- package/assets/docs/help/core-service/how-to-use/shopify-available-list.md +65 -0
- package/assets/docs/help/core-service/how-to-use/shopify-guide.md +62 -0
- package/assets/docs/help/core-service/how-to-use/small-business-commission-fee.md +55 -0
- package/assets/docs/help/core-service/how-to-use/smartro-contract.md +77 -0
- package/assets/docs/help/core-service/how-to-use/test-mode-cancel.md +63 -0
- package/assets/docs/help/core-service/how-to-use/tosspay-contract.md +82 -0
- package/assets/docs/help/core-service/how-to-use/tosspayments-contract.md +82 -0
- package/assets/docs/help/core-service/how-to-use/welcome-contract.md +81 -0
- package/assets/docs/help/core-service/how-to-use/withsoft-guide.md +69 -0
- package/assets/docs/help/core-service/how-to-use/wordpress-available-pg.md +49 -0
- package/assets/docs/help/core-service/how-to-use/wordpress-setting.md +50 -0
- package/assets/docs/help/core-service/payment-type/billing-key.md +72 -0
- package/assets/docs/help/core-service/payment-type/content200003.md +39 -0
- package/assets/docs/help/core-service/payment-type/content200007.md +176 -0
- package/assets/docs/help/core-service/payment-type/content200036.md +37 -0
- package/assets/docs/help/core-service/payment-type/content200042.md +150 -0
- package/assets/docs/help/core-service/payment-type/content200047.md +215 -0
- package/assets/docs/help/core-service/payment-type/content200052.md +142 -0
- package/assets/docs/help/core-service/payment-type/content200053.md +128 -0
- package/assets/docs/help/core-service/payment-type/crossborder.md +132 -0
- package/assets/docs/help/core-service/payment-type/eximbay-international.md +96 -0
- package/assets/docs/help/core-service/payment-type/hub-service-fee.md +79 -0
- package/assets/docs/help/core-service/payment-type/inicis-easypay-hub-fee.md +45 -0
- package/assets/docs/help/core-service/payment-type/inicis-international.md +65 -0
- package/assets/docs/help/core-service/payment-type/internationl-high-risk-industry.md +267 -0
- package/assets/docs/help/core-service/payment-type/internationl-pg.md +42 -0
- package/assets/docs/help/core-service/payment-type/kcp-easypay-hub-apply.md +49 -0
- package/assets/docs/help/core-service/payment-type/kcp-international.md +60 -0
- package/assets/docs/help/core-service/payment-type/nice-easypay-hub-fee.md +72 -0
- package/assets/docs/help/core-service/payment-type/nice-international.md +51 -0
- package/assets/docs/help/core-service/payment-type/paymentwall-international.md +84 -0
- package/assets/docs/help/core-service/payment-type/paypal-international.md +86 -0
- package/assets/docs/help/core-service/payment-type/paypal-payment-status.md +55 -0
- package/assets/docs/help/core-service/payment-type/schedule-logic-guide.md +49 -0
- package/assets/docs/help/core-service/payment-type/schedule-requirement.md +111 -0
- package/assets/docs/help/core-service/payment-type/schedule-validity-guide.md +68 -0
- package/assets/docs/help/core-service/payment-type/tosspayment-international.md +54 -0
- package/assets/docs/help/core-service/payment-type/tosspayments-easypay-hub-fee.md +42 -0
- package/assets/docs/help/core-service/payment-type/webhook-re-send.md +41 -0
- package/assets/docs/help/faq/console-faq/2-depth-auth.md +53 -0
- package/assets/docs/help/faq/console-faq/add-admin-account.md +42 -0
- package/assets/docs/help/faq/console-faq/change-console-url.md +51 -0
- package/assets/docs/help/faq/console-faq/impossible-login.md +30 -0
- package/assets/docs/help/faq/console-faq/payment-list.md +45 -0
- package/assets/docs/help/faq/console-faq/sub-store-mgnt.md +97 -0
- package/assets/docs/help/faq/general-inquiry/change-business-number.md +32 -0
- package/assets/docs/help/faq/general-inquiry/confirm-process.md +118 -0
- package/assets/docs/help/faq/general-inquiry/content200004.md +55 -0
- package/assets/docs/help/faq/general-inquiry/content200006.md +86 -0
- package/assets/docs/help/faq/general-inquiry/content200011.md +24 -0
- package/assets/docs/help/faq/general-inquiry/content200031.md +194 -0
- package/assets/docs/help/faq/general-inquiry/content200041.md +21 -0
- package/assets/docs/help/faq/general-inquiry/contract-checkpoint.md +49 -0
- package/assets/docs/help/faq/general-inquiry/main-user.md +56 -0
- package/assets/docs/help/faq/general-inquiry/platform-contract-method.md +67 -0
- package/assets/docs/help/faq/general-inquiry/platform-contract-pg.md +234 -0
- package/assets/docs/help/faq/general-inquiry/portone-advantages.md +71 -0
- package/assets/docs/help/faq/general-inquiry/real-channel-info.md +70 -0
- package/assets/docs/help/faq/general-inquiry/what-is-the-small-business-fee.md +41 -0
- package/assets/docs/help/faq/payment-faq/business-card-available.md +55 -0
- package/assets/docs/help/faq/payment-faq/business-info-change.md +96 -0
- package/assets/docs/help/faq/payment-faq/cancel-deadline.md +32 -0
- package/assets/docs/help/faq/payment-faq/cancel-guide.md +48 -0
- package/assets/docs/help/faq/payment-faq/cash-receipt-guide.md +64 -0
- package/assets/docs/help/faq/payment-faq/content200022.md +73 -0
- package/assets/docs/help/faq/payment-faq/pg-max-min-amount.md +158 -0
- package/assets/docs/help/faq/payment-faq/receipt-guide.md +38 -0
- package/assets/docs/help/faq/payment-faq/tosspayments-cash-receipt.md +32 -0
- package/assets/docs/help/faq/payment-faq/vbank-info.md +35 -0
- package/assets/docs/help/faq/payment-faq/vbank-service-detail.md +67 -0
- package/assets/docs/help/faq/payment-faq/vbank-test-guide.md +65 -0
- package/assets/docs/help/faq/platform-faq/platform_function_partnerbulkupload.md +190 -0
- package/assets/docs/help/faq/platform-faq/platform_infosec.md +56 -0
- package/assets/docs/help/faq/platform-faq/platform_nocode_guide.md +104 -0
- package/assets/docs/help/faq/platform-faq/platform_payout_guide.md +75 -0
- package/assets/docs/help/faq/platform-faq/platform_policymanagement_calculator.md +73 -0
- package/assets/docs/help/faq/platform-faq/platform_settlmentandpayout_guide.md +83 -0
- package/assets/docs/help/faq/platform-faq/platform_tax_setting_guide.md +108 -0
- package/assets/docs/help/faq/platform-faq/taxinvoice_guide.md +107 -0
- package/assets/docs/help/faq/platform-faq/taxinvoice_signupemail.md +67 -0
- package/assets/docs/help/holidays.md +29 -0
- package/assets/docs/help/notice-kakaopay-2025-06-30.md +47 -0
- package/assets/docs/help/platform-2024-11-07.md +73 -0
- package/assets/docs/help/platform-2024-11-25.md +91 -0
- package/assets/docs/help/platform-2024-12-10.md +71 -0
- package/assets/docs/help/platform-2025-03-04.md +54 -0
- package/assets/docs/help/platform-2025-04-03.md +105 -0
- package/assets/docs/help/platform-2025-04-08.md +120 -0
- package/assets/docs/help/platform-2025-05-14.md +70 -0
- package/assets/docs/help/platform-2025-1-16.md +65 -0
- package/assets/docs/help/platform-2025-2-10.md +75 -0
- package/assets/docs/help/platform-2025-2-13.md +43 -0
- package/assets/docs/help/portone-service/portone-service/content50.md +80 -0
- package/assets/docs/help/pricing/pg/domestic-and-oversea-fees.md +34 -0
- package/assets/docs/help/pricing/portone/portone-pricing.md +116 -0
- package/assets/docs/help/procedure/payment-integration/real-integration.md +43 -0
- package/assets/docs/help/procedure/payment-integration/test-integration.md +91 -0
- package/assets/docs/help/procedure/pg-application/content53.md +49 -0
- package/assets/docs/help/procedure/pg-application/content54.md +136 -0
- package/assets/docs/help/procedure/pg-application/content59.md +53 -0
- package/assets/docs/help/procedure/pg-application/start.md +154 -0
- package/assets/docs/help/procedure/recommendation/package.md +98 -0
- package/assets/docs/help/procedure/service-addition/add-service.md +98 -0
- package/assets/docs/help/recon_issue1.md +25 -0
- package/assets/docs/help/recon_issue2.md +29 -0
- package/assets/docs/help/service/identity-verification/identity-verification.md +65 -0
- package/assets/docs/help/service/integration-type/integration-type.md +49 -0
- package/assets/docs/help/service/payment-type/payment-type.md +100 -0
- package/assets/docs/help/service/paymethod/paymethod.md +100 -0
- package/assets/docs/help/service/pg/pg-service-list.md +339 -0
- package/assets/docs/help/service/version/portone-version.md +61 -0
- package/assets/docs/opi/ko/console/guide/account.md +111 -0
- package/assets/docs/opi/ko/console/guide/api-keys.md +34 -0
- package/assets/docs/opi/ko/console/guide/billing-payments.md +312 -0
- package/assets/docs/opi/ko/console/guide/channel-manage.md +303 -0
- package/assets/docs/opi/ko/console/guide/connect.md +84 -0
- package/assets/docs/opi/ko/console/guide/home.md +37 -0
- package/assets/docs/opi/ko/console/guide/integration.md +18 -0
- package/assets/docs/opi/ko/console/guide/list.md +183 -0
- package/assets/docs/opi/ko/console/guide/pay.md +14 -0
- package/assets/docs/opi/ko/console/guide/payments.md +298 -0
- package/assets/docs/opi/ko/console/guide/promotion.md +140 -0
- package/assets/docs/opi/ko/console/guide/readme.md +22 -0
- package/assets/docs/opi/ko/console/guide/reg.md +159 -0
- package/assets/docs/opi/ko/console/guide/smartrouting.md +74 -0
- package/assets/docs/opi/ko/console/pg.md +92 -0
- package/assets/docs/opi/ko/etc/recon.md +286 -0
- package/assets/docs/opi/ko/extra/confirm-process/readme-v1.md +98 -0
- package/assets/docs/opi/ko/extra/confirm-process/readme-v2.md +152 -0
- package/assets/docs/opi/ko/extra/identity-verification/readme-v2.md +261 -0
- package/assets/docs/opi/ko/extra/identity-verification/v1/all/0.md +35 -0
- package/assets/docs/opi/ko/extra/identity-verification/v1/all/1.md +44 -0
- package/assets/docs/opi/ko/extra/identity-verification/v1/all/2.md +75 -0
- package/assets/docs/opi/ko/extra/identity-verification/v1/all/3.md +134 -0
- package/assets/docs/opi/ko/extra/identity-verification/v1/all/readme.md +17 -0
- package/assets/docs/opi/ko/extra/identity-verification/v1/credit-auth/1.md +35 -0
- package/assets/docs/opi/ko/extra/identity-verification/v1/credit-auth/2.md +78 -0
- package/assets/docs/opi/ko/extra/identity-verification/v1/credit-auth/3.md +75 -0
- package/assets/docs/opi/ko/extra/identity-verification/v1/credit-auth/4.md +134 -0
- package/assets/docs/opi/ko/extra/identity-verification/v1/credit-auth/readme.md +17 -0
- package/assets/docs/opi/ko/extra/identity-verification/v1/phone/1.md +37 -0
- package/assets/docs/opi/ko/extra/identity-verification/v1/phone/2.md +86 -0
- package/assets/docs/opi/ko/extra/identity-verification/v1/phone/3.md +77 -0
- package/assets/docs/opi/ko/extra/identity-verification/v1/phone/4.md +149 -0
- package/assets/docs/opi/ko/extra/identity-verification/v1/phone/readme.md +19 -0
- package/assets/docs/opi/ko/extra/identity-verification/v1/readme.md +9 -0
- package/assets/docs/opi/ko/extra/link-pay/readme-v1.md +235 -0
- package/assets/docs/opi/ko/extra/plugins/readme-v1.md +7 -0
- package/assets/docs/opi/ko/extra/plugins/shopify/readme-v1.md +54 -0
- package/assets/docs/opi/ko/extra/plugins/shopify/shopify/shopify-1.md +16 -0
- package/assets/docs/opi/ko/extra/plugins/shopify/shopify/shopify-2.md +32 -0
- package/assets/docs/opi/ko/extra/plugins/shopify/shopify/shopify-3.md +16 -0
- package/assets/docs/opi/ko/extra/plugins/shopify/shopify/shopify-4.md +35 -0
- package/assets/docs/opi/ko/extra/plugins/shopify/shopify/shopify-5.md +27 -0
- package/assets/docs/opi/ko/extra/plugins/wordpress/button.md +166 -0
- package/assets/docs/opi/ko/extra/plugins/wordpress/edd.md +56 -0
- package/assets/docs/opi/ko/extra/plugins/wordpress/readme-v1.md +10 -0
- package/assets/docs/opi/ko/extra/plugins/wordpress/woocommerce/payment.md +62 -0
- package/assets/docs/opi/ko/extra/plugins/wordpress/woocommerce/readme.md +30 -0
- package/assets/docs/opi/ko/extra/plugins/wordpress/woocommerce/subscription.md +60 -0
- package/assets/docs/opi/ko/extra/plugins/wordpress/woocommerce/vbank.md +64 -0
- package/assets/docs/opi/ko/extra/promotion/console-guide.md +148 -0
- package/assets/docs/opi/ko/extra/promotion/integration.md +769 -0
- package/assets/docs/opi/ko/extra/promotion/intro.md +31 -0
- package/assets/docs/opi/ko/extra/promotion/refund.md +316 -0
- package/assets/docs/opi/ko/extra/smart-routing/console-guide.md +73 -0
- package/assets/docs/opi/ko/extra/smart-routing/integration.md +1324 -0
- package/assets/docs/opi/ko/extra/smart-routing/intro.md +155 -0
- package/assets/docs/opi/ko/integration/cancel/v1/basic.md +324 -0
- package/assets/docs/opi/ko/integration/cancel/v1/virtual-account.md +99 -0
- package/assets/docs/opi/ko/integration/cancel/v2/readme.md +378 -0
- package/assets/docs/opi/ko/integration/checklist/readme-v1.md +83 -0
- package/assets/docs/opi/ko/integration/pg/v1/blue.md +99 -0
- package/assets/docs/opi/ko/integration/pg/v1/danal.md +409 -0
- package/assets/docs/opi/ko/integration/pg/v1/daou/readme.md +305 -0
- package/assets/docs/opi/ko/integration/pg/v1/daou/undefined.md +214 -0
- package/assets/docs/opi/ko/integration/pg/v1/eximbay.md +242 -0
- package/assets/docs/opi/ko/integration/pg/v1/hyphen.md +196 -0
- package/assets/docs/opi/ko/integration/pg/v1/inicis.md +444 -0
- package/assets/docs/opi/ko/integration/pg/v1/kakaopay.md +207 -0
- package/assets/docs/opi/ko/integration/pg/v1/kcp-v2-identity-verification.md +188 -0
- package/assets/docs/opi/ko/integration/pg/v1/kg.md +177 -0
- package/assets/docs/opi/ko/integration/pg/v1/kicc.md +308 -0
- package/assets/docs/opi/ko/integration/pg/v1/ksnet/readme.md +533 -0
- package/assets/docs/opi/ko/integration/pg/v1/ksnet/warning.md +175 -0
- package/assets/docs/opi/ko/integration/pg/v1/naver.md +558 -0
- package/assets/docs/opi/ko/integration/pg/v1/newtoss/readme.md +503 -0
- package/assets/docs/opi/ko/integration/pg/v1/newtoss/warning.md +364 -0
- package/assets/docs/opi/ko/integration/pg/v1/nhn-kcp.md +1186 -0
- package/assets/docs/opi/ko/integration/pg/v1/nice-v2/billing-api-caution.md +150 -0
- package/assets/docs/opi/ko/integration/pg/v1/nice-v2/payment-caution.md +429 -0
- package/assets/docs/opi/ko/integration/pg/v1/nice-v2/readme.md +364 -0
- package/assets/docs/opi/ko/integration/pg/v1/nice.md +319 -0
- package/assets/docs/opi/ko/integration/pg/v1/payco.md +201 -0
- package/assets/docs/opi/ko/integration/pg/v1/paymentwall.md +283 -0
- package/assets/docs/opi/ko/integration/pg/v1/paypal.md +158 -0
- package/assets/docs/opi/ko/integration/pg/v1/readme.md +73 -0
- package/assets/docs/opi/ko/integration/pg/v1/rt/readme.md +501 -0
- package/assets/docs/opi/ko/integration/pg/v1/rt/warning.md +297 -0
- package/assets/docs/opi/ko/integration/pg/v1/settle/mybank.md +304 -0
- package/assets/docs/opi/ko/integration/pg/v1/settle/readme.md +185 -0
- package/assets/docs/opi/ko/integration/pg/v1/smartro-v2/api.md +197 -0
- package/assets/docs/opi/ko/integration/pg/v1/smartro-v2/caution.md +387 -0
- package/assets/docs/opi/ko/integration/pg/v1/smartro-v2/readme.md +293 -0
- package/assets/docs/opi/ko/integration/pg/v1/smartro.md +104 -0
- package/assets/docs/opi/ko/integration/pg/v1/smilepay.md +97 -0
- package/assets/docs/opi/ko/integration/pg/v1/spb/readme.md +441 -0
- package/assets/docs/opi/ko/integration/pg/v1/spb/stc.md +226 -0
- package/assets/docs/opi/ko/integration/pg/v1/spb/warning.md +729 -0
- package/assets/docs/opi/ko/integration/pg/v1/toss-brandpay/module.md +227 -0
- package/assets/docs/opi/ko/integration/pg/v1/toss-brandpay/readme.md +404 -0
- package/assets/docs/opi/ko/integration/pg/v1/toss-brandpay/warning.md +81 -0
- package/assets/docs/opi/ko/integration/pg/v1/toss-brandpay/widget.md +152 -0
- package/assets/docs/opi/ko/integration/pg/v1/toss.md +112 -0
- package/assets/docs/opi/ko/integration/pg/v1/tosspay-v2/caution.md +65 -0
- package/assets/docs/opi/ko/integration/pg/v1/tosspay-v2/readme.md +308 -0
- package/assets/docs/opi/ko/integration/pg/v1/tosspay.md +110 -0
- package/assets/docs/opi/ko/integration/pg/v1/welcome/api.md +229 -0
- package/assets/docs/opi/ko/integration/pg/v1/welcome/caution.md +517 -0
- package/assets/docs/opi/ko/integration/pg/v1/welcome/readme.md +795 -0
- package/assets/docs/opi/ko/integration/pg/v2/danal-identity-verification.md +121 -0
- package/assets/docs/opi/ko/integration/pg/v2/eximbay-v2.md +964 -0
- package/assets/docs/opi/ko/integration/pg/v2/hyphen.md +205 -0
- package/assets/docs/opi/ko/integration/pg/v2/inicis-jp.md +403 -0
- package/assets/docs/opi/ko/integration/pg/v2/inicis-unified-identity-verification.md +89 -0
- package/assets/docs/opi/ko/integration/pg/v2/inicis-v2.md +1598 -0
- package/assets/docs/opi/ko/integration/pg/v2/kakaopay.md +108 -0
- package/assets/docs/opi/ko/integration/pg/v2/kcp-v2-identity-verification.md +291 -0
- package/assets/docs/opi/ko/integration/pg/v2/kcp-v2.md +1273 -0
- package/assets/docs/opi/ko/integration/pg/v2/kpn.md +1133 -0
- package/assets/docs/opi/ko/integration/pg/v2/ksnet.md +526 -0
- package/assets/docs/opi/ko/integration/pg/v2/naverpay.md +186 -0
- package/assets/docs/opi/ko/integration/pg/v2/nice-v2.md +868 -0
- package/assets/docs/opi/ko/integration/pg/v2/payletter-global.md +62 -0
- package/assets/docs/opi/ko/integration/pg/v2/paypal-v2.md +1874 -0
- package/assets/docs/opi/ko/integration/pg/v2/readme.md +194 -0
- package/assets/docs/opi/ko/integration/pg/v2/smartro-v2.md +1043 -0
- package/assets/docs/opi/ko/integration/pg/v2/tosspay-v2.md +433 -0
- package/assets/docs/opi/ko/integration/pg/v2/tosspayments.md +551 -0
- package/assets/docs/opi/ko/integration/pg/v2/welcome.md +1441 -0
- package/assets/docs/opi/ko/integration/ready/readme.md +1069 -0
- package/assets/docs/opi/ko/integration/start/v1/auth.md +483 -0
- package/assets/docs/opi/ko/integration/start/v1/non-auth.md +420 -0
- package/assets/docs/opi/ko/integration/start/v1/readme.md +9 -0
- package/assets/docs/opi/ko/integration/start/v2/billing/issue.md +122 -0
- package/assets/docs/opi/ko/integration/start/v2/billing/payment.md +41 -0
- package/assets/docs/opi/ko/integration/start/v2/billing/readme.md +24 -0
- package/assets/docs/opi/ko/integration/start/v2/billing/schedule.md +54 -0
- package/assets/docs/opi/ko/integration/start/v2/checkout.md +258 -0
- package/assets/docs/opi/ko/integration/start/v2/keyin.md +54 -0
- package/assets/docs/opi/ko/integration/start/v2/readme.md +120 -0
- package/assets/docs/opi/ko/integration/using-ai-tools.md +140 -0
- package/assets/docs/opi/ko/integration/virtual-account/readme.md +268 -0
- package/assets/docs/opi/ko/integration/webhook/readme-v1.md +242 -0
- package/assets/docs/opi/ko/integration/webhook/readme-v2.md +599 -0
- package/assets/docs/opi/ko/quick-guide/payment.md +3305 -0
- package/assets/docs/opi/ko/readme.md +193 -0
- package/assets/docs/opi/ko/support/agency-and-tier.md +51 -0
- package/assets/docs/opi/ko/support/code-info/card-code.md +29 -0
- package/assets/docs/opi/ko/support/code-info/code.md +22 -0
- package/assets/docs/opi/ko/support/code-info/pg-1.md +161 -0
- package/assets/docs/opi/ko/support/code-info/pg-2.md +41 -0
- package/assets/docs/opi/ko/support/code-info/pg-3.md +36 -0
- package/assets/docs/opi/ko/support/code-info/pg.md +41 -0
- package/assets/docs/opi/ko/support/code-info/portone-code.md +15 -0
- package/assets/docs/opi/ko/support/code-info/readme.md +20 -0
- package/assets/docs/opi/ko/support/contact.md +23 -0
- package/assets/docs/opi/ko/support/faq/undefined.md +60 -0
- package/assets/docs/opi/ko/support/flow.md +24 -0
- package/assets/docs/opi/ko/support/redirect.md +26 -0
- package/assets/docs/opi/ko/support/tax.md +142 -0
- package/assets/docs/opi/ko/support/tls-support.md +497 -0
- package/assets/docs/platform/ko/guides/dictionary.md +20 -0
- package/assets/docs/platform/ko/guides/process.md +33 -0
- package/assets/docs/platform/ko/guides/webhook.md +171 -0
- package/assets/docs/platform/ko/readme.md +64 -0
- package/assets/docs/platform/ko/usages/client.md +17 -0
- package/assets/docs/platform/ko/usages/contract.md +126 -0
- package/assets/docs/platform/ko/usages/discount.md +89 -0
- package/assets/docs/platform/ko/usages/fee.md +97 -0
- package/assets/docs/platform/ko/usages/order.md +1666 -0
- package/assets/docs/platform/ko/usages/partner.md +115 -0
- package/assets/docs/platform/ko/using-ai-tools.md +140 -0
- package/assets/docs/release-notes/api-sdk/2023-04-24.md +10 -0
- package/assets/docs/release-notes/api-sdk/2023-05-08.md +22 -0
- package/assets/docs/release-notes/api-sdk/2023-05-12.md +24 -0
- package/assets/docs/release-notes/api-sdk/2023-05-22.md +46 -0
- package/assets/docs/release-notes/api-sdk/2023-05-25.md +15 -0
- package/assets/docs/release-notes/api-sdk/2023-06-19.md +20 -0
- package/assets/docs/release-notes/api-sdk/2023-07-03.md +26 -0
- package/assets/docs/release-notes/api-sdk/2023-07-10.md +35 -0
- package/assets/docs/release-notes/api-sdk/2023-07-17.md +31 -0
- package/assets/docs/release-notes/api-sdk/2023-07-31.md +14 -0
- package/assets/docs/release-notes/api-sdk/2023-08-31.md +29 -0
- package/assets/docs/release-notes/api-sdk/2023-12-15.md +12 -0
- package/assets/docs/release-notes/api-sdk/2024-01-08.md +36 -0
- package/assets/docs/release-notes/api-sdk/2024-01-11.md +18 -0
- package/assets/docs/release-notes/api-sdk/2024-01-25.md +35 -0
- package/assets/docs/release-notes/api-sdk/2024-01-30.md +19 -0
- package/assets/docs/release-notes/api-sdk/2024-02-23.md +26 -0
- package/assets/docs/release-notes/api-sdk/2024-03-08.md +12 -0
- package/assets/docs/release-notes/api-sdk/2024-03-15.md +30 -0
- package/assets/docs/release-notes/api-sdk/2024-03-25.md +23 -0
- package/assets/docs/release-notes/api-sdk/2024-04-01.md +37 -0
- package/assets/docs/release-notes/api-sdk/2024-04-05.md +10 -0
- package/assets/docs/release-notes/api-sdk/2024-04-12.md +32 -0
- package/assets/docs/release-notes/api-sdk/2024-05-08.md +34 -0
- package/assets/docs/release-notes/api-sdk/2024-05-14.md +17 -0
- package/assets/docs/release-notes/api-sdk/2024-06-03.md +48 -0
- package/assets/docs/release-notes/api-sdk/2024-06-17.md +37 -0
- package/assets/docs/release-notes/api-sdk/2024-06-19.md +39 -0
- package/assets/docs/release-notes/api-sdk/2024-06-20.md +13 -0
- package/assets/docs/release-notes/api-sdk/2024-07-04.md +15 -0
- package/assets/docs/release-notes/api-sdk/2024-07-11.md +47 -0
- package/assets/docs/release-notes/api-sdk/2024-09-05.md +36 -0
- package/assets/docs/release-notes/api-sdk/2024-09-27.md +27 -0
- package/assets/docs/release-notes/api-sdk/2024-12-19.md +52 -0
- package/assets/docs/release-notes/api-sdk/2025-01-15.md +76 -0
- package/assets/docs/release-notes/api-sdk/2025-05-19.md +49 -0
- package/assets/docs/release-notes/console/2023-04-24.md +41 -0
- package/assets/docs/release-notes/console/2023-05-08.md +6 -0
- package/assets/docs/release-notes/console/2023-05-22.md +15 -0
- package/assets/docs/release-notes/console/2023-07-05.md +29 -0
- package/assets/docs/release-notes/console/2023-07-07.md +25 -0
- package/assets/docs/release-notes/console/2023-07-17.md +16 -0
- package/assets/docs/release-notes/console/2023-08-23.md +17 -0
- package/assets/docs/release-notes/console/2023-09-12.md +16 -0
- package/assets/docs/release-notes/console/2023-12-27.md +24 -0
- package/assets/docs/release-notes/console/2024-09-05.md +23 -0
- package/assets/docs/release-notes/platform/2023-08-31.md +16 -0
- package/assets/docs/release-notes/platform/2023-11-08.md +37 -0
- package/assets/docs/release-notes/platform/2023-11-14.md +28 -0
- package/assets/docs/release-notes/platform/2023-12-15.md +11 -0
- package/assets/docs/release-notes/platform/2024-05-20.md +31 -0
- package/assets/docs/release-notes/platform/2024-05-29.md +159 -0
- package/assets/docs/release-notes/platform/2024-06-05.md +30 -0
- package/assets/docs/release-notes/platform/2024-07-05.md +49 -0
- package/assets/docs/release-notes/platform/2024-07-11.md +62 -0
- package/assets/docs/release-notes/platform/2024-07-30.md +44 -0
- package/assets/docs/release-notes/platform/2024-08-07.md +37 -0
- package/assets/docs/release-notes/platform/2024-08-22.md +111 -0
- package/assets/docs/release-notes/platform/2024-10-21.md +75 -0
- package/assets/docs/release-notes/platform/2024-11-07.md +65 -0
- package/assets/docs/release-notes/platform/2024-11-25.md +82 -0
- package/assets/docs/release-notes/platform/2024-12-10.md +61 -0
- package/assets/docs/release-notes/platform/2025-01-16.md +56 -0
- package/assets/docs/release-notes/platform/2025-02-10.md +67 -0
- package/assets/docs/release-notes/platform/2025-02-13.md +27 -0
- package/assets/docs/release-notes/platform/2025-03-04.md +49 -0
- package/assets/docs/release-notes/platform/2025-03-17.md +40 -0
- package/assets/docs/release-notes/platform/2025-04-03.md +96 -0
- package/assets/docs/release-notes/platform/2025-04-08.md +119 -0
- package/assets/docs/release-notes/platform/2025-05-14.md +77 -0
- package/assets/docs/release-notes/platform/2025-07-02.md +64 -0
- package/assets/docs/release-notes/platform/2025-07-07.md +55 -0
- package/assets/docs/schema/browser-sdk.yml +6349 -0
- package/assets/docs/schema/v1.openapi.json +11632 -0
- package/assets/docs/schema/v1.openapi.yml +11489 -0
- package/assets/docs/schema/v2.graphql +13849 -0
- package/assets/docs/schema/v2.openapi.json +47721 -0
- package/assets/docs/schema/v2.openapi.yml +34749 -0
- package/assets/docs/sdk/ko/readme.md +56 -0
- package/assets/docs/sdk/ko/v1-mobile-sdk/readme.md +31 -0
- package/assets/docs/sdk/ko/v1-sdk/javascript-sdk/cft-rt.md +32 -0
- package/assets/docs/sdk/ko/v1-sdk/javascript-sdk/cft.md +108 -0
- package/assets/docs/sdk/ko/v1-sdk/javascript-sdk/load-module-rt.md +10 -0
- package/assets/docs/sdk/ko/v1-sdk/javascript-sdk/load-module.md +55 -0
- package/assets/docs/sdk/ko/v1-sdk/javascript-sdk/payrq.md +502 -0
- package/assets/docs/sdk/ko/v1-sdk/javascript-sdk/payrt.md +300 -0
- package/assets/docs/sdk/ko/v1-sdk/javascript-sdk/readme.md +46 -0
- package/assets/docs/sdk/ko/v1-sdk/javascript-sdk-old/readme.md +33 -0
- package/assets/docs/sdk/ko/v2-mobile-sdk/android.md +268 -0
- package/assets/docs/sdk/ko/v2-mobile-sdk/react-native.md +239 -0
- package/assets/docs/sdk/ko/v2-mobile-sdk/readme.md +30 -0
- package/assets/docs/sdk/ko/v2-sdk/billing-key-and-pay-request.md +26 -0
- package/assets/docs/sdk/ko/v2-sdk/billing-key-and-pay-response.md +15 -0
- package/assets/docs/sdk/ko/v2-sdk/billing-key-request.md +24 -0
- package/assets/docs/sdk/ko/v2-sdk/billing-key-response.md +15 -0
- package/assets/docs/sdk/ko/v2-sdk/changelog.md +8 -0
- package/assets/docs/sdk/ko/v2-sdk/identity-verification-request.md +15 -0
- package/assets/docs/sdk/ko/v2-sdk/identity-verification-response.md +15 -0
- package/assets/docs/sdk/ko/v2-sdk/load-issue-billing-key-ui-request.md +15 -0
- package/assets/docs/sdk/ko/v2-sdk/load-issue-billing-key-ui-response.md +23 -0
- package/assets/docs/sdk/ko/v2-sdk/load-payment-ui-request.md +15 -0
- package/assets/docs/sdk/ko/v2-sdk/load-payment-ui-response.md +23 -0
- package/assets/docs/sdk/ko/v2-sdk/payment-request.md +15 -0
- package/assets/docs/sdk/ko/v2-sdk/payment-response.md +15 -0
- package/assets/docs/sdk/ko/v2-sdk/readme.md +73 -0
- package/assets/docs/sdk/ko/v2-sdk/update-load-issue-billing-key-ui-request.md +15 -0
- package/assets/docs/sdk/ko/v2-sdk/update-load-payment-ui-request.md +15 -0
- package/assets/docs/sdk/ko/v2-server-sdk/javascript.md +170 -0
- package/assets/docs/sdk/ko/v2-server-sdk/jvm.md +170 -0
- package/assets/docs/sdk/ko/v2-server-sdk/python.md +152 -0
- package/assets/docs/sdk/ko/v2-server-sdk/readme.md +259 -0
- package/assets/docs/v1-docs-full.md +36540 -0
- package/assets/docs/v2-docs-full.md +34980 -0
- package/assets/docs/website-links.md +331 -0
- package/assets/instructions.md +19 -0
- package/manifest.json +50 -0
- package/package.json +66 -0
- package/server/index.js +1764 -0
|
@@ -0,0 +1,420 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: 비인증결제 연동하기
|
|
3
|
+
description: 카드 정보를 직접 입력하여 일회성 결제 또는 빌링키를 발급 및 정기결제 이용 방법을 안내합니다.
|
|
4
|
+
targetVersions:
|
|
5
|
+
- v1
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
## 비인증 결제란?
|
|
9
|
+
|
|
10
|
+
카드 번호, 유효기간, 카드 소유주 생년월일, 비밀번호 2자리 등 카드 정보를 직접 입력하여 일회성 결제(키인(수기)결제)
|
|
11
|
+
방식과 카드 정보를 이용하여 빌링키를 발급하고 판매자가 원하는 시점에 고객의 별도 인증 없이 결제를 요청하는 방식을 통칭합니다.
|
|
12
|
+
|
|
13
|
+
<div class="hint" data-style="info">
|
|
14
|
+
|
|
15
|
+
구매자의 인증 없이도 결제를 진행할 수 있어 간편하다는 장점이 있지만 구매자 인증 과정이 생략되는만큼
|
|
16
|
+
서비스 운영 중 보안상의 이슈가 발생할 확률이 높아 **결제대행사 가입 시 입점심사가 까다롭게 진행**된다는 점 참고해주세요.
|
|
17
|
+
|
|
18
|
+
</div>
|
|
19
|
+
|
|
20
|
+
## 키인결제
|
|
21
|
+
|
|
22
|
+
구매자 인증 없이 카드정보만으로 결제되는 방식(일회성 결제)입니다.
|
|
23
|
+
키인(수기) 결제는 카드 정보를 입력하는 것만으로 별도 인증절차 없이 결제가 이루어지며,
|
|
24
|
+
결제는 일회성으로 진행되고 카드정보를 저장하지 않기 때문에 결제 요청 시 매번 카드정보를 입력해야 합니다.
|
|
25
|
+
|
|
26
|
+
<div class="hint" data-style="info">
|
|
27
|
+
|
|
28
|
+
주로 ARS를 통해 고객분께 카드 정보를 획득하여 결제를 요청하는 콜센타 또는
|
|
29
|
+
인증결제의 번거로움을 회피하기 위해 일부 고객사에서 사용하는 방식입니다.
|
|
30
|
+
최근에는 인증결제가 간편결제방식으로 전환되면서
|
|
31
|
+
매번 카드정보를 기입해야 하는 번거로움 때문에 많이 사용되지 않은 방식입니다.
|
|
32
|
+
|
|
33
|
+
</div>
|
|
34
|
+
|
|
35
|
+
카드 정보를 바탕으로 [비 인증 결제(일회성) API](https://developers.portone.io/api/rest-v1/nonAuthPayment#post%20%2Fsubscribe%2Fpayments%2Fonetime)
|
|
36
|
+
를 이용하여 결제를 진행하는 방식입니다.
|
|
37
|
+
|
|
38
|
+
- **지원 결제대행사**
|
|
39
|
+
- KG이니시스
|
|
40
|
+
- NHN KCP
|
|
41
|
+
- 나이스페이먼츠 (구모듈, 신모듈)
|
|
42
|
+
- 토스페이먼츠 (신모듈)
|
|
43
|
+
- 키움페이
|
|
44
|
+
- KSNET
|
|
45
|
+
- 웰컴페이먼츠
|
|
46
|
+
- 헥토파이낸셜
|
|
47
|
+
|
|
48
|
+
```ts title="server-side"
|
|
49
|
+
// card_number, expiry, birth, pwd_2digit 등 정보를 전달받습니다.
|
|
50
|
+
// 포트원 비인증 결제(일회성) API 호출
|
|
51
|
+
const onetimeResponse = await fetch(
|
|
52
|
+
"https://api.iamport.kr/subscribe/payments/onetime",
|
|
53
|
+
{
|
|
54
|
+
method: "POST",
|
|
55
|
+
headers: {
|
|
56
|
+
Authorization: `Bearer ${ACCESS_TOKEN}`,
|
|
57
|
+
"Content-Type": "application/json",
|
|
58
|
+
},
|
|
59
|
+
body: JSON.stringify({
|
|
60
|
+
pg: `${pg_provider}.${pg_mid}`,
|
|
61
|
+
card_number: "YYYY-YYYY-YYYY-YYYY", // 카드 번호 16자리
|
|
62
|
+
expiry: "YYYY-MM", // 카드 유효기간
|
|
63
|
+
birth: "YYMMDD", // 생년 월일. 무기명 법인카드의 경우 사업자 번호 10자리 입력
|
|
64
|
+
pwd_2digit: "NN", //카드 비밀번호 앞 2자리
|
|
65
|
+
// 중략...
|
|
66
|
+
}),
|
|
67
|
+
},
|
|
68
|
+
);
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
## 빌링키 결제
|
|
72
|
+
|
|
73
|
+
카드 정보를 바탕으로 빌링키를 발급한 후 해당 빌링키를 이용하여 결제되는 방식입니다.
|
|
74
|
+
빌링키를 이용하여 즉시 결제 또는 결제를 예약하여 정기결제 형식으로 이용할 수 있습니다.
|
|
75
|
+
|
|
76
|
+
<div class="hint" data-style="info">
|
|
77
|
+
|
|
78
|
+
**빌링키란?**
|
|
79
|
+
|
|
80
|
+
구독형 정기결제, 종량제 과금결제 등 구현 시 원하는 시점에 재 결제를 진행할 수 있는 결제용 암호화 키 입니다.
|
|
81
|
+
고객사가 고객의 카드 정보를 소유할 수 없기 때문에 카드사로부터 해당 카드에 대응하는 빌링키를
|
|
82
|
+
발급받아 저장하고, 이후 원하는 시점에 해당 빌링키로 결제를 청구하기 위해 사용합니다.
|
|
83
|
+
|
|
84
|
+
</div>
|
|
85
|
+
|
|
86
|
+
### 빌링키 발급하기
|
|
87
|
+
|
|
88
|
+
빌링키는 결제대행사에 따라 다음 두 가지 방식을 이용하여 발급받을 수 있습니다.
|
|
89
|
+
|
|
90
|
+
#### REST API 방식
|
|
91
|
+
|
|
92
|
+
고객 결제 정보를 이용하여 [빌링키 발급 API](https://developers.portone.io/api/rest-v1/billingkey#post%20%2Fsubscribe%2Fcustomers%2F%7Bcustomer_uid%7D)를
|
|
93
|
+
호출하면 포트원 서버가 결제대행사를 통해 빌링키를 발급받습니다.
|
|
94
|
+
|
|
95
|
+
이 과정에서 고객의 카드 정보는 포트원 서버에 기록되지 않습니다.
|
|
96
|
+
|
|
97
|
+
브라우저로부터 결제 정보를 전달 받은 뒤, 서버에서 포트원 API를 호출하세요.
|
|
98
|
+
|
|
99
|
+
- **장점**
|
|
100
|
+
- 고객사가 원하는 형태의 화면으로 **카드정보 입력란을 커스터마이징**할 수 있습니다.
|
|
101
|
+
- 고객사 UI/UX 친화적인 결제 환경을 계획하고 계시다면 API 연동 개발을 선택하시길 권장드립니다.
|
|
102
|
+
|
|
103
|
+
- **단점**
|
|
104
|
+
- **개인정보 이용약관**을 명시해야 하며 PG사 및 카드사 심사가 까다롭고 개인정보 유출에 유의해야 합니다.
|
|
105
|
+
|
|
106
|
+
- **지원 결제대행사**
|
|
107
|
+
- KG이니시스
|
|
108
|
+
- NHN KCP
|
|
109
|
+
- 나이스페이먼츠 (구모듈, 신모듈)
|
|
110
|
+
- 토스페이먼츠 (신모듈)
|
|
111
|
+
- 키움페이
|
|
112
|
+
- KSNET
|
|
113
|
+
- 웰컴페이먼츠
|
|
114
|
+
- 헥토파이낸셜
|
|
115
|
+
|
|
116
|
+
```ts title="server-side"
|
|
117
|
+
// customer_uid, card_number, expiry, birth, pwd_2digit 등 정보를 전달받습니다.
|
|
118
|
+
// 포트원 빌링키 발급 API 호출
|
|
119
|
+
const issueResponse = await fetch(
|
|
120
|
+
`https://api.iamport.kr/subscribe/customers/${customer_uid}`,
|
|
121
|
+
{
|
|
122
|
+
method: "POST",
|
|
123
|
+
headers: {
|
|
124
|
+
Authorization: `Bearer ${ACCESS_TOKEN}`,
|
|
125
|
+
"Content-Type": "application/json",
|
|
126
|
+
},
|
|
127
|
+
body: JSON.stringify({
|
|
128
|
+
pg: `${pg_provider}.${pg_mid}`,
|
|
129
|
+
customer_id: customer_id, //고객 식별 정보로 고객사에서 기입
|
|
130
|
+
card_number: "YYYY-YYYY-YYYY-YYYY", // 카드 번호 16자리
|
|
131
|
+
expiry: "YYYY-MM", // 카드 유효기간
|
|
132
|
+
birth: "YYMMDD", // 생년 월일. 무기명 법인카드의 경우 사업자 번호 10자리 입력
|
|
133
|
+
pwd_2digit: "NN", //카드 비밀번호 앞 2자리
|
|
134
|
+
// 중략...
|
|
135
|
+
}),
|
|
136
|
+
},
|
|
137
|
+
);
|
|
138
|
+
if (!issueResponse.ok)
|
|
139
|
+
throw new Error(`issueResponse: ${await issueResponse.json()}`);
|
|
140
|
+
const {
|
|
141
|
+
billingKeyInfo: { customer_uid },
|
|
142
|
+
} = await issueResponse.json();
|
|
143
|
+
// 빌링키가 발급되었습니다! 빌링키를 저장하거나 결제하는 로직을 구성하세요.
|
|
144
|
+
```
|
|
145
|
+
|
|
146
|
+
#### 결제창(SDK) 방식
|
|
147
|
+
|
|
148
|
+
결제창을 이용해 빌링키를 발급할 때는 포트원 SDK를 이용합니다.
|
|
149
|
+
|
|
150
|
+
포트원 SDK를 설치하는 방법은
|
|
151
|
+
[포트원 SDK 설치하기](https://developers.portone.io/opi/ko/integration/start/v1/auth?v=v1#1-포트원-sdk-설치하기-) 문서를 참고하세요.
|
|
152
|
+
|
|
153
|
+
`IMP.request_pay()` 함수를 호출 시 `customer_uid` 파라미터를 포함하는 경우 빌링키를 발급하기 위한
|
|
154
|
+
결제창을 열 수 있습니다.
|
|
155
|
+
|
|
156
|
+
브라우저에서 포트원 SDK를 호출하여 빌링키를 발급하고, 서버로 빌링키를 전달합니다.
|
|
157
|
+
|
|
158
|
+
- **장점**
|
|
159
|
+
- 결제 수단 정보가 고객사나 포트원의 서버를 거치지 않고 직접 PG사로 전달되기 때문에 보안 문제가 일어날 가능성이 적습니다.
|
|
160
|
+
|
|
161
|
+
- **단점**
|
|
162
|
+
- PG사의 일반결제창을 통해 카드정보를 입력받기 때문에 웹브라우저를 통해서만 빌링키 발급이 이루어지며,
|
|
163
|
+
**카드정보 입력란을 커스터마이징 할 수 없습니다.**
|
|
164
|
+
|
|
165
|
+
- **지원 결제대행사**
|
|
166
|
+
- KG이니시스
|
|
167
|
+
- NHN KCP
|
|
168
|
+
- 토스페이먼츠 (신모듈)
|
|
169
|
+
- 다날
|
|
170
|
+
- 이지페이(KICC)
|
|
171
|
+
- 모빌리언스 (휴대폰 소액결제 한정)
|
|
172
|
+
- 웰컴페이먼츠
|
|
173
|
+
- 스마트로 (신모듈)
|
|
174
|
+
- 헥토파이낸셜 (내통장 결제 한정)
|
|
175
|
+
- 카카오페이
|
|
176
|
+
- 네이버페이 (결제형 한정)
|
|
177
|
+
- 페이코
|
|
178
|
+
- 스마일페이
|
|
179
|
+
- 토스페이 (신모듈)
|
|
180
|
+
- 페이먼트월
|
|
181
|
+
- 페이팔 (RT)
|
|
182
|
+
|
|
183
|
+
```ts
|
|
184
|
+
IMP.request_pay(
|
|
185
|
+
{
|
|
186
|
+
customer_uid: "gildong_0001_1234", // 카드(빌링키)와 1:1로 대응하는 값
|
|
187
|
+
/* ...생략... */
|
|
188
|
+
},
|
|
189
|
+
function (rsp) {
|
|
190
|
+
// callback
|
|
191
|
+
if (rsp.success) {
|
|
192
|
+
// 빌링키 발급 성공
|
|
193
|
+
} else {
|
|
194
|
+
// 빌링키 발급 실패
|
|
195
|
+
}
|
|
196
|
+
},
|
|
197
|
+
);
|
|
198
|
+
```
|
|
199
|
+
|
|
200
|
+
#### 유의사항
|
|
201
|
+
|
|
202
|
+
<div class="hint" data-style="info">
|
|
203
|
+
|
|
204
|
+
**`customer_uid` 란?**
|
|
205
|
+
|
|
206
|
+
PG사가 발급한 빌링키와 1:1로 맵핑되는, 고객사가 지정한 고유한 값입니다.
|
|
207
|
+
`customer_uid`는 카드 번호 단위로 구분하여 저장되어야 합니다.
|
|
208
|
+
|
|
209
|
+
예) **홍길동** 고객이 **A 카드** 빌링키를 요청하는 경우
|
|
210
|
+
`customer_uid`는 **회원별 카드 번호 단위**로 고유하게 발급되어야 합니다.
|
|
211
|
+
|
|
212
|
+
</div>
|
|
213
|
+
|
|
214
|
+
<div class="hint" data-style="danger">
|
|
215
|
+
|
|
216
|
+
이전 빌링키 발급에 사용된 `customer_uid`를 재사용하는 경우 가장 마지막 빌링키 발급에 사용된
|
|
217
|
+
카드번호의 빌링키로 대체됩니다. (**기존에 발급된 빌링키는 자동으로 해지되지 않습니다.**)
|
|
218
|
+
|
|
219
|
+
</div>
|
|
220
|
+
|
|
221
|
+
#### 빌링키 발급 방식에 따른 인증과정 필수 여부
|
|
222
|
+
|
|
223
|
+
빌링키를 발급 받는 단계에서 인증과정은 다음과 같이 구분할 수 있습니다.
|
|
224
|
+
|
|
225
|
+
1. PG사의 결제창을 띄우는 방식
|
|
226
|
+
|
|
227
|
+
- PG사의 결제창 안에서 '공인인증(본인인증)' 절차를 요구하게 됩니다.
|
|
228
|
+
|
|
229
|
+
2. API 호출 방식
|
|
230
|
+
|
|
231
|
+
- API 호출만으로 빌링키 발급이 가능하기 때문에 인증 절차가 없습니다.
|
|
232
|
+
|
|
233
|
+
인증과정 포함 여부는 결제대행사별로 다르므로 상세 내용은 아래 링크에서 확인하세요.
|
|
234
|
+
|
|
235
|
+
- [정기결제의 인증 과정 필수 여부](https://help.portone.io/content/schedule-requirement)
|
|
236
|
+
|
|
237
|
+
### 빌링키 결제 요청하기
|
|
238
|
+
|
|
239
|
+
발급 받은 포트원 빌링키를 이용하여 [비 인증 결제(빌링키) API](https://developers.portone.io/api/rest-v1/nonAuthPayment#post%20%2Fsubscribe%2Fpayments%2Fagain)
|
|
240
|
+
또는 [결제 예약 API](https://developers.portone.io/api/rest-v1/nonAuthPayment.subscribe#post%20%2Fsubscribe%2Fpayments%2Fschedule)
|
|
241
|
+
를 호출하여 즉시 결제 및 결제 예약을 진행합니다.
|
|
242
|
+
|
|
243
|
+
#### 즉시 결제
|
|
244
|
+
|
|
245
|
+
<div class="hint" data-style="info">
|
|
246
|
+
|
|
247
|
+
**빌링키 발급과 결제 요청을 한번에 하기**
|
|
248
|
+
|
|
249
|
+
[결제 예약 API](https://developers.portone.io/api/rest-v1/nonAuthPayment.subscribe#post%20%2Fsubscribe%2Fpayments%2Fschedule)를
|
|
250
|
+
사용하면 등록된 customer\_uid가 없는 경우 빌링키 신규 발급을 먼저 진행한 후 schedule정보를 예약합니다.(카드정보 필수사항)
|
|
251
|
+
|
|
252
|
+
</div>
|
|
253
|
+
|
|
254
|
+
[비 인증 결제(빌링키) API](https://developers.portone.io/api/rest-v1/nonAuthPayment#post%20%2Fsubscribe%2Fpayments%2Fagain)
|
|
255
|
+
를 참고하여 파라미터를 입력한 후 결제 요청해야 합니다.
|
|
256
|
+
|
|
257
|
+
```ts title="server-side"
|
|
258
|
+
// 포트원 빌링키 결제 API 호출
|
|
259
|
+
const paymentResponse = await fetch(
|
|
260
|
+
"https://api.iamport.kr/subscribe/payments/again",
|
|
261
|
+
{
|
|
262
|
+
method: "POST",
|
|
263
|
+
headers: {
|
|
264
|
+
Authorization: `Bearer ${ACCESS_TOKEN}`,
|
|
265
|
+
"Content-Type": "application/json",
|
|
266
|
+
},
|
|
267
|
+
body: JSON.stringify({
|
|
268
|
+
customer_uid,
|
|
269
|
+
merchant_uid,
|
|
270
|
+
name: "월간 이용권 정기결제",
|
|
271
|
+
// 빌링키 결제 API를 참고해 고객 정보를 채워주세요.
|
|
272
|
+
amount: {
|
|
273
|
+
total: 8900,
|
|
274
|
+
},
|
|
275
|
+
currency: "KRW",
|
|
276
|
+
}),
|
|
277
|
+
},
|
|
278
|
+
);
|
|
279
|
+
if (!paymentResponse.ok)
|
|
280
|
+
throw new Error(`paymentResponse: ${await paymentResponse.json()}`);
|
|
281
|
+
```
|
|
282
|
+
|
|
283
|
+
#### 예약/반복결제
|
|
284
|
+
|
|
285
|
+
**1. 결제 예약하기**
|
|
286
|
+
|
|
287
|
+
미래 특정 시점에 결제가 진행되도록 결제를 예약할 수 있습니다.
|
|
288
|
+
포트원 [결제 예약 API](https://developers.portone.io/api/rest-v1/nonAuthPayment.subscribe#post%20%2Fsubscribe%2Fpayments%2Fschedule)
|
|
289
|
+
를 이용하여 원하시는 시점에 결제 예약을 손쉽게 등록할 수 있습니다.
|
|
290
|
+
|
|
291
|
+
```ts title="server-side"
|
|
292
|
+
// 결제 예약
|
|
293
|
+
axios({
|
|
294
|
+
url: `https://api.iamport.kr/subscribe/payments/schedule`,
|
|
295
|
+
method: "post",
|
|
296
|
+
headers: { Authorization: access_token },
|
|
297
|
+
data: {
|
|
298
|
+
customer_uid: "gildong_0001_1234", // 카드(빌링키)와 1:1로 대응하는 값
|
|
299
|
+
schedules: [
|
|
300
|
+
{
|
|
301
|
+
merchant_uid: "order_monthly_0001", // 주문 번호
|
|
302
|
+
schedule_at: 1519862400, // 결제 시도 시각 in Unix Time Stamp. 예: 다음 달 1일
|
|
303
|
+
amount: 8900,
|
|
304
|
+
name: "월간 이용권 정기결제",
|
|
305
|
+
buyer_name: "홍길동",
|
|
306
|
+
buyer_tel: "01012345678",
|
|
307
|
+
buyer_email: "gildong@gmail.com",
|
|
308
|
+
},
|
|
309
|
+
],
|
|
310
|
+
},
|
|
311
|
+
});
|
|
312
|
+
```
|
|
313
|
+
|
|
314
|
+
**2. 결제 결과 수신하기**
|
|
315
|
+
|
|
316
|
+
예약한 시간에 결제가 시도되면 Webhook 이벤트가 발생하여 지정한 서버의 callback URL로 결제
|
|
317
|
+
번호(`imp_uid`)와 주문 번호(`merchant_uid`)가 전달됩니다. 웹훅으로 예약결제에 대한 결과를 수신하면
|
|
318
|
+
결제결과 완료 로직 처리를 진행합니다.
|
|
319
|
+
|
|
320
|
+
<div class="hint" data-style="info">
|
|
321
|
+
|
|
322
|
+
**포트원 Webhook**
|
|
323
|
+
|
|
324
|
+
포트원 Webhook의 개념과 URL 설정 방법은 [**포트원 Webhook**](https://developers.portone.io/opi/ko/integration/webhook/readme-v1) 문서를 참고하세요.
|
|
325
|
+
|
|
326
|
+
</div>
|
|
327
|
+
|
|
328
|
+
```ts title="server-side"
|
|
329
|
+
// "/iamport-callback/schedule"에 대한 POST 요청을 처리
|
|
330
|
+
app.post("/iamport-callback/schedule", async (req, res) => {
|
|
331
|
+
try {
|
|
332
|
+
const { imp_uid, merchant_uid } = req.body;
|
|
333
|
+
// 액세스 토큰(access token) 발급 받기
|
|
334
|
+
const getToken = await axios({
|
|
335
|
+
url: "https://api.iamport.kr/users/getToken",
|
|
336
|
+
method: "post", // POST method
|
|
337
|
+
headers: { "Content-Type": "application/json" },
|
|
338
|
+
data: {
|
|
339
|
+
imp_key: "imp_apikey", // REST API 키
|
|
340
|
+
imp_secret:
|
|
341
|
+
"ekKoeW8RyKuT0zgaZsUtXXTLQ4AhPFW3ZGseDA6bkA5lamv9OqDMnxyeB9wqOsuO9W3Mx9YSJ4dTqJ3f",
|
|
342
|
+
},
|
|
343
|
+
});
|
|
344
|
+
const { access_token } = getToken.data; // 인증 토큰
|
|
345
|
+
// imp_uid로 포트원 서버에서 결제 정보 조회
|
|
346
|
+
const getPaymentData = await axios({
|
|
347
|
+
url: `https://api.iamport.kr/payments/${imp_uid}`, // imp_uid 전달
|
|
348
|
+
method: "get", // GET method
|
|
349
|
+
headers: { Authorization: access_token },
|
|
350
|
+
});
|
|
351
|
+
const paymentData = getPaymentData.data; // 조회한 결제 정보
|
|
352
|
+
const { status } = paymentData;
|
|
353
|
+
if (status === "paid") {
|
|
354
|
+
// 결제 성공적으로 완료
|
|
355
|
+
// DB에 결제 정보 저장
|
|
356
|
+
await Orders.findByIdAndUpdate(merchant_uid, { $set: paymentData }); // Mongoose
|
|
357
|
+
// ...
|
|
358
|
+
} else {
|
|
359
|
+
// 재결제 시도
|
|
360
|
+
}
|
|
361
|
+
} catch (e) {
|
|
362
|
+
res.status(400).send(e);
|
|
363
|
+
}
|
|
364
|
+
});
|
|
365
|
+
```
|
|
366
|
+
|
|
367
|
+
**3. 반복결제 구현하기**
|
|
368
|
+
|
|
369
|
+
포트원 서버에 결제 예약 요청을 하고 예약한 시간에 결제가 시도되면 지정된 웹훅 URL을 통해서
|
|
370
|
+
서버에 알리는 과정을 반복적으로 수행하여 반복 결제를 구현할 수 있습니다.
|
|
371
|
+
|
|
372
|
+
(관련 이미지 첨부)
|
|
373
|
+
|
|
374
|
+
예약된 결제가 시도되었을 때 발생하는 webhook 이벤트를 처리하는 로직에서 예약된 결제가 정상적으로 완료되고 결제 내역이 저장되면 다음 결제를 예약하는 예제입니다.
|
|
375
|
+
|
|
376
|
+
```ts title="server-side"
|
|
377
|
+
// "/iamport-callback/schedule"에 대한 POST 요청을 처리
|
|
378
|
+
app.post("/iamport-callback/schedule", async (req, res) => {
|
|
379
|
+
try {
|
|
380
|
+
const { imp_uid, merchant_uid } = req.body;
|
|
381
|
+
// 액세스 토큰(access token) 발급 받기
|
|
382
|
+
/* ...중략 ... */
|
|
383
|
+
// imp_uid로 포트원 서버에서 결제 정보 조회
|
|
384
|
+
/* ...중략 ... */
|
|
385
|
+
const paymentData = getPaymentData.data; // 조회한 결제 정보
|
|
386
|
+
const { status } = paymentData;
|
|
387
|
+
if (status === "paid") {
|
|
388
|
+
// 결제 성공적으로 완료
|
|
389
|
+
// DB에 결제 정보 저장
|
|
390
|
+
await Orders.findByIdAndUpdate(merchant_uid, { $set: paymentData });
|
|
391
|
+
// ...
|
|
392
|
+
// 새로운 결제 예약
|
|
393
|
+
axios({
|
|
394
|
+
url: "{결제예약을 받을 서비스 URL}",
|
|
395
|
+
method: "post",
|
|
396
|
+
// 인증 토큰 Authorization header에 추가
|
|
397
|
+
headers: { Authorization: access_token },
|
|
398
|
+
data: {
|
|
399
|
+
customer_uid: "gildong_0001_1234", // 카드(빌링키)와 1:1로 대응하는 값
|
|
400
|
+
schedules: [
|
|
401
|
+
{
|
|
402
|
+
// 주문 번호
|
|
403
|
+
merchant_uid: "order_monthly_0001",
|
|
404
|
+
// 결제 시도 시각 in Unix Time Stamp. 예: 다음 달 1일
|
|
405
|
+
schedule_at: 1519516800,
|
|
406
|
+
amount: 8900,
|
|
407
|
+
name: "월간 이용권 정기결제",
|
|
408
|
+
// ...
|
|
409
|
+
},
|
|
410
|
+
],
|
|
411
|
+
},
|
|
412
|
+
});
|
|
413
|
+
} else {
|
|
414
|
+
// 재결제 시도
|
|
415
|
+
}
|
|
416
|
+
} catch (e) {
|
|
417
|
+
res.status(400).send(e);
|
|
418
|
+
}
|
|
419
|
+
});
|
|
420
|
+
```
|
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: 1. 빌링키 발급하기
|
|
3
|
+
description: 결제창 또는 API를 이용하여 빌링키를 발급할 수 있습니다.
|
|
4
|
+
targetVersions:
|
|
5
|
+
- v2
|
|
6
|
+
versionVariants:
|
|
7
|
+
v1: /opi/ko/integration/start/v1/non-auth
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
포트원에서는 PG사 결제창을 통해 빌링키를 발급하는 방법과 API를 이용하여 빌링키를 발급하는 방법을 지원합니다.
|
|
11
|
+
|
|
12
|
+
결제창을 이용한 빌링키 발급과 API를 통한 빌링키 발급 방식의 장단점은 아래와 같습니다.
|
|
13
|
+
|
|
14
|
+
**결제창을 통한 빌링키 발급**
|
|
15
|
+
|
|
16
|
+
- **장점**
|
|
17
|
+
- 결제 수단 정보가 고객사나 포트원의 서버를 거치지 않고 직접 PG사로 전달되기 때문에 보안 문제가 일어날 가능성이 적습니다.
|
|
18
|
+
|
|
19
|
+
- **단점**
|
|
20
|
+
- PG사의 일반결제창을 통해 카드정보를 입력받기 때문에 웹브라우저를 통해서만 빌링키 발급이 이루어지며, **카드정보 입력란을 커스터마이징 할 수 없습니다.**
|
|
21
|
+
|
|
22
|
+
**API를 통한 빌링키 발급**
|
|
23
|
+
|
|
24
|
+
- **장점**
|
|
25
|
+
- 고객사가 원하는 형태의 화면으로 **카드정보 입력란을 커스터마이징**할 수 있습니다.
|
|
26
|
+
- 고객사 UI/UX 친화적인 결제 환경을 계획하고 계시다면 API 연동 개발을 선택하시길 권장드립니다.
|
|
27
|
+
|
|
28
|
+
- **단점**
|
|
29
|
+
- **개인정보 이용약관**을 명시해야 하며 PG사 및 카드사 심사가 까다롭고 개인정보 유출에 유의해야 합니다.
|
|
30
|
+
|
|
31
|
+
## 결제창을 통한 빌링키 발급
|
|
32
|
+
|
|
33
|
+
결제창을 이용해 빌링키를 발급할 때는 포트원 SDK를 이용합니다.
|
|
34
|
+
|
|
35
|
+
포트원 SDK를 설치하는 방법은 [인증 결제 연동하기](https://developers.portone.io/opi/ko/integration/start/v2/checkout) 문서를 참고하세요.
|
|
36
|
+
|
|
37
|
+
`PortOne.requestIssueBillingKey()` 함수를 호출하면 빌링키를 발급하기 위한 결제창을 열 수 있습니다.
|
|
38
|
+
|
|
39
|
+
브라우저에서 포트원 SDK를 호출하여 빌링키를 발급하고, 서버로 빌링키를 전달합니다.
|
|
40
|
+
|
|
41
|
+
```ts
|
|
42
|
+
const issueResponse = PortOne.requestIssueBillingKey({
|
|
43
|
+
storeId: "store-9bf6076d-beef-4729-9521-ae66c14e0569",
|
|
44
|
+
channelKey: "channel-key-3b37819a-1c72-4deb-a245-8c810af5403d",
|
|
45
|
+
billingKeyMethod: "CARD",
|
|
46
|
+
});
|
|
47
|
+
// 빌링키가 제대로 발급되지 않은 경우 에러 코드가 존재합니다
|
|
48
|
+
if (issueResponse.code !== undefined) {
|
|
49
|
+
return alert(issueResponse.message);
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
// 고객사 서버에 빌링키를 전달합니다
|
|
53
|
+
const response = await fetch(`${MY_SEVER_URL}/billings`, {
|
|
54
|
+
method: "POST",
|
|
55
|
+
header: { "Content-Type": "application/json" },
|
|
56
|
+
body: JSON.stringify({
|
|
57
|
+
billingKey: issueResponse.billingKey,
|
|
58
|
+
// ...
|
|
59
|
+
}),
|
|
60
|
+
});
|
|
61
|
+
if (!response.ok) throw new Error(`response: ${await response.json()}`);
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
## API를 통한 빌링키 발급
|
|
65
|
+
|
|
66
|
+
고객 결제 정보를 이용하여 포트원 빌링키 발급 API를 호출하면 포트원 서버가 PG사를 통해 빌링키를 발급받습니다.
|
|
67
|
+
|
|
68
|
+
이 과정에서 카드 정보는 포트원 서버에 기록되지 않습니다.
|
|
69
|
+
|
|
70
|
+
브라우저로부터 결제 정보를 전달 받은 뒤, 서버에서 포트원 API를 호출하세요.
|
|
71
|
+
|
|
72
|
+
```ts title="server-side"
|
|
73
|
+
// customerId, cardNumber, expiryYear, expiryMonth, birthOrBusinessRegistrationNumber, passwordTwoDigits 등 정보를 전달받습니다.
|
|
74
|
+
|
|
75
|
+
// 포트원 빌링키 발급 API 호출
|
|
76
|
+
const issueResponse = await fetch("https://api.portone.io/billing-keys", {
|
|
77
|
+
method: "POST",
|
|
78
|
+
headers: {
|
|
79
|
+
Authorization: `PortOne ${PORTONE_API_SECRET}`,
|
|
80
|
+
"Content-Type": "application/json",
|
|
81
|
+
},
|
|
82
|
+
body: JSON.stringify({
|
|
83
|
+
channelKey: CHANNEL_KEY_HERE,
|
|
84
|
+
customer: {
|
|
85
|
+
id: customerId,
|
|
86
|
+
},
|
|
87
|
+
method: {
|
|
88
|
+
card: {
|
|
89
|
+
credential: {
|
|
90
|
+
number: cardNumber,
|
|
91
|
+
expiryYear,
|
|
92
|
+
expiryMonth,
|
|
93
|
+
birthOrBusinessRegistrationNumber,
|
|
94
|
+
passwordTwoDigits,
|
|
95
|
+
},
|
|
96
|
+
},
|
|
97
|
+
},
|
|
98
|
+
}),
|
|
99
|
+
});
|
|
100
|
+
if (!issueResponse.ok)
|
|
101
|
+
throw new Error(`issueResponse: ${await issueResponse.json()}`);
|
|
102
|
+
const {
|
|
103
|
+
billingKeyInfo: { billingKey },
|
|
104
|
+
} = await issueResponse.json();
|
|
105
|
+
// 빌링키가 발급되었습니다! 빌링키를 저장하거나 결제하는 로직을 구성하세요.
|
|
106
|
+
```
|
|
107
|
+
|
|
108
|
+
## 빌링키 발급 방식에 따른 인증과정 필수 여부
|
|
109
|
+
|
|
110
|
+
빌링키를 발급 받는 단계에서 인증과정은 다음과 같이 구분할 수 있습니다.
|
|
111
|
+
|
|
112
|
+
1. PG사의 결제창을 띄우는 방식
|
|
113
|
+
|
|
114
|
+
- PG사의 결제창 안에서 '공인인증(본인인증)' 절차를 요구하게 됩니다.
|
|
115
|
+
|
|
116
|
+
2. API 호출 방식
|
|
117
|
+
|
|
118
|
+
- API 호출만으로 빌링키 발급이 가능하기 때문에 인증 절차가 없습니다.
|
|
119
|
+
|
|
120
|
+
인증과정 포함 여부는 결제대행사별로 다르므로 상세 내용은 아래 링크에서 확인하세요.
|
|
121
|
+
|
|
122
|
+
- [정기결제의 인증 과정 필수 여부](https://help.portone.io/content/schedule-requirement)
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: 2. 결제 요청하기
|
|
3
|
+
description: 포트원 빌링키 결제 API를 사용해 바로 결제를 요청합니다.
|
|
4
|
+
targetVersions:
|
|
5
|
+
- v2
|
|
6
|
+
versionVariants:
|
|
7
|
+
v1: /opi/ko/integration/start/v1/non-auth
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
포트원의 빌링키 결제 API를 호출하여 결제를 진행합니다.
|
|
11
|
+
|
|
12
|
+
바로 결제를 진행하고 싶은 것이 아니라 미래 특정 시점에 결제가 일어나게 하고 싶다면 [결제 예약하기](https://developers.portone.io/opi/ko/integration/start/v2/billing/schedule)을 참고하세요.
|
|
13
|
+
|
|
14
|
+
```ts title="server-side"
|
|
15
|
+
// 고객사에서 채번하는 새로운 결제 ID를 만들어주세요.
|
|
16
|
+
const paymentId = OrderService.getNewPaymentId();
|
|
17
|
+
|
|
18
|
+
// 포트원 빌링키 결제 API 호출
|
|
19
|
+
const paymentResponse = await fetch(
|
|
20
|
+
`https://api.portone.io/payments/${encodeURIComponent(paymentId)}/billing-key`,
|
|
21
|
+
{
|
|
22
|
+
method: "POST",
|
|
23
|
+
headers: {
|
|
24
|
+
Authorization: `PortOne ${PORTONE_API_SECRET}`,
|
|
25
|
+
"Content-Type": "application/json",
|
|
26
|
+
},
|
|
27
|
+
body: JSON.stringify({
|
|
28
|
+
billingKey,
|
|
29
|
+
orderName: "월간 이용권 정기결제",
|
|
30
|
+
// 빌링키 결제 API를 참고해 고객 정보를 채워주세요.
|
|
31
|
+
customer: YOUR_CUSTOMER_INFO,
|
|
32
|
+
amount: {
|
|
33
|
+
total: 8900,
|
|
34
|
+
},
|
|
35
|
+
currency: "KRW",
|
|
36
|
+
}),
|
|
37
|
+
},
|
|
38
|
+
);
|
|
39
|
+
if (!paymentResponse.ok)
|
|
40
|
+
throw new Error(`paymentResponse: ${await paymentResponse.json()}`);
|
|
41
|
+
```
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: 빌링키 결제 연동하기
|
|
3
|
+
description: 카드 혹은 휴대 전화 정보를 이용하여 빌링키를 발급하고, 빌링키를 이용해 결제를 요청하는 방법을 안내합니다.
|
|
4
|
+
targetVersions:
|
|
5
|
+
- v2
|
|
6
|
+
versionVariants:
|
|
7
|
+
v1: /opi/ko/integration/start/v1/non-auth
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
## 빌링키란?
|
|
11
|
+
|
|
12
|
+
구독형 정기결제, 종량제 과금결제 등 고객사가 원하는 시점에 결제를 일으키기 위한 결제용 비밀 키입니다.
|
|
13
|
+
|
|
14
|
+
고객사가 고객의 카드정보를 저장할 수 없기 때문에, 해당 카드에 대응하는 빌링키를 발급 받아 저장하고, 결제 시점에는 결제 정보 대신 빌링키를 이용하여 요청하는 방식을 씁니다.
|
|
15
|
+
|
|
16
|
+
가지고 있는 빌링키를 사용해 즉시 결제를 요청하거나, 시간을 정해 결제를 예약할 수 있습니다.
|
|
17
|
+
|
|
18
|
+
<div class="hint" data-style="warning">
|
|
19
|
+
|
|
20
|
+
### 빌링키는 정기 구독에만 사용이 가능합니다.
|
|
21
|
+
|
|
22
|
+
빌링키를 이용한 결제는 결제수단이 본인 소유인지 확인이 어려워 관리가 어렵고, 카드사 심사 시 빌링키를 사용한 비정기적인 결제를 허용하지 않을 수 있습니다.
|
|
23
|
+
|
|
24
|
+
</div>
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: 3. 예약/반복결제 구현하기
|
|
3
|
+
description: 발급한 빌링키로 예약/반복결제를 구현하는 방법을 안내합니다.
|
|
4
|
+
targetVersions:
|
|
5
|
+
- v2
|
|
6
|
+
versionVariants:
|
|
7
|
+
v1: /opi/ko/integration/start/v1/non-auth
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
## 1. 결제 예약하기
|
|
11
|
+
|
|
12
|
+
미래의 특정 시점에 결제가 진행되도록 할 때는 **포트원 결제 예약 API**를 이용합니다.
|
|
13
|
+
|
|
14
|
+
```ts title="server-side"
|
|
15
|
+
// 포트원 결제 예약 API 호출
|
|
16
|
+
const scheduleResponse = await fetch(
|
|
17
|
+
`https://api.portone.io/payments/${encodeURIComponent(UNIQUE_PAYMENT_ID)}/schedule`,
|
|
18
|
+
{
|
|
19
|
+
method: "POST",
|
|
20
|
+
headers: {
|
|
21
|
+
Authorization: `PortOne ${PORTONE_API_SECRET}`,
|
|
22
|
+
"Content-Type": "application/json",
|
|
23
|
+
},
|
|
24
|
+
body: JSON.stringify({
|
|
25
|
+
payment: {
|
|
26
|
+
billingKey: BILLING_KEY_HERE,
|
|
27
|
+
orderName: "월간 이용권 정기결제",
|
|
28
|
+
customer: {
|
|
29
|
+
id: CUSTOMER_ID_HERE,
|
|
30
|
+
// 고객 정보가 필요한 경우 API 명세에 따라 추가해주세요.
|
|
31
|
+
},
|
|
32
|
+
amount: {
|
|
33
|
+
total: 8900,
|
|
34
|
+
},
|
|
35
|
+
currency: "KRW",
|
|
36
|
+
},
|
|
37
|
+
timeToPay: "2023-08-24T14:15:22Z", // 결제를 시도할 시각
|
|
38
|
+
}),
|
|
39
|
+
},
|
|
40
|
+
);
|
|
41
|
+
if (!scheduleResponse.ok)
|
|
42
|
+
throw new Error(`scheduleResponse: ${await scheduleResponse.json()}`);
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
## 2. 결제 결과 수신하기
|
|
46
|
+
|
|
47
|
+
예약한 시간에 결제가 시도되면 지정한 서버의 웹훅 URL로 고객사 거래 번호(**`payment_id`**)가
|
|
48
|
+
전달됩니다. 결제 결과를 확인하신 뒤 결제 완료 처리를 하시면 됩니다.
|
|
49
|
+
|
|
50
|
+
웹훅을 받아 결제 결과를 확인하는 방법은 [웹훅 연동하기](https://developers.portone.io/opi/ko/integration/webhook/readme-v2)를 참고해주세요.
|
|
51
|
+
|
|
52
|
+
## 3. 반복 결제 구현하기
|
|
53
|
+
|
|
54
|
+
반복 결제는 예약된 결제가 완료된 뒤 다음 결제를 예약하는 식으로 구현할 수 있습니다.
|