Purchase API - Create Payment Intent #
1. API Overview #
Purpose #
This API initializes a payment intent to start the payment process. It supports various payment methods including card, bank transfer, installment, and e-wallet. You can choose an integration method that suits your environment: either a redirect method using the EBP-provided payment URL (paymentUrl) or a direct integration method using the PG response data (pgResponse). After creating a payment intent, the user proceeds with the payment directly through the PG depending on the integration method, and EBP then receives the result to send a Webhook or the merchant calls the Payment Creation API to finalize the transaction.
Details #
| Item | Value |
|---|---|
| API Name | Create Payment Intent |
| API Path | /api/v2/payment-intents |
| API ID | EBP_API_224 |
| HTTP Method | POST |
| Region | Global |
[!INFO] 빌링 계정 생성 시점
빌링 계정은 별도의 가입 절차 없이, 사용자가 최초로 토큰을 등록하거나 결제를 요청할 때 전달된 스토어 ID(X-Store-Id)와 사용자 번호(userNo)를 기준으로 시스템에 자동 생성됩니다.
After creating a payment intent, if the user completes authentication via the payment method, EBP sends a Webhook to the store to notify the result.
Detailed documentation for the Webhook can be found at the link below.
Go to Payment Authorized Webhook
2. Request Specification #
2.1 Request Header #
상세한 헤더 정보는 Common Headers 문서를 참고하세요.
| depth | Field | Details & Description |
|---|---|---|
| 0 | X-Idempotency-Key |
🔴 Required Idempotency key to prevent duplicate processing for identical payment intent creation requests. |
2.2 Request Data Schema #
| depth | Field | Details & Description |
|---|---|---|
| 0 | userNo |
🔴 Required 사용자 번호 |
| 0 | userName |
🟡 Conditional 구매자 이름. Tamara 결제 수단 이용 시 필수입니다. |
| 0 |
🟡 Conditional 구매자 이메일 주소. Tamara 결제 수단 이용 시 필수입니다. | |
| 0 | phone |
⚪ Optional 구매자 연락처 |
| 0 | paymentMethod |
🔴 Required e.g., CARD, INSTALLMENT, DIRECT_DEBIT, BANK_TRANSFER ... etc |
| 0 | purchaseChannel |
🔴 Required 구매 채널 구분 e.g., WEB, APP |
| 0 | merchantId |
⚪ Optional 상점 ID |
| 0 | successUrl |
🔴 Required 결제 성공 후 리다이렉트될 URL |
| 0 | failureUrl |
🔴 Required 결제 실패 시 리다이렉트될 URL |
| 0 | totalAmount |
🔴 Required 실 결제 총 금액. |
| 0 | subtotalAmount |
🔴 Required 할인 전 금액. |
| 0 | totalDiscountAmount |
🔴 Required 총 할인 금액. |
| 0 | discountAmount |
🔴 Required 판매자 할인 금액. |
| 0 | lgeDiscountAmount |
🔴 Required LG전자 할인 금액. |
| 0 | nonCancelableAmount |
🔴 Required 취소 불가 금액. |
| 0 | itemName |
🔴 Required 결제 화면에 노출될 대표 상품명 |
| 0 | useSavedPaymentMethod |
⚪ Optional 저장된 결제 수단 사용 여부. true 설정 시 이전에 저장된 정보를 사용해 결제를 진행합니다. e.g., true/falsedefault: false |
| 0 | savePaymentMethod |
⚪ Optional 결제 수단 저장 여부. true 설정 시 결제 성공 후 해당 결제 수단을 안전하게 저장하며, 저장된 정보는 추후 '결제 생성' 시 사용됩니다. e.g., true/falsedefault: false |
| 0 | autoCapture |
⚪ Optional 자동 매입(Capture) 여부. true 설정 시 결제 승인(Authorized) 후 즉시 매입 처리를 진행합니다. false일 경우 추후 별도의 매입 API 호출이 필요합니다. e.g., true/falsedefault: false |
| 0 | nonTaxableAmount |
⚪ Optional 비과세 대상 금액 |
| 0 | taxAmount |
⚪ Optional 스토어에서 계산한 부가세 금액 |
| 0 | shippingAddress |
🟡 Conditional 배송지 주소 정보입니다. Tabby, Tamara 결제 수단 이용 시 필수입니다. |
| 1 | addressLine1 |
🟡 Conditional 배송지 기본 주소입니다. Tabby, Tamara 결제 수단 이용 시 필수입니다. |
| 1 | addressLine2 |
⚪ Optional 배송지 상세 주소입니다. |
| 1 | city |
🟡 Conditional 배송지 도시 정보입니다. Tabby, Tamara 결제 수단 이용 시 필수입니다. |
| 1 | stateOrProvince |
⚪ Optional 배송지 주/도/지역 정보입니다. |
| 1 | postalCode |
🟡 Conditional 배송지 우편번호입니다. Tabby 결제 수단 이용 시 필수입니다. |
| 1 | countryCode |
🟡 Conditional 배송지 국가 코드(ISO 3166-1 alpha-2)입니다. Tabby, Tamara 결제 수단 이용 시 필수입니다. |
| 0 | billingAddress |
🟡 Conditional 청구지(빌링) 주소 정보입니다. Tamara 결제 수단 이용 시 필수입니다. |
| 1 | firstName |
🟡 Conditional 청구지 수령인 이름입니다. Tamara 결제 수단 이용 시 필수입니다. |
| 1 | lastName |
🟡 Conditional 청구지 수령인 성입니다. Tamara 결제 수단 이용 시 필수입니다. |
| 1 | phoneNumber |
🟡 Conditional 청구지 연락처 번호입니다. Tamara 결제 수단 이용 시 필수입니다. |
| 1 | addressLine1 |
🟡 Conditional 청구지 기본 주소입니다. Tamara 결제 수단 이용 시 필수입니다. |
| 1 | addressLine2 |
⚪ Optional 청구지 상세 주소입니다. |
| 1 | city |
🟡 Conditional 청구지 도시 정보입니다. Tamara 결제 수단 이용 시 필수입니다. |
| 1 | stateOrProvince |
⚪ Optional 청구지 주/도/지역 정보입니다. |
| 1 | postalCode |
⚪ Optional 청구지 우편번호입니다. |
| 1 | countryCode |
🟡 Conditional 청구지 국가 코드(ISO 3166-1 alpha-2)입니다. Tamara 결제 수단 이용 시 필수입니다. |
| 0 | bankTransferSource |
🟡 Conditional 태국 Bank Transfer 결제 수단 이용 시 필수입니다. e.g., mobile_banking_bay, mobile_banking_bbl, mobile_banking_kbank, mobile_banking_ktb, mobile_banking_scb |
| 0 | platformType |
🟡 Conditional 태국 Bank Transfer 결제 수단 이용 시 필수입니다. e.g., IOS, ANDROID |
| 0 | installmentSource |
🟡 Conditional 태국 Installment 결제 수단 이용 시 필수입니다. e.g., installment_bay, installment_kbank, ... |
| 0 | installmentTerm |
🟡 Conditional 태국 Installment 결제 수단 이용 시 필수입니다. e.g., 3, 5 ... |
| 0 | items |
⚪ Optional 거래에 포함된 상품 리스트 |
| 1 | seq |
🔴 Required 주문 내 상품의 유니크한 일련번호. 결제 취소 및 구매 확정 시 상품 식별을 위한 기준값으로 사용됩니다. |
| 1 | sellerNo |
🔴 Required 판매자를 식별하는 고유 번호 |
| 1 | itemType |
⚪ Optional 상품의 유형. 정산 및 통계 관리를 위해 세분화된 유형을 입력합니다. e.g., PHYSICAL: 실물 본품, DIGITAL: 디지털 상품, SUBSCRIPTION: 구독비, DELIVERY: 배송비, SERVICE: 서비스비 |
| 1 | itemId |
🔴 Required 상품을 식별하는 고유 식별자 |
| 1 | itemName |
🔴 Required 상품의 이름 |
| 1 | feeRate |
🔴 Required 해당 상품에 적용되는 판매 수수료율 e.g., 10% -> 10, 0% -> 0 |
| 1 | quantity |
🔴 Required 구매한 상품의 수량 |
| 1 | unitPrice |
🔴 Required 상품의 개당 가격 |
| 1 | discountAmount |
⚪ Optional 판매자가 제공하는 할인 금액 |
| 1 | lgeDiscountAmount |
⚪ Optional LG에서 제공하는 할인 금액 |
| 1 | paymentAmount |
🔴 Required 상품의 실제 결제 금액 (개당 가격 - 판매자 할인 - LG 할인) |
| 1 | deliveryGroupNo |
⚪ Optional |
상품 유형 가이드
- PHYSICAL: 실물 본품 (TV, 냉장고 등)
- DIGITAL: 디지털 상품 (소프트웨어, e-기프트카드 등)
- SUBSCRIPTION: 구독비 (가전 렌탈, 정기 케어서비스 등)
- DELIVERY: 배송비
- SERVICE: 서비스비 (설치비, 철거비 등)
할부 결제 정보 (installmentSource & installmentTerm) 안내
태국 할부 결제(
INSTALLMENT) 이용 시 다음의 조건 및 제한 사항을 확인하십시오.
- 결제 금액 조건: 총 결제 금액이 2,000 THB 이상이어야 하며, 매월 납부 금액(총 금액 / 개월 수)이 500 THB 이상인 경우에만 이용 가능합니다.
- 지원 금융사별 기간: 선택한
installmentSource에 따라 사용 가능한installmentTerm(개월 수)이 다릅니다.
- installment_bay (Krungsri Bank):
[3, 4, 6, 9, 10]- installment_kbank (Kasikorn Bank):
[3, 4, 6, 10]- installment_ktc (Krungthai Card):
[3, 4, 5, 6, 7, 8, 9, 10]- installment_bbl (Bangkok Bank):
[4, 6, 8, 9, 10]- installment_first_choice (Krungsri First Choice):
[3, 4, 6, 9, 10, 12, 18, 24, 36]- installment_scb (Siam Commercial Bank):
[3, 4, 6, 9, 10]- installment_ttb (TMBThanachart Bank):
[3, 4, 6, 10]- installment_uob (United Overseas Bank):
[3, 4, 6, 10]
Note:
2.3 Request Examples #
{
"userNo": "AU1741850000100",
"userName": "James Cook",
"email": "james.cook@example.au",
"phone": "+61-412-345-100",
"shippingAddress": null,
"billingAddress": null,
"purchaseChannel": "WEB",
"successUrl": "https://devkic-pgui.nebp.lge.com/pgui/v2/hpp/worldpay/success",
"failureUrl": "https://devkic-pgui.nebp.lge.com/pgui/v2/hpp/worldpay/failure",
"totalAmount": 1815,
"subtotalAmount": 1815,
"totalDiscountAmount": 0,
"discountAmount": 0,
"lgeDiscountAmount": 0,
"nonCancelableAmount": 0,
"nonTaxableAmount": 0,
"taxAmount": 0,
"itemName": "LG Gram 16\" Laptop",
"savePaymentMethod": false,
"items": [
{
"seq": 1,
"sellerNo": "SELLER-001",
"itemType": "PHYSICAL",
"itemId": "AU_PROD_01",
"itemName": "LG Gram 16\" Laptop",
"quantity": 1,
"unitPrice": 1800,
"netAmount": 1800,
"grossAmount": 1800,
"discountAmount": 0,
"lgeDiscountAmount": 0,
"orderDiscountAllocated": 0
},
{
"seq": 2,
"sellerNo": "SELLER-001",
"itemType": "DELIVERY",
"itemId": "AU_SHIP_01",
"itemName": "Standard Delivery",
"quantity": 1,
"unitPrice": 15,
"netAmount": 15,
"grossAmount": 15,
"discountAmount": 0,
"lgeDiscountAmount": 0,
"orderDiscountAllocated": 0
}
],
"paymentMethod": "CARD",
"useSavedPaymentMethod": false
}
{
"userNo": "AU1741850000100",
"userName": "James Cook",
"email": "james.cook@example.au",
"phone": "+61-412-345-100",
"shippingAddress": null,
"billingAddress": null,
"purchaseChannel": "WEB",
"successUrl": "https://devkic-pgui.nebp.lge.com/pgui/v2/hpp/worldpay/success",
"failureUrl": "https://devkic-pgui.nebp.lge.com/pgui/v2/hpp/worldpay/failure",
"totalAmount": 1800,
"subtotalAmount": 1800,
"totalDiscountAmount": 0,
"discountAmount": 0,
"lgeDiscountAmount": 0,
"nonCancelableAmount": 0,
"nonTaxableAmount": 0,
"taxAmount": 0,
"itemName": "LG Gram 16\" Laptop",
"savePaymentMethod": false,
"items": [
{
"seq": 1,
"sellerNo": "SELLER-001",
"itemType": "PHYSICAL",
"itemId": "AU_PROD_01",
"itemName": "LG Gram 16\" Laptop",
"quantity": 1,
"unitPrice": 1800,
"netAmount": 1800,
"grossAmount": 1800,
"discountAmount": 0,
"lgeDiscountAmount": 0,
"orderDiscountAllocated": 0
}
],
"paymentMethod": "PAYPAL",
"useSavedPaymentMethod": false
}
{
"userNo": "TH1741850000100",
"userName": "Somchai Pak",
"email": "somchai.p@example.th",
"phone": "+66-81-234-1000",
"shippingAddress": null,
"billingAddress": null,
"purchaseChannel": "WEB",
"successUrl": "https://devkic-pgui.nebp.lge.com/pgui/v2/hpp/omise/success",
"failureUrl": "https://devkic-pgui.nebp.lge.com/pgui/v2/hpp/omise/failure",
"totalAmount": 26100,
"subtotalAmount": 26100,
"totalDiscountAmount": 0,
"discountAmount": 0,
"lgeDiscountAmount": 0,
"nonCancelableAmount": 0,
"nonTaxableAmount": 0,
"taxAmount": 0,
"itemName": "LG Nanocell 55\" TV",
"savePaymentMethod": false,
"items": [
{
"seq": 1,
"sellerNo": "SELLER-001",
"itemType": "PHYSICAL",
"itemId": "TH_PROD_01",
"itemName": "LG Nanocell 55\" TV",
"quantity": 1,
"unitPrice": 25900,
"netAmount": 25900,
"grossAmount": 25900,
"discountAmount": 0,
"lgeDiscountAmount": 0,
"orderDiscountAllocated": 0
},
{
"seq": 2,
"sellerNo": "SELLER-001",
"itemType": "DELIVERY",
"itemId": "TH_SHIP_01",
"itemName": "Standard Shipping",
"quantity": 1,
"unitPrice": 200,
"netAmount": 200,
"grossAmount": 200,
"discountAmount": 0,
"lgeDiscountAmount": 0,
"orderDiscountAllocated": 0
}
],
"paymentMethod": "BANK_TRANSFER",
"useSavedPaymentMethod": false,
"bankTransferSource": "mobile_banking_bay",
"platformType": "IOS"
}
{
"userNo": "TH1741850000100",
"userName": "Somchai Pak",
"email": "somchai.p@example.th",
"phone": "+66-81-234-1000",
"shippingAddress": null,
"billingAddress": null,
"purchaseChannel": "WEB",
"successUrl": "https://devkic-pgui.nebp.lge.com/pgui/v2/hpp/omise/success",
"failureUrl": "https://devkic-pgui.nebp.lge.com/pgui/v2/hpp/omise/failure",
"totalAmount": 26100,
"subtotalAmount": 26100,
"totalDiscountAmount": 0,
"discountAmount": 0,
"lgeDiscountAmount": 0,
"nonCancelableAmount": 0,
"nonTaxableAmount": 0,
"taxAmount": 0,
"itemName": "LG Nanocell 55\" TV",
"savePaymentMethod": false,
"items": [
{
"seq": 1,
"sellerNo": "SELLER-001",
"itemType": "PHYSICAL",
"itemId": "TH_PROD_01",
"itemName": "LG Nanocell 55\" TV",
"quantity": 1,
"unitPrice": 25900,
"netAmount": 25900,
"grossAmount": 25900,
"discountAmount": 0,
"lgeDiscountAmount": 0,
"orderDiscountAllocated": 0
},
{
"seq": 2,
"sellerNo": "SELLER-001",
"itemType": "DELIVERY",
"itemId": "TH_SHIP_01",
"itemName": "Standard Shipping",
"quantity": 1,
"unitPrice": 200,
"netAmount": 200,
"grossAmount": 200,
"discountAmount": 0,
"lgeDiscountAmount": 0,
"orderDiscountAllocated": 0
}
],
"paymentMethod": "INSTALLMENT",
"useSavedPaymentMethod": false,
"installmentSource": "installment_kbank",
"installmentTerm": 3
}
{
"userNo": "AE1741850000100",
"userName": "Zayed Ahmed",
"email": "zayed.a@example.ae",
"phone": "+971-50-123-4100",
"shippingAddress": {
"addressLine1": "Burj Khalifa, Floor 122",
"city": "Dubai",
"state": "Dubai",
"postalCode": "12210",
"countryCode": "AE"
},
"billingAddress": {
"addressLine1": "Burj Khalifa, Floor 122",
"city": "Dubai",
"countryCode": "AE"
},
"purchaseChannel": "WEB",
"successUrl": "http://localhost:8080/pgui/v2/hpp/checkoutcom/success",
"failureUrl": "http://localhost:8080/pgui/v2/hpp/checkoutcom/failure",
"totalAmount": 2825,
"subtotalAmount": 2825,
"totalDiscountAmount": 0,
"discountAmount": 0,
"lgeDiscountAmount": 0,
"nonCancelableAmount": 0,
"nonTaxableAmount": 0,
"taxAmount": 0,
"itemName": "LG OLED G3 65\" TV",
"savePaymentMethod": false,
"items": [
{
"seq": 1,
"sellerNo": "SELLER-001",
"itemType": "PRODUCT",
"itemId": "AE_PROD_01",
"itemName": "LG OLED G3 65\" TV",
"quantity": 1,
"unitPrice": 2800,
"netAmount": 2800,
"grossAmount": 2800,
"discountAmount": 0,
"lgeDiscountAmount": 0,
"orderDiscountAllocated": 0
},
{
"seq": 2,
"sellerNo": "SELLER-001",
"itemType": "SHIPPING",
"itemId": "AE_SHIP_01",
"itemName": "Premium Delivery",
"quantity": 1,
"unitPrice": 25,
"netAmount": 25,
"grossAmount": 25,
"discountAmount": 0,
"lgeDiscountAmount": 0,
"orderDiscountAllocated": 0
}
],
"paymentMethod": "TAMARA",
"useSavedPaymentMethod": false
}
{
"userNo": "AE1741850000100",
"userName": "Zayed Ahmed",
"email": "zayed.a@example.ae",
"phone": "+971-50-123-4100",
"shippingAddress": {
"addressLine1": "Burj Khalifa, Floor 122",
"city": "Dubai",
"state": "Dubai",
"postalCode": "12210",
"countryCode": "AE"
},
"purchaseChannel": "WEB",
"successUrl": "https://devkic-pgui.nebp.lge.com/pgui/v2/hpp/checkoutcom/success",
"failureUrl": "https://devkic-pgui.nebp.lge.com/pgui/v2/hpp/checkoutcom/failure",
"totalAmount": 1900,
"subtotalAmount": 1900,
"totalDiscountAmount": 0,
"discountAmount": 0,
"lgeDiscountAmount": 0,
"nonCancelableAmount": 0,
"nonTaxableAmount": 0,
"taxAmount": 0,
"itemName": "LG Gram 17\" Laptop",
"savePaymentMethod": false,
"items": [
{
"seq": 1,
"sellerNo": "SELLER-001",
"itemType": "PHYSICAL",
"itemId": "AE_PROD_02",
"itemName": "LG Gram 17\" Laptop",
"quantity": 1,
"unitPrice": 1900,
"netAmount": 1900,
"grossAmount": 1900,
"discountAmount": 0,
"lgeDiscountAmount": 0,
"orderDiscountAllocated": 0
}
],
"paymentMethod": "TABBY",
"useSavedPaymentMethod": false
}
{
"userNo": "GB2501108122805",
"paymentMethod": "GOOGLEPAY",
"purchaseChannel": "APP",
"successUrl": "https://example.com/success",
"failureUrl": "https://example.com/fail",
"totalAmount": 20.0,
"subtotalAmount": 20.0,
"totalDiscountAmount": 0.0,
"discountAmount": 0.0,
"lgeDiscountAmount": 0.0,
"nonCancelableAmount": 0.0,
"itemName": "In-app Purchase",
"phone": "+15551234567",
"items": [
{
"seq": 1,
"sellerNo": "TEST_SELLR",
"itemType": "PHYSICAL",
"itemId": "Item1",
"itemName": "In-app Purchase",
"feeRate": 10,
"quantity": 1,
"unitPrice": 20,
"discountAmount": 0,
"lgeDiscountAmount": 0,
"deliveryGroupNo": ""
}
]
}
{
"userNo": "GB2501108122805",
"paymentMethod": "APPLEPAY",
"purchaseChannel": "APP",
"successUrl": "https://example.com/success",
"failureUrl": "https://example.com/fail",
"totalAmount": 25.0,
"subtotalAmount": 25.0,
"totalDiscountAmount": 0.0,
"discountAmount": 0.0,
"lgeDiscountAmount": 0.0,
"nonCancelableAmount": 0.0,
"itemName": "Subscription",
"phone": "+15559876543",
"items": [
{
"seq": 1,
"sellerNo": "TEST_SELLR",
"itemType": "PHYSICAL",
"itemId": "Item1",
"itemName": "Subscription",
"feeRate": 10,
"quantity": 1,
"unitPrice": 25,
"discountAmount": 0,
"lgeDiscountAmount": 0,
"deliveryGroupNo": ""
}
]
}
{
"userNo": "GB2501108122805",
"paymentMethod": "KLARNA",
"purchaseChannel": "WEB",
"successUrl": "https://example.com/success",
"failureUrl": "https://example.com/fail",
"totalAmount": 120.0,
"subtotalAmount": 120.0,
"totalDiscountAmount": 0.0,
"discountAmount": 0.0,
"lgeDiscountAmount": 0.0,
"nonCancelableAmount": 0.0,
"itemName": "Fashion Item",
"phone": "+46701234567",
"items": [
{
"seq": 1,
"sellerNo": "TEST_SELLR",
"itemType": "PHYSICAL",
"itemId": "Item1",
"itemName": "Fashion Item",
"feeRate": 10,
"quantity": 1,
"unitPrice": 120,
"discountAmount": 0,
"lgeDiscountAmount": 0,
"deliveryGroupNo": ""
}
]
}
{
"userNo": "GB2501108122805",
"paymentMethod": "IDEAL",
"purchaseChannel": "WEB",
"successUrl": "https://example.com/success",
"failureUrl": "https://example.com/fail",
"totalAmount": 45.5,
"subtotalAmount": 45.5,
"totalDiscountAmount": 0.0,
"discountAmount": 0.0,
"lgeDiscountAmount": 0.0,
"nonCancelableAmount": 0.0,
"itemName": "Home Decor",
"phone": "+31612345678",
"items": [
{
"seq": 1,
"sellerNo": "TEST_SELLR",
"itemType": "PHYSICAL",
"itemId": "Item1",
"itemName": "Home Decor",
"feeRate": 10,
"quantity": 1,
"unitPrice": 45.5,
"discountAmount": 0,
"lgeDiscountAmount": 0,
"deliveryGroupNo": ""
}
]
}
{
"userNo": "GB2501108122805",
"paymentMethod": "BIZUM",
"purchaseChannel": "APP",
"successUrl": "https://example.com/success",
"failureUrl": "https://example.com/fail",
"totalAmount": 30.0,
"subtotalAmount": 30.0,
"totalDiscountAmount": 0.0,
"discountAmount": 0.0,
"lgeDiscountAmount": 0.0,
"nonCancelableAmount": 0.0,
"itemName": "Event Ticket",
"phone": "+34600123456",
"items": [
{
"seq": 1,
"sellerNo": "TEST_SELLR",
"itemType": "PHYSICAL",
"itemId": "Item1",
"itemName": "Event Ticket",
"feeRate": 10,
"quantity": 1,
"unitPrice": 30,
"discountAmount": 0,
"lgeDiscountAmount": 0,
"deliveryGroupNo": ""
}
]
}
{
"userNo": "GB2501108122805",
"paymentMethod": "MBWAY",
"purchaseChannel": "APP",
"successUrl": "https://example.com/success",
"failureUrl": "https://example.com/fail",
"totalAmount": 15.0,
"subtotalAmount": 15.0,
"totalDiscountAmount": 0.0,
"discountAmount": 0.0,
"lgeDiscountAmount": 0.0,
"nonCancelableAmount": 0.0,
"itemName": "Digital Content",
"phone": "+351912345678",
"items": [
{
"seq": 1,
"sellerNo": "TEST_SELLR",
"itemType": "PHYSICAL",
"itemId": "Item1",
"itemName": "Digital Content",
"feeRate": 10,
"quantity": 1,
"unitPrice": 15,
"discountAmount": 0,
"lgeDiscountAmount": 0,
"deliveryGroupNo": ""
}
]
}
{
"userNo": "GB2501108122805",
"paymentMethod": "KREDIVO",
"purchaseChannel": "WEB",
"successUrl": "https://example.com/success",
"failureUrl": "https://example.com/fail",
"totalAmount": 500000.0,
"subtotalAmount": 500000.0,
"totalDiscountAmount": 0.0,
"discountAmount": 0.0,
"lgeDiscountAmount": 0.0,
"nonCancelableAmount": 0.0,
"itemName": "Electronics",
"phone": "+628123456789",
"items": [
{
"seq": 1,
"sellerNo": "TEST_SELLR",
"itemType": "PHYSICAL",
"itemId": "Item1",
"itemName": "Electronics",
"feeRate": 10,
"quantity": 1,
"unitPrice": 500000,
"discountAmount": 0,
"lgeDiscountAmount": 0,
"deliveryGroupNo": ""
}
]
}
{
"userNo": "GB2501108122805",
"paymentMethod": "MYBANK",
"purchaseChannel": "WEB",
"successUrl": "https://example.com/success",
"failureUrl": "https://example.com/fail",
"totalAmount": 200.0,
"subtotalAmount": 200.0,
"totalDiscountAmount": 0.0,
"discountAmount": 0.0,
"lgeDiscountAmount": 0.0,
"nonCancelableAmount": 0.0,
"itemName": "Online Course",
"phone": "+8613800138000",
"items": [
{
"seq": 1,
"sellerNo": "TEST_SELLR",
"itemType": "PHYSICAL",
"itemId": "Item1",
"itemName": "Online Course",
"feeRate": 10,
"quantity": 1,
"unitPrice": 200,
"discountAmount": 0,
"lgeDiscountAmount": 0,
"deliveryGroupNo": ""
}
]
}
{
"userNo": "GB2501108122805",
"paymentMethod": "SEPA_DD",
"purchaseChannel": "WEB",
"successUrl": "https://example.com/success",
"failureUrl": "https://example.com/fail",
"totalAmount": 10.0,
"subtotalAmount": 10.0,
"totalDiscountAmount": 0.0,
"discountAmount": 0.0,
"lgeDiscountAmount": 0.0,
"nonCancelableAmount": 0.0,
"itemName": "Monthly Subscription",
"phone": "+4915123456789",
"items": [
{
"seq": 1,
"sellerNo": "TEST_SELLR",
"itemType": "PHYSICAL",
"itemId": "Item1",
"itemName": "Monthly Subscription",
"feeRate": 10,
"quantity": 1,
"unitPrice": 10,
"discountAmount": 0,
"lgeDiscountAmount": 0,
"deliveryGroupNo": ""
}
]
}
{
"userNo": "GB2501108122805",
"paymentMethod": "PRZELEWY24",
"purchaseChannel": "WEB",
"successUrl": "https://example.com/success",
"failureUrl": "https://example.com/fail",
"totalAmount": 100.0,
"subtotalAmount": 100.0,
"totalDiscountAmount": 0.0,
"discountAmount": 0.0,
"lgeDiscountAmount": 0.0,
"nonCancelableAmount": 0.0,
"itemName": "Books",
"phone": "+48500123456",
"items": [
{
"seq": 1,
"sellerNo": "TEST_SELLR",
"itemType": "PHYSICAL",
"itemId": "Item1",
"itemName": "Books",
"feeRate": 10,
"quantity": 1,
"unitPrice": 100,
"discountAmount": 0,
"lgeDiscountAmount": 0,
"deliveryGroupNo": ""
}
]
}
{
"userNo": "GB2501108122805",
"paymentMethod": "BILK",
"purchaseChannel": "APP",
"successUrl": "https://example.com/success",
"failureUrl": "https://example.com/fail",
"totalAmount": 50.0,
"subtotalAmount": 50.0,
"totalDiscountAmount": 0.0,
"discountAmount": 0.0,
"lgeDiscountAmount": 0.0,
"nonCancelableAmount": 0.0,
"itemName": "Game Credits",
"phone": "+905321234567",
"items": [
{
"seq": 1,
"sellerNo": "TEST_SELLR",
"itemType": "PHYSICAL",
"itemId": "Item1",
"itemName": "Game Credits",
"feeRate": 10,
"quantity": 1,
"unitPrice": 50,
"discountAmount": 0,
"lgeDiscountAmount": 0,
"deliveryGroupNo": ""
}
]
}
{
"userNo": "GB2501108122805",
"paymentMethod": "PIX",
"purchaseChannel": "APP",
"successUrl": "https://example.com/success",
"failureUrl": "https://example.com/fail",
"totalAmount": 100.0,
"subtotalAmount": 100.0,
"totalDiscountAmount": 0.0,
"discountAmount": 0.0,
"lgeDiscountAmount": 0.0,
"nonCancelableAmount": 0.0,
"itemName": "Streaming Service",
"phone": "+5511912345678",
"items": [
{
"seq": 1,
"sellerNo": "TEST_SELLR",
"itemType": "PHYSICAL",
"itemId": "Item1",
"itemName": "Streaming Service",
"feeRate": 10,
"quantity": 1,
"unitPrice": 100,
"discountAmount": 0,
"lgeDiscountAmount": 0,
"deliveryGroupNo": ""
}
]
}
{
"userNo": "GB2501108122805",
"paymentMethod": "SAFETYPAY",
"purchaseChannel": "WEB",
"successUrl": "https://example.com/success",
"failureUrl": "https://example.com/fail",
"totalAmount": 75.0,
"subtotalAmount": 75.0,
"totalDiscountAmount": 0.0,
"discountAmount": 0.0,
"lgeDiscountAmount": 0.0,
"nonCancelableAmount": 0.0,
"itemName": "Travel Booking",
"phone": "+51912345678",
"items": [
{
"seq": 1,
"sellerNo": "TEST_SELLR",
"itemType": "PHYSICAL",
"itemId": "Item1",
"itemName": "Travel Booking",
"feeRate": 10,
"quantity": 1,
"unitPrice": 75,
"discountAmount": 0,
"lgeDiscountAmount": 0,
"deliveryGroupNo": ""
}
]
}
{
"userNo": "GB2501108122805",
"paymentMethod": "TRANS_BANC",
"purchaseChannel": "WEB",
"successUrl": "https://example.com/success",
"failureUrl": "https://example.com/fail",
"totalAmount": 200.0,
"subtotalAmount": 200.0,
"totalDiscountAmount": 0.0,
"discountAmount": 0.0,
"lgeDiscountAmount": 0.0,
"nonCancelableAmount": 0.0,
"itemName": "Furniture",
"phone": "+5521912345678",
"items": [
{
"seq": 1,
"sellerNo": "TEST_SELLR",
"itemType": "PHYSICAL",
"itemId": "Item1",
"itemName": "Furniture",
"feeRate": 10,
"quantity": 1,
"unitPrice": 200,
"discountAmount": 0,
"lgeDiscountAmount": 0,
"deliveryGroupNo": ""
}
]
}
{
"userNo": "GB2501108122805",
"paymentMethod": "AFTERPAY",
"purchaseChannel": "WEB",
"successUrl": "https://example.com/success",
"failureUrl": "https://example.com/fail",
"totalAmount": 150.0,
"subtotalAmount": 150.0,
"totalDiscountAmount": 0.0,
"discountAmount": 0.0,
"lgeDiscountAmount": 0.0,
"nonCancelableAmount": 0.0,
"itemName": "Clothing",
"phone": "+61412345678",
"items": [
{
"seq": 1,
"sellerNo": "TEST_SELLR",
"itemType": "PHYSICAL",
"itemId": "Item1",
"itemName": "Clothing",
"feeRate": 10,
"quantity": 1,
"unitPrice": 150,
"discountAmount": 0,
"lgeDiscountAmount": 0,
"deliveryGroupNo": ""
}
]
}
{
"userNo": "GB2501108122805",
"paymentMethod": "BILLEASE",
"purchaseChannel": "WEB",
"successUrl": "https://example.com/success",
"failureUrl": "https://example.com/fail",
"totalAmount": 2000.0,
"subtotalAmount": 2000.0,
"totalDiscountAmount": 0.0,
"discountAmount": 0.0,
"lgeDiscountAmount": 0.0,
"nonCancelableAmount": 0.0,
"itemName": "Smartphone",
"phone": "+639171234567",
"items": [
{
"seq": 1,
"sellerNo": "TEST_SELLR",
"itemType": "PHYSICAL",
"itemId": "Item1",
"itemName": "Smartphone",
"feeRate": 10,
"quantity": 1,
"unitPrice": 2000,
"discountAmount": 0,
"lgeDiscountAmount": 0,
"deliveryGroupNo": ""
}
]
}
{
"userNo": "GB2501108122805",
"paymentMethod": "FPX",
"purchaseChannel": "WEB",
"successUrl": "https://example.com/success",
"failureUrl": "https://example.com/fail",
"totalAmount": 100.0,
"subtotalAmount": 100.0,
"totalDiscountAmount": 0.0,
"discountAmount": 0.0,
"lgeDiscountAmount": 0.0,
"nonCancelableAmount": 0.0,
"itemName": "Gift Card",
"phone": "+60123456789",
"items": [
{
"seq": 1,
"sellerNo": "TEST_SELLR",
"itemType": "PHYSICAL",
"itemId": "Item1",
"itemName": "Gift Card",
"feeRate": 10,
"quantity": 1,
"unitPrice": 100,
"discountAmount": 0,
"lgeDiscountAmount": 0,
"deliveryGroupNo": ""
}
]
}
{
"userNo": "GB2501108122805",
"paymentMethod": "BOOSTPAY",
"purchaseChannel": "APP",
"successUrl": "https://example.com/success",
"failureUrl": "https://example.com/fail",
"totalAmount": 50.0,
"subtotalAmount": 50.0,
"totalDiscountAmount": 0.0,
"discountAmount": 0.0,
"lgeDiscountAmount": 0.0,
"nonCancelableAmount": 0.0,
"itemName": "Mobile Top-up",
"phone": "+60123456789",
"items": [
{
"seq": 1,
"sellerNo": "TEST_SELLR",
"itemType": "PHYSICAL",
"itemId": "Item1",
"itemName": "Mobile Top-up",
"feeRate": 10,
"quantity": 1,
"unitPrice": 50,
"discountAmount": 0,
"lgeDiscountAmount": 0,
"deliveryGroupNo": ""
}
]
}
{
"userNo": "GB2501108122805",
"paymentMethod": "GRABPAY",
"purchaseChannel": "APP",
"successUrl": "https://example.com/success",
"failureUrl": "https://example.com/fail",
"totalAmount": 20.0,
"subtotalAmount": 20.0,
"totalDiscountAmount": 0.0,
"discountAmount": 0.0,
"lgeDiscountAmount": 0.0,
"nonCancelableAmount": 0.0,
"itemName": "Food Delivery",
"phone": "+6581234567",
"items": [
{
"seq": 1,
"sellerNo": "TEST_SELLR",
"itemType": "PHYSICAL",
"itemId": "Item1",
"itemName": "Food Delivery",
"feeRate": 10,
"quantity": 1,
"unitPrice": 20,
"discountAmount": 0,
"lgeDiscountAmount": 0,
"deliveryGroupNo": ""
}
]
}
{
"userNo": "GB2501108122805",
"paymentMethod": "MAYBANK_QR",
"purchaseChannel": "APP",
"successUrl": "https://example.com/success",
"failureUrl": "https://example.com/fail",
"totalAmount": 15.0,
"subtotalAmount": 15.0,
"totalDiscountAmount": 0.0,
"discountAmount": 0.0,
"lgeDiscountAmount": 0.0,
"nonCancelableAmount": 0.0,
"itemName": "Coffee",
"phone": "+60123456789",
"items": [
{
"seq": 1,
"sellerNo": "TEST_SELLR",
"itemType": "PHYSICAL",
"itemId": "Item1",
"itemName": "Coffee",
"feeRate": 10,
"quantity": 1,
"unitPrice": 15,
"discountAmount": 0,
"lgeDiscountAmount": 0,
"deliveryGroupNo": ""
}
]
}
{
"userNo": "GB2501108122805",
"paymentMethod": "TNGO",
"purchaseChannel": "APP",
"successUrl": "https://example.com/success",
"failureUrl": "https://example.com/fail",
"totalAmount": 10.0,
"subtotalAmount": 10.0,
"totalDiscountAmount": 0.0,
"discountAmount": 0.0,
"lgeDiscountAmount": 0.0,
"nonCancelableAmount": 0.0,
"itemName": "Snacks",
"phone": "+60123456789",
"items": [
{
"seq": 1,
"sellerNo": "TEST_SELLR",
"itemType": "PHYSICAL",
"itemId": "Item1",
"itemName": "Snacks",
"feeRate": 10,
"quantity": 1,
"unitPrice": 10,
"discountAmount": 0,
"lgeDiscountAmount": 0,
"deliveryGroupNo": ""
}
]
}
{
"userNo": "GB2501108122805",
"paymentMethod": "CONBINI",
"purchaseChannel": "APP",
"successUrl": "https://example.com/success",
"failureUrl": "https://example.com/fail",
"totalAmount": 5000.0,
"subtotalAmount": 5000.0,
"totalDiscountAmount": 0.0,
"discountAmount": 0.0,
"lgeDiscountAmount": 0.0,
"nonCancelableAmount": 0.0,
"itemName": "Beverage",
"phone": "01012345678",
"items": [
{
"seq": 1,
"sellerNo": "TEST_SELLR",
"itemType": "PHYSICAL",
"itemId": "Item1",
"itemName": "Beverage",
"feeRate": 10,
"quantity": 1,
"unitPrice": 5000,
"discountAmount": 0,
"lgeDiscountAmount": 0,
"deliveryGroupNo": ""
}
]
}
3. Response Specification #
3.1 Response Data Schema #
| depth | Field | Details & Description |
|---|---|---|
| -1 | resultCode |
🔴 Required 결과 코드 (성공 "0", 에러 시 "EBP-A-0001" 등) |
| -1 | message |
🔴 Required 결과 메시지 (성공 또는 에러 상세) |
| -1 | requestId |
🔴 Required 추적을 위한 고유 요청 ID |
| -1 | timestamp |
🔴 Required ISO 8601 형식의 응답 타임스탬프 e.g., 2025-12-19T14:24:00+09:00 |
| -1 | data |
🔴 Required 응답 데이터 (비즈니스 결과물) |
| 0 | status |
🔴 Required 결제 프로세스의 현재 상태. 최종 목표인 '성공'에 도달하기 위한 진행 상황을 나타냅니다. e.g., AUTHORIZED, ACTION_REQUIRED |
| 0 | paymentUrl |
⚪ Optional 추가 인증이 필요한 경우 사용자를 이동시킬 URL입니다. EBP에서 제공하는 브릿지 페이지이거나 PG사에서 직접 제공하는 인증 페이지일 수 있습니다. |
| 0 | orderNo |
🔴 Required 주문번호 |
| 0 | pgTransactionId |
🔴 Required PG 거래번호 |
| 0 | paymentContext |
🔴 Required EBP에서 발급한 암호화된 결제 컨텍스트 값입니다. '결제 생성 API' 호출 시 필수 값으로 사용됩니다. |
| 0 | successUrl |
🔴 Required 결제 성공 시 리다이렉트될 최종 URL |
| 0 | failureUrl |
🔴 Required 결제 실패 시 리다이렉트될 최종 URL |
| 0 | pgResponse |
🔴 Required PG사 응답 상세 정보 |
| 1 | resultCode |
🔴 Required PG사 응답 결과 코드 |
| 1 | data |
🔴 Required PG사 응답 상세 데이터. 상세 규격은 하단의 [PG별 상세 응답 데이터 (#32-pg별-상세-응답-데이터-pgresponsedata) 섹션을 참조하세요.] |
| 0 | savedPaymentMethods |
⚪ Optional 사용자가 이전에 저장한 결제 수단 목록입니다. 요청 시 |
| 1 | paymentMethod |
🔴 Required 결제 수단 코드 e.g., CARD, DIRECT_DEBIT |
| 1 | paymentMethodId |
🔴 Required EBP 내부에서 관리하는 결제 수단 고유 식별자 |
| 1 | cardNumber |
🟡 Conditional 마스킹 처리된 카드 번호 (카드 결제 수단인 경우) |
| 1 | cardIssuer |
🟡 Conditional 카드 발급사 또는 브랜드 명 (카드 결제 수단인 경우) |
| 1 | isBlocked |
🔴 Required 해당 결제 수단의 사용 차단 여부 (true 시 사용 불가) |
| 1 | pinErrorCount |
🔴 Required 결제 비밀번호(PIN) 입력 오류 횟수 |
| 1 | isPinRegistered |
🔴 Required 결제 비밀번호 등록 여부 |
| -1 | instructions |
🔴 Required 후속 처리를 위한 지시 사항 (프로세스 제어) |
| 0 | nextStep |
🔴 Required 상태를 전환하기 위해 클라이언트가 즉시 수행해야 할 행동 지시입니다. e.g., CLIENT_ACTION, CALL_API |
| 0 | completionMethod |
🔴 Required 해당 결제가 최종적으로 완료되는 주체와 방식입니다. e.g., WEBHOOK, API |
| 0 | requiresClientAction |
🔴 Required 클라이언트 추가 액션이 필요한지 여부 |
| 0 | clientAction |
⚪ Optional 클라이언트의 추가 액션 지시 정보 객체. |
| 1 | type |
⚪ Optional 클라이언트 액션 유형 e.g., TOKENIZE_CARD, CREATE_SOURCE, REDIRECT_TO_HPP |
| 1 | pgProvider |
⚪ Optional 액션을 처리할 PG사 |
| 1 | method |
⚪ Optional 리다이렉트 시 사용할 HTTP Method e.g., GET, POST |
| 0 | requiresFollowUpApi |
🔴 Required 후속 API(결제 생성 API 등) 호출이 필수인지 여부 |
| 0 | followUpApi |
⚪ Optional 클라이언트 액션 완료 후 호출해야 할 후속 API 정보. |
| 1 | method |
⚪ Optional 후속 API의 HTTP Method e.g., POST |
| 1 | url |
⚪ Optional 후속 API의 호출 경로 |
| 1 | description |
⚪ Optional 후속 API에 대한 부연 설명 |
결제 흐름 및 필드 활용 가이드:
- status: 결제 리소스의 현재 상태입니다. 클라이언트는 이 값을 확인해 결제의 진행 단계와 최종 성공 여부를 판단합니다.
- instructions.nextStep:
status가ACTION_REQUIRED일 때 결제를 진행하기 위한 제어권이 클라이언트에게 있음을 나타냅니다.- instructions.requiresClientAction 및 clientAction: 클라이언트가 추가로 수행해야 할 액션이 있는지 나타냅니다.
requiresClientAction이true인 경우,clientAction.type을 확인하여 제공된paymentUrl로 Redirect 하거나, PG 응답 데이터를 활용해 Direct로 SDK를 호출하는 등 지정된 동작을 수행해야 합니다.- data.paymentUrl: EBP가 PG사의 결제 페이지를 래핑하여 제공하는 URL입니다. 복잡한 PG 연동 로직 없이 간편하게 리다이렉트만으로 결제를 처리하고자 할 때 활용합니다. (
clientAction.type이REDIRECT_TO_HPP인 경우 주로 사용)- instructions.completionMethod: 결제 프로세스가 최종적으로 마감되는 주체와 경로를 명시합니다.
WEBHOOK: 클라이언트 액션 완료 후 EBP가 PG 웹훅을 수신해 자동으로 결제를 완료 처리합니다. 이후 상점으로 결과 웹훅이 전송되므로, 클라이언트는 결과 페이지로 이동해 처리를 대기합니다.API: 클라이언트가 인증 정보 등을 직접 확보한 뒤, EBP의 결제 생성 API를 호출해야 프로세스가 최종 종료됩니다.- instructions.requiresFollowUpApi 및 followUpApi: 클라이언트 액션 완료 후, 후속 API 호출이 필수적인지 나타냅니다.
requiresFollowUpApi가true라면, 클라이언트는followUpApi.method와url을 참고하여 최종 결제 생성 API 등을 직접 호출해야 합니다.- data.paymentHeaderContext: 주문 헤더 정보를 암호화하여 담고 있는 값입니다.
completionMethod가API(또는 후속 API 호출이 필요한 경우)인 경우, 후속 결제 생성 API를 호출할 때 Header(X-EBP-Context)에 이 값을 포함하여 요청해야 합니다.- data.paymentContext: 주문 및 세션 정보를 암호화하여 담고 있는 값입니다.
completionMethod가API(또는 후속 API 호출이 필요한 경우)인 경우, 후속 결제 생성 API를 호출할 때 Body(paymentContext)에 이 값을 포함하여 요청해야 합니다.
3.2 PG별 상세 응답 데이터 (pgResponse.data) #
pgResponse.data 객체의 내부 필드는 연동된 PG사 규격에 따라 다르게 구성됩니다.
Worldpay #
| depth | Field | Details & Description |
|---|---|---|
| -1 | type |
🔴 Required PG 응답 데이터 구조를 식별하기 위한 타입 값 e.g., WORLDPAY |
| -1 | pgRefId |
🔴 Required PG사 거래 참조 ID |
| -1 | returnUrl |
🔴 Required PG사 리턴 URL |
| -1 | referenceUrl |
🔴 Required PG사 참조 URL |
Response Sample (pgResponse) #
{
"pgResponse": {
"resultCode": "PASS",
"pgProvider": "WORLDPAY",
"data": {
"type": "WORLDPAY",
"pgRefId": "3592845796",
"returnUrl": "https://payments-test.worldpay.com/app/hpp/integration/wpg/corporate?OrderKey=LGETEST3%5EPGI_7202603277730815&Ticket=00177500323082302hx43VA8CApQK6sui8pi4vA0GOz8s8T1zqoAcWX&source=https%3A%2F%2Fsecure-test.worldpay.com",
"referenceUrl": "https://payments-test.worldpay.com/app/hpp/integration/wpg/corporate?OrderKey=LGETEST3%5EPGI_7202603277730815&Ticket=00177500323082302hx43VA8CApQK6sui8pi4vA0GOz8s8T1zqoAcWX&source=https%3A%2F%2Fsecure-test.worldpay.com"
}
}
}
Checkout.com #
| depth | Field | Details & Description |
|---|---|---|
| 0 | type |
🔴 Required PG 응답 데이터 구조를 식별하기 위한 타입 값 e.g., CHECKOUT |
| 0 | publicKey |
🔴 Required Checkout.com Flow를 초기화하기 위한 Public Key입니다. 클라이언트 환경에서 사용되며, 결제 UI(Flow) 마운트 시 필수적으로 전달됩니다. |
| 0 | paymentSession |
🔴 Required Checkout.com에서 생성된 결제 세션 정보로, 결제 세션의 인증 및 보안 검증에 사용됩니다. Flow 초기화 시 함께 전달되며, 해당 결제 요청을 식별하고 보호하는 역할을 합니다. |
Response Sample (pgResponse) #
{
"pgResponse": {
"resultCode": "OK",
"pgProvider": "CHECKOUT_COM",
"data": {
"type": "CHECKOUT",
"publicKey": "pk_sbox_2ewvjanc7xpuduraa7tqqu...",
"paymentSession": {
"id": "ps_3BVPH1ROFbmWLF7NwzgppkRahGy",
"payment_session_secret": "pss_88520096-4af1-463e-a0fb-737d169e340a",
"payment_session_token": "YmFzZTY0:eyJpZCI6InBzXzNCVlBIMVJPRmJtV0xGN053emdwcGtSYWhHeSIsImVudGl0eV9pZCI6ImVudF8za2ZoaHZ6NXVldXRmajVtNmpkYTRhYnB6YSIsImV4cGVyaW1lbnRzIjp7fSwicHJvY2Vzc2luZ19jaGFubmVsX2lkIjoicGNfa21teXVieWMyNnpldnBrcWx0eXZqdXBvbWUiLCJhbW91bnQiOjI4MjUwMCwibG9jYWxlIjoiZW4tR0IiLCJjdXJyZW5jeSI6IkFFRCIsInBheW1lbnRfbWV0aG9kcyI6W3sidHlwZSI6ImNhcmQiLCJjYXJkX3NjaGVtZXMiOlsiVmlzYSIsIk1hc3RlcmNhcmQiXSwic2NoZW1lX2Nob2ljZV9lbmFibGVkIjpmYWxzZSwic3RvcmVfcGF5bWVudF9kZXRhaWxzIjoiZGlzYWJsZWQiLCJiaWxsaW5nX2FkZHJlc3MiOnsiY291bnRyeSI6IkFFIn19LHsidHlwZSI6ImFwcGxlcGF5IiwiZGlzcGxheV9uYW1lIjoiTEcgVUFFIiwiY291bnRyeV9jb2RlIjoiQUUiLCJjdXJyZW5jeV9jb2RlIjoiQUVEIiwibWVyY2hhbnRfY2FwYWJpbGl0aWVzIjpbInN1cHBvcnRzM0RTIl0sInN1cHBvcnRlZF9uZXR3b3JrcyI6WyJ2aXNhIiwibWFzdGVyQ2FyZCJdLCJ0b3RhbCI6eyJsYWJlbCI6IkxHIFVBRSIsInR5cGUiOiJmaW5hbCIsImFtb3VudCI6IjI4MjUifX0seyJ0eXBlIjoiZ29vZ2xlcGF5IiwibWVyY2hhbnQiOnsiaWQiOiIwODExMzA4OTM4NjI2ODg0OTk4MiIsIm5hbWUiOiJMRyBVQUUiLCJvcmlnaW4iOiJodHRwOi8vbG9jYWxob3N0OjgwODAifSwidHJhbnNhY3Rpb25faW5mbyI6eyJ0b3RhbF9wcmljZV9zdGF0dXMiOiJGSU5BTCIsInRvdGFsX3ByaWNlIjoiMjgyNSIsImNvdW50cnlfY29kZSI6IkFFIiwiY3VycmVuY3lfY29kZSI6IkFFRCJ9LCJjYXJkX3BhcmFtZXRlcnMiOnsiYWxsb3dlZF9hdXRoX21ldGhvZHMiOlsiUEFOX09OTFkiLCJDUllQVE9HUkFNXzNEUyJdLCJhbGxvd2VkX2NhcmRfbmV0d29ya3MiOlsiVklTQSIsIk1BU1RFUkNBUkQiXX19LHsidHlwZSI6InRhYmJ5IiwiY291bnRyeV9jYWxsaW5nX2NvZGVzIjpbIjk3MSJdLCJlbWFpbCI6InpheWVkLmFAZXhhbXBsZS5hZSJ9XSwiZmVhdHVyZV9mbGFncyI6WyJhbmFseXRpY3Nfb2JzZXJ2YWJpbGl0eV9lbmFibGVkIiwiZ2V0X3dpdGhfcHVibGljX2tleV9lbmFibGVkIiwibG9nc19vYnNlcnZhYmlsaXR5X2VuYWJsZWQiLCJyaXNrX2pzX2VuYWJsZWQiLCJ1c2VfYmlsbGluZ19hZGRyZXNzX2Zyb21fY29uZmlnX2Zvcl90b2tlbml6YXRpb24iLCJ1c2VfZGV2aWNlX2FwaV9mb3Jfb2JzZXJ2YWJpbGl0eSIsInVzZV9yaXNranNfdjIiLCJ1c2VfdXJsX2hhc2hfZm9yX2lmcmFtZV9wcm9wcyJdLCJyaXNrIjp7ImVuYWJsZWQiOmZhbHNlfSwibWVyY2hhbnRfbmFtZSI6IkxHIFVBRSIsInBheW1lbnRfc2Vzc2lvbl9zZWNyZXQiOiJwc3NfODg1MjAwOTYtNGFmMS00NjNlLWEwZmItNzM3ZDE2OWUzNDBhIiwiaW50ZWdyYXRpb25fZG9tYWluIjoiYXBpLnNhbmRib3guY2hlY2tvdXQuY29tIn0=",
"_links": {
"self": {
"href": "https://api.sandbox.checkout.com/payment-sessions/ps_3BVPH1ROFbmWLF7NwzgppkRahGy"
}
}
}
}
}
}
Omise #
| depth | Field | Details & Description |
|---|---|---|
| -1 | publicKey |
🔴 Required Omise에서 발급받은 공개 키 |
| -1 | amount |
🔴 Required 결제 금액 |
| -1 | currencyCode |
🔴 Required 결제 통화 코드 |
| -1 | itemName |
🔴 Required 결제 대상 상품명 |
| -1 | authRequestId |
🔴 Required 인증 요청 식별자, 결제 생성 요청에 필수적으로 사용 |
| -1 | authSignature |
🔴 Required 요청 무결성 검증을 위한 보안 서명, 결제 생성 요청에 필수적으로 사용 |
| -1 | paymentContext |
🔴 Required 결제 컨텍스트 정보. 결제 생성 요청에 필수적으로 사용되는 암호화된 데이터 세트. |
Response Sample (pgResponse) #
{
"pgResponse": {
"resultCode": "OK",
"pgProvider": "CHECKOUT_COM",
"data": {
"type": "CHECKOUT",
"publicKey": "pkey_test_66lmsec8z06uh3jz...",
"amount": 2610000,
"currency": "THB",
"itemName": "LG Nanocell 55\" TV",
"authRequestId": "06EJSAKC9PX1P2VZW4YGS0X518",
"authSignature": "GpNbvxXs5QvWk3lN2PzfWgnVP7kf/HezW47gJ5nUd3I=",
"paymentContext": "QfAy+og0Pc7OaUKV92YAcN98rAMDMKEHW6iUl/sK3ytDWhV/+sootHKD63BwkLf7nPyrkojvOWHLw7QMY1UzpKG8zKhUDgxW+Dh8UK+VDEgPXkHcF2xSraKOt4tevD48ozwawiXoKmzg9KOQehCDLK0YYhg8yiEtqXAWEcMqpPkqNlT7mnghfWOokCMFmJQGCVP2NIMHFos8AixkMgPadZUjSLdKeFpwIWGB5LnTKZm3wUXfwDzGljYiAX8ZPfo9XNmvkrFpy3RglYqy+l7JLzR84YswVMqP0hxSPC7EfeM1GrSxwcLgBd58S9qWZeYuSn2p0w7rUFgOTLNcZ7HAK9fDw27lzlPfbqPrhL8eNB+tY3Ic8YJG9H2698Jyv2AMxCpY8N+Uu5e3VWtD2Qm17Le0ARN9ntMmKQNsXqo6HU8o2erlwBX5xddWiEPk7YYr624Je34xoxoUkyIbNAu4BA7fP6+0JFUjQsTVsmZ2GdSXysQoXualLIdTtJlqgO1KenftjQx4XfPS3pl4hxP8BV0inoo4DXcgj65YFprd5QBqC0b20efGZQ3O6PykFzDFYXvnCfLmlo6lNKHg6CawAHBK+K7RqZeRuKpH4GfR5nq3A1FqfVYTVivk3ck7JwKESHFARo6O8NLvslQ3WqClXThOKIufTLNa1o9n0L9gjTC2FDRBgPwsxgaZXHtj3Wa3zWQoH46/sAA2z39szJ+I+IgEfsx++wyKigkaDoPlsb5dII/n2ywv6HAd6F6olpLcQvvllwLpXCkB4MmupokUw9TYI1U2gd2FdYGHgFaGGzXgm20FFTbJxu9idsiR7x2G56GegIjhgXgtLzEclt9x7ZRvsOMWXHXGvXrJpSw2RWwfQCGjtUM45wPvgqQp94qMXvd330C7tAmflDeS08G+AT2SI56mG1D1rZoCj3F3sTjcxjmbbYMOuKr7cWiba9F/YeL2ivETNCyVXdnxWcFGaKlEDxyvRd5aFZuYC1OeBNDysWL76ijfDcVTFJeDJLKoeMHJfOHcGP0rUTgQvXKYrUpnO6hA0IYUuajGxLCqHE9OB0re3LNEy2GBvcN5AZyJyLM6QBO8Op//V0DaDEmamO+aQzVfIveXbGpvlVlCTmaP9MYo3TvdxN1qCsGIl0QmKoGNiP/52Abey0QeOMfFq6lEDxyvRd5aFZuYC1OeBNDr93mSDShWnbfrf0iJVfLF20PpLGJtq1A59zxD3B7GeR2Uqr6WreqxoMpEBAAKbLAR2yaDW7unSwYs3IbslqTvwyeIOm8U+/WA+raJB4ewh3Wbp9Mrurq7GaPpHB2RhOrj/S8ej8XD9QYAHnAKKL/PQJVrCzOlGggOqtOyH9t0Ek1QjXEIe+fNuAPbCbXAjw6w+2WOzVencM2MrK0GS8DBiIzOsWkGUVPZnHVS1GT2SU7FmPseKXUAnWQap5wVsDy5F/Xw3B0hFMAZdrSQLN+t",
"savedPaymentMethods": null,
"successUrl": "http://localhost:8080/pgui/v2/hpp/worldpay/success",
"failureUrl": "http://localhost:8080/pgui/v2/hpp/worldpay/failure",
"pgResponse": {
"resultCode": "PASS",
"pgProvider": "WORLDPAY",
"data": {
"type": "WORLDPAY",
"pgRefId": "3592845796",
"returnUrl": "https://payments-test.worldpay.com/app/hpp/integration/wpg/corporate?OrderKey=LGETEST3%5EPGI_7202603277730815&Ticket=00177500323082302hx43VA8CApQK6sui8pi4vA0GOz8s8T1zqoAcWX&source=https%3A%2F%2Fsecure-test.worldpay.com",
"referenceUrl": "https://payments-test.worldpay.com/app/hpp/integration/wpg/corporate?OrderKey=LGETEST3%5EPGI_7202603277730815&Ticket=00177500323082302hx43VA8CApQK6sui8pi4vA0GOz8s8T1zqoAcWX&source=https%3A%2F%2Fsecure-test.worldpay.com"
}
}
},
"instructions": {
"nextStep": "CLIENT_ACTION",
"completionMethod": "WEBHOOK",
"requiresClientAction": true,
"clientAction": {
"type": "REDIRECT_TO_HPP",
"pgProvider": "WORLDPAY",
"method": "POST"
},
"requiresFollowUpApi": false,
"followUpApi": null
}
}
}
3.3 Response Samples #
{
"resultCode": "0",
"message": "SUCCESS",
"requestId": "06EN1Q1E42FZPN6YT5PF8BZT88",
"timestamp": "2026-04-03T01:01:41.987427200Z",
"data": {
"status": "ACTION_REQUIRED",
"paymentUrl": "/pgui/v2/hpp/worldpay/paypal/wrapping?paymentContext=QfAy+og0Pc7OaUKV92YAcF6anMj8wv9uA0Srp+d+YmRDWhV/+sootHKD63BwkLf7nPyrko...",
"orderNo": "ORD_7202604037731552",
"pgTransactionId": "PGI_7202604037731554",
"paymentContext": "QfAy+og0Pc7OaUKV92YAcF6anMj8wv9uA0Srp+d+YmRDWhV/+sootHKD63BwkLf7nPyrko...",
"savedPaymentMethods": null,
"successUrl": "https://devkic-payapi.nebp.lge.com/pgui/v2/hpp/worldpay/success",
"failureUrl": "https://devkic-payapi.nebp.lge.com/pgui/v2/hpp/worldpay/failure",
"pgResponse": {
"resultCode": "PASS",
"pgProvider": "WORLDPAY",
"data": {
"type": "WORLDPAY",
"pgRefId": "3594289311",
"returnUrl": "https://payments-test.worldpay.com/app/hpp/integration/wpg/corporate?OrderKey=LGETEST3%5EPGI_7202604037731554&Ticket=00177561010184602AR5AUHvlnns9OqZOj-c3bAP0hRdc2IKQRPpfRC&source=https%3A%2F%2Fsecure-test.worldpay.com",
"referenceUrl": "https://payments-test.worldpay.com/app/hpp/integration/wpg/corporate?OrderKey=LGETEST3%5EPGI_7202604037731554&Ticket=00177561010184602AR5AUHvlnns9OqZOj-c3bAP0hRdc2IKQRPpfRC&source=https%3A%2F%2Fsecure-test.worldpay.com"
}
}
},
"instructions": {
"nextStep": "CLIENT_ACTION",
"completionMethod": "WEBHOOK",
"requiresClientAction": true,
"clientAction": {
"type": "REDIRECT_TO_HPP",
"pgProvider": "WORLDPAY",
"method": "POST"
},
"requiresFollowUpApi": false,
"followUpApi": null
}
}
{
"resultCode": "0",
"message": "SUCCESS",
"requestId": "06EN4BVGAT0TJTK2EJ8RM21ZE0",
"timestamp": "2026-04-03T07:12:16.131035200Z",
"data": {
"status": "ACTION_REQUIRED",
"paymentUrl": "/pgui/v2/hpp/checkoutcom/card/wrapping?paymentContext=QfAy+og0Pc7OaUKV92YAcJpgE/5feUx7nKM7nsA2oMRDWhV/+sootHKD63BwkLf7nPyrkojvOWHLw7QMY1UzpDeVUelxvMp...",
"orderNo": "ORD_7202604037731761",
"pgTransactionId": "PGI_7202604037731763",
"paymentContext": "QfAy+og0Pc7OaUKV92YAcJpgE/5feUx7nKM7nsA2oMRDWhV/+sootHKD63BwkLf7nPyrkojvOWHLw7QMY1UzpDeVUelxvMp...",
"savedPaymentMethods": null,
"successUrl": "https://devkic-payapi.nebp.lge.com/pgui/v2/hpp/checkoutcom/success",
"failureUrl": "https://devkic-payapi.nebp.lge.com/pgui/v2/hpp/checkoutcom/failure",
"pgResponse": {
"resultCode": "OK",
"pgProvider": "CHECKOUT_COM",
"data": {
"type": "CHECKOUT",
"publicKey": "pk_sbox_2ewvjanc7xpuduraa7tqquf5mmi",
"paymentSession": {
"id": "ps_3BpyWEErpjTiHWFQO6F5vYynqC5",
"payment_session_secret": "pss_06980ec7-3169-42ac-bd97-85f1b7cc14dd",
"payment_session_token": "YmFzZTY0:eyJpZCI6InBzXzNCcHlXRUVycGpUaUhXRlFPNkY1dll5bnFDNSIsImVudGl0eV9pZCI6ImVudF8za2ZoaHZ6NXVld...",
"_links": {
"self": {
"href": "https://api.sandbox.checkout.com/payment-sessions/ps_3BpyWEErpjTiHWFQO6F5vYynqC5"
}
}
}
}
}
},
"instructions": {
"nextStep": "CLIENT_ACTION",
"completionMethod": "WEBHOOK",
"requiresClientAction": true,
"clientAction": {
"type": "REDIRECT_TO_HPP",
"pgProvider": "CHECKOUT_COM",
"method": "POST"
},
"requiresFollowUpApi": false,
"followUpApi": null
}
}
{
"resultCode": "0",
"message": "SUCCESS",
"requestId": "06EN41W5RTTKKDX4HRE5JV7NX4",
"timestamp": "2026-04-03T06:28:38.259142300Z",
"data": {
"status": "ACTION_REQUIRED",
"paymentUrl": "/pgui/v2/hpp/omise/card/wrapping?paymentContext=QfAy%2Bog0Pc7OaUKV92YAcOD%2FaZ2IDdOD9sJI9kzUoGtDWhV%2F%2B...",
"orderNo": "ORD_7202604037731725",
"pgTransactionId": "PGI_7202604037731727",
"paymentContext": "QfAy+og0Pc7OaUKV92YAcOD/aZ2IDdOD9sJI9kzUoGtDWhV/...",
"savedPaymentMethods": null,
"successUrl": "https://devkic-payapi.nebp.lge.com/pgui/v2/hpp/omise/success",
"failureUrl": "https://devkic-payapi.nebp.lge.com/pgui/v2/hpp/omise/failure",
"pgResponse": {
"resultCode": "OK",
"pgProvider": "OMISE",
"data": {
"type": "OMISE_CARD",
"publicKey": "pkey_test_66lmsec8z06uh3jzilx",
"amount": 2500,
"amountDecimal": 250000,
"currency": "THB",
"itemName": "Wireless Charger",
"orderNo": "ORD_7202604037731725",
"authRequestId": "06EN41W5RTTKKDX4HRE5JV7NX4",
"authSignature": "Ddr53aFJ/WBOkdFWcjVE6GqmHy4dciOpUbApXBUa+VU="
}
}
},
"instructions": {
"nextStep": "CLIENT_ACTION",
"completionMethod": "API",
"requiresClientAction": true,
"clientAction": {
"type": "TOKENIZE_CARD",
"pgProvider": "OMISE",
"method": "GET"
},
"requiresFollowUpApi": true,
"followUpApi": {
"method": "POST",
"url": "/api/v2/payments",
"description": "After card tokenization, call this Payment Creation API using the obtained token."
}
}
}
{
"resultCode": "0",
"message": "SUCCESS",
"requestId": "06EJSXACF3167DYF17DCKPV398",
"timestamp": "2026-03-27T01:42:48.101231400Z",
"data": {
"status": "ACTION_REQUIRED",
"paymentUrl": "/pgui/v2/hpp/worldpay/card/wrapping?paymentContext=QfAy%2Bog0Pc7OaUKV92YAcF8bIPJ1MnoOmpeUOWd9eYRDWhV%2F...",
"orderNo": "ORD_7202603277730925",
"pgTransactionId": "PGI_7202603277730929",
"paymentContext": "QfAy%2Bog0Pc7OaUKV92YAcF8bIPJ1MnoOmpeUOWd9eYRDWhV%2F...",
"savedPaymentMethods": null,
"successUrl": "https://devkic-payapi.nebp.lge.com/pgui/v2/hpp/worldpay/success",
"failureUrl": "https://devkic-payapi.nebp.lge.com/pgui/v2/hpp/worldpay/failure",
"pgResponse": {
"resultCode": "PASS",
"pgProvider": "WORLDPAY",
"data": {
"type": "WORLDPAY",
"pgRefId": "3592852189",
"returnUrl": "https://hpp-sandbox.worldpay.com/app/hpp/integration/wpg/corporate?OrderKey=LGETEST3%5EPGI_7202603277730929&Ticket=00177500776844702U-c7q9YvTrz7RVzEY-WJvQbS7JfWDoR3BcNo-0&source=https%3A%2F%2Fsecure-test.worldpay.com",
"referenceUrl": "https://hpp-sandbox.worldpay.com/app/hpp/integration/wpg/corporate?OrderKey=LGETEST3%5EPGI_7202603277730929&Ticket=00177500776844702U-c7q9YvTrz7RVzEY-WJvQbS7JfWDoR3BcNo-0&source=https%3A%2F%2Fsecure-test.worldpay.com"
}
}
},
"instructions": {
"nextStep": "CLIENT_ACTION",
"completionMethod": "WEBHOOK",
"requiresClientAction": true,
"clientAction": {
"type": "REDIRECT_TO_HPP",
"pgProvider": "WORLDPAY",
"method": "POST"
},
"requiresFollowUpApi": false,
"followUpApi": null
}
}
{
"resultCode": "0",
"message": "SUCCESS",
"requestId": "06EJSWXF1S9VSJVR3H832TWEY0",
"timestamp": "2026-03-27T01:41:01.060997300Z",
"data": {
"status": "ACTION_REQUIRED",
"paymentUrl": "/pgui/v2/hpp/omise/bank-transfer/wrapping",
"orderNo": "ORD_7202603277730917",
"pgTransactionId": "PGI_7202603277730920",
"paymentContext": "QfAy+og0Pc7OaUKV92YAcJpgE/5feUx7nKM7nsA2oMRDWhV/+sootHKD63BwkLf7nPyrkojvOWHLw7QMY1UzpDeVUelxvMp...",
"savedPaymentMethods": null,
"successUrl": "https://devkic-pgui.nebp.lge.com//pgui/v2/hpp/omise/success",
"failureUrl": "https://devkic-pgui.nebp.lge.com//pgui/v2/hpp/omise/failure",
"pgResponse": {
"resultCode": "OK",
"pgName": "OMISE",
"data": {
"publicKey": "pkey_test_66lmsec8z06uh3jzilx",
"amount": 26100,
"amountDecimal": 2610000,
"currency": "THB",
"bankTransferSource": "mobile_banking_bay",
"platformType": "IOS",
"authRequestId": "06EJSWXF1S9VSJVR3H832TWEY0",
"authSignature": "552RtzZfrEkiZE/piQ9GQ62UWC8XqkckETlzzBUnxjg=",
"paymentContext": "QfAy+og0Pc7OaUKV92YAcJpgE/5feUx7nKM7nsA2oMRDWhV/+sootHKD63BwkLf7nPyrkojvOWHLw7QMY1UzpDeVUelxvMp..."
}
}
},
"instructions": {
"nextStep": "CLIENT_ACTION",
"completionMethod": "API",
"requiresClientAction": true,
"clientAction": {
"type": "CREATE_SOURCE",
"provider": "OMISE"
},
"requiresFollowUpApi": true,
"followUpApi": {
"method": "POST",
"url": "/api/v2/payments",
"description": "After creating the payment intent, call this Payment Creation API using the obtained source ID."
}
}
}
{
"resultCode": "0",
"message": "SUCCESS",
"requestId": "06EN40N9V7N1PQXAH0GMBN91Z4",
"timestamp": "2026-04-03T06:23:19.800137100Z",
"data": {
"status": "ACTION_REQUIRED",
"paymentUrl": "/pgui/v2/hpp/omise/installment/wrapping?paymentContext=QfAy+og0Pc7OaUKV92YAcPQqpKNrGELf9Ty8UQO/rElDWhV/+...",
"orderNo": "ORD_7202604037731713",
"pgTransactionId": "PGI_7202604037731715",
"paymentContext": "QfAy+og0Pc7OaUKV92YAcPQqpKNrGELf9Ty8UQO/rElDWhV/+...",
"savedPaymentMethods": null,
"successUrl": "http://localhost:8080/pgui/v2/hpp/omise/success",
"failureUrl": "http://localhost:8080/pgui/v2/hpp/omise/failure",
"pgResponse": {
"resultCode": "OK",
"pgProvider": "OMISE",
"data": {
"type": "OMISE_INSTALLMENT",
"publicKey": "pkey_test_66lmsec8z06uh3jzilx",
"amount": 2500,
"amountDecimal": 250000,
"currencyCode": "THB",
"authRequestId": "06EN40N9V7N1PQXAH0GMBN91Z4",
"authSignature": "CRMmdgHJpcCiACWY6ZOGiUxOSjqTcv9zQsbVFXI3zD8=",
"installmentSource": "installment_kbank",
"installmentTerm": 3
}
}
},
"instructions": {
"nextStep": "CLIENT_ACTION",
"completionMethod": "API",
"requiresClientAction": true,
"clientAction": {
"type": "CREATE_SOURCE",
"provider": "OMISE"
},
"requiresFollowUpApi": true,
"followUpApi": {
"method": "POST",
"url": "/api/v2/payments",
"description": "After creating the payment intent, call this Payment Creation API using the obtained source ID."
}
}
}
{
"resultCode": "0",
"message": "SUCCESS",
"requestId": "06EN4HHZ63D5QPZD5FZV9H2ZX4",
"timestamp": "2026-04-03T07:37:09.299115500Z",
"data": {
"status": "ACTION_REQUIRED",
"paymentUrl": "/pgui/v2/hpp/checkoutcom/tabby/wrapping?paymentContext=QfAy%2Bog0Pc7OaUKV92YAcGpbC7at%2BRppP%2...",
"orderNo": "ORD_8202604037731809",
"pgTransactionId": "PGI_8202604037731811",
"paymentContext": "QfAy+og0Pc7OaUKV92YAcGpbC7at+RppP/jsdoEbGb1DWhV/+...",
"savedPaymentMethods": null,
"successUrl": "http://localhost:8080/pgui/v2/hpp/checkoutcom/success",
"failureUrl": "http://localhost:8080/pgui/v2/hpp/checkoutcom/failure",
"pgResponse": {
"resultCode": "OK",
"pgProvider": "CHECKOUT_COM",
"data": {
"type": "CHECKOUT",
"publicKey": "pk_sbox_2ewvjanc7xpuduraa7tqquf5mmi",
"paymentSession": {
"id": "ps_3Bq1XyvpnV2AwXjD0CepNgDfq6P",
"payment_session_secret": "pss_6d438e14-fecd-43d2-b23f-d038ccea89e0",
"payment_session_token": "YmFzZTY0:eyJpZCI6InBzXzNCcTFYeXZwblYyQXdYakQwQ2VwTmdEZnE2UCIsImVudGl0eV9pZCI6ImVudF8za2ZoaHZ6NXVldXRmajVtNmpkYTRhYnB6YSIsImV4cGVyaW1lbnRzIjp7fSwicHJvY2Vzc2luZ19jaGFubmVsX2lkIjoicGNfa21teXVieWMyNnpldnBrcWx0eXZqdXBvbWUiLCJhbW91bnQiOjI4MjUwMCwibG9jYWxlIjoiZW4tR0IiLCJjdXJyZW5jeSI6IkFFRCIsInBheW1lbnRfbWV0aG9kcyI6W3sidHlwZSI6ImNhcmQiLCJjYXJkX3NjaGVtZXMiOlsiVmlzYSIsIk1hc3RlcmNhcmQiXSwic2NoZW1lX2Nob2ljZV9lbmFibGVkIjpmYWxzZSwic3RvcmVfcGF5bWVudF9kZXRhaWxzIjoiZGlzYWJsZWQiLCJiaWxsaW5nX2FkZHJlc3MiOnsiY291bnRyeSI6IkFFIn19LHsidHlwZSI6ImFwcGxlcGF5IiwiZGlzcGxheV9uYW1lIjoiTEcgVUFFIiwiY291bnRyeV9jb2RlIjoiQUUiLCJjdXJyZW5jeV9jb2RlIjoiQUVEIiwibWVyY2hhbnRfY2FwYWJpbGl0aWVzIjpbInN1cHBvcnRzM0RTIl0sInN1cHBvcnRlZF9uZXR3b3JrcyI6WyJ2aXNhIiwibWFzdGVyQ2FyZCJdLCJ0b3RhbCI6eyJsYWJlbCI6IkxHIFVBRSIsInR5cGUiOiJmaW5hbCIsImFtb3VudCI6IjI4MjUifX0seyJ0eXBlIjoiZ29vZ2xlcGF5IiwibWVyY2hhbnQiOnsiaWQiOiIwODExMzA4OTM4NjI2ODg0OTk4MiIsIm5hbWUiOiJMRyBVQUUiLCJvcmlnaW4iOiJodHRwOi8vbG9jYWxob3N0OjgwODAifSwidHJhbnNhY3Rpb25faW5mbyI6eyJ0b3RhbF9wcmljZV9zdGF0dXMiOiJGSU5BTCIsInRvdGFsX3ByaWNlIjoiMjgyNSIsImNvdW50cnlfY29kZSI6IkFFIiwiY3VycmVuY3lfY29kZSI6IkFFRCJ9LCJjYXJkX3BhcmFtZXRlcnMiOnsiYWxsb3dlZF9hdXRoX21ldGhvZHMiOlsiUEFOX09OTFkiLCJDUllQVE9HUkFNXzNEUyJdLCJhbGxvd2VkX2NhcmRfbmV0d29ya3MiOlsiVklTQSIsIk1BU1RFUkNBUkQiXX19LHsidHlwZSI6InRhYmJ5IiwiY291bnRyeV9jYWxsaW5nX2NvZGVzIjpbIjk3MSJdLCJlbWFpbCI6InpheWVkLmFAZXhhbXBsZS5hZSJ9XSwiZmVhdHVyZV9mbGFncyI6WyJhbmFseXRpY3Nfb2JzZXJ2YWJpbGl0eV9lbmFibGVkIiwiZ2V0X3dpdGhfcHVibGljX2tleV9lbmFibGVkIiwibG9nc19vYnNlcnZhYmlsaXR5X2VuYWJsZWQiLCJyaXNrX2pzX2VuYWJsZWQiLCJ1c2VfYmlsbGluZ19hZGRyZXNzX2Zyb21fY29uZmlnX2Zvcl90b2tlbml6YXRpb24iLCJ1c2VfZGV2aWNlX2FwaV9mb3Jfb2JzZXJ2YWJpbGl0eSIsInVzZV9yaXNranNfdjIiLCJ1c2VfdXJsX2hhc2hfZm9yX2lmcmFtZV9wcm9wcyJdLCJyaXNrIjp7ImVuYWJsZWQiOmZhbHNlfSwibWVyY2hhbnRfbmFtZSI6IkxHIFVBRSIsInBheW1lbnRfc2Vzc2lvbl9zZWNyZXQiOiJwc3NfNmQ0MzhlMTQtZmVjZC00M2QyLWIyM2YtZDAzOGNjZWE4OWUwIiwiaW50ZWdyYXRpb25fZG9tYWluIjoiYXBpLnNhbmRib3guY2hlY2tvdXQuY29tIn0=",
"_links": {
"self": {
"href": "https://api.sandbox.checkout.com/payment-sessions/ps_3Bq1XyvpnV2AwXjD0CepNgDfq6P"
}
}
}
}
}
},
"instructions": {
"nextStep": "CLIENT_ACTION",
"completionMethod": "WEBHOOK",
"requiresClientAction": true,
"clientAction": {
"type": "REDIRECT_TO_HPP",
"pgProvider": "CHECKOUT_COM",
"method": "POST"
},
"requiresFollowUpApi": false,
"followUpApi": null
}
}
{
"resultCode": "0",
"message": "SUCCESS",
"requestId": "06EN4H3C9QMHEAZYS6YQZJC7GC",
"timestamp": "2026-04-03T07:35:09.863177500Z",
"data": {
"status": "ACTION_REQUIRED",
"paymentUrl": "/pgui/v2/hpp/checkoutcom/tamara/wrapping?paymentContext=QfAy%2Bog0Pc7OaUKV92YAcF5qAbtkl%2BEuYAbqu5aS5KFDWhV%2F%2...",
"orderNo": "ORD_8202604037731801",
"pgTransactionId": "PGI_8202604037731803",
"paymentContext": "QfAy+og0Pc7OaUKV92YAcF5qAbtkl+EuYAbqu5aS5KFDWhV/...",
"savedPaymentMethods": null,
"successUrl": "http://localhost:8080/pgui/v2/hpp/checkoutcom/success",
"failureUrl": "http://localhost:8080/pgui/v2/hpp/checkoutcom/failure",
"pgResponse": {
"resultCode": "OK",
"pgProvider": "CHECKOUT_COM",
"data": {
"type": "CHECKOUT",
"publicKey": "pk_sbox_2ewvjanc7xpuduraa7tqquf5mmi",
"paymentSession": {
"id": "ps_3Bq1IsElSF2ZoM1aZtuTBv4Mfg6",
"payment_session_secret": "pss_fc314af0-b0b1-49e7-b2be-469bd6c33d50",
"payment_session_token": "YmFzZTY0:eyJpZCI6InBzXzNCcTFJc0VsU0YyWm9NMWFadHVUQnY0TWZnNiIsImVudGl0eV9pZCI6ImVudF8za2ZoaHZ6NX...",
"_links": {
"self": {
"href": "https://api.sandbox.checkout.com/payment-sessions/ps_3Bq1IsElSF2ZoM1aZtuTBv4Mfg6"
}
}
}
}
}
},
"instructions": {
"nextStep": "CLIENT_ACTION",
"completionMethod": "WEBHOOK",
"requiresClientAction": true,
"clientAction": {
"type": "REDIRECT_TO_HPP",
"pgProvider": "CHECKOUT_COM",
"method": "POST"
},
"requiresFollowUpApi": false,
"followUpApi": null
}
}
4. 응답 후처리 가이드 (Next Steps) #
결제 의사 생성 API 호출 후, 응답의 status가 ACTION_REQUIRED이고 instructions.nextStep이 CLIENT_ACTION인 경우, 클라이언트는 제공된 데이터를 기반으로 사용자가 결제를 진행할 수 있도록 화면을 전환하거나 PG SDK를 초기화해야 합니다.
상점의 환경과 요구사항에 따라 리다이렉트 연동(HPP Wrapping) 방식과 직접 연동(Direct PG SDK/UI 렌더링) 방식 중 선택하여 처리할 수 있습니다.
4.1 리다이렉트 연동 (간편 연동) #
EBP가 제공하는 결제 페이지로 사용자를 이동시켜 결제를 처리하는 가장 간단한 방식입니다. 상점은 각 PG사별 복잡한 SDK 연동 로직을 직접 구현할 필요가 없습니다.
- 대상 필드:
data.paymentUrl - 처리 방법: 전달받은
paymentUrl에는 결제 인증에 필요한 암호화된 컨텍스트가 쿼리 파라미터로 포함되어 있습니다. 상점은 이 URL로 GET 방식으로 직접 이동(redirect) 하면 됩니다.
연동 예시 (공통) #
결제 의사 생성 API 응답으로 받은 paymentUrl을 다음과 같이 사용합니다.
1. HTML 설정 (데이터 전송을 위한 가상 Form)
<form id="ebp-redirect-form" method="GET"></form>
2. Javascript 처리 예시
// 1. EBP 결제 의사 생성 API로부터 응답 데이터 수신
const { paymentUrl } = response.data;
// 2. form action에 paymentUrl 설정
const form = document.getElementById("ebp-redirect-form");
form.action = paymentUrl;
// 3. form submit (결제 페이지로 리다이렉트)
form.submit();
참고 사항:
paymentUrl자체에 결제 컨텍스트(paymentContext)가 포함되어 있으므로, Form 내부에 별도의 Input 필드를 생성하거나 데이터를 직접 조립할 필요가 없습니다. 브라우저가 POST 요청을 보내면서 URL의 Query String을 유지하며, EBP는 이를 수신하여 해당 PG사의 결제 화면을 안전하게 구성합니다.paymentUrl을 통한 리다이렉트 방식을 사용할 경우, 응답 데이터에 후속 API 호출 여부(requiresFollowUpApi)나 상세 정보(followUpApi)가 있더라도 EBP가 모든 인증 및 승인 프로세스를 직접 마감합니다. 상점은 별도의 결제 생성 API를 호출할 필요 없이 웹훅이나 최종 리다이렉트 URL을 통해 결과만 확인하면 됩니다.
4.2 직접 연동 (커스텀 연동) #
상점의 기존 결제 화면 내에 PG사가 제공하는 UI 컴포넌트(Drop-in)를 직접 렌더링하고자 할 때 사용하는 방식입니다.
- 대상 필드:
data.pgResponse.data내의 PG사별 인증 정보 - 처리 방법: 각 PG사별로 반환되는 Key, Token 값 등을 활용해 PG SDK를 초기화하고 프론트엔드 환경에서 결제를 진행합니다.
Worldpay 직접 연동 예시 #
Worldpay는 전달받은 referenceUrl을 사용하여 PG SDK를 초기화합니다.
1. HTML 설정
<!-- WorldPay Web Components SDK -->
<script src="https://payments.worldpay.com/resources/hpp/integrations/embedded/js/hpp-embedded-integration-library.js"></script>
<!-- Worldpay UI가 렌더링될 컨테이너 -->
<div id="worldpay-container"></div>
2. Javascript 처리 예시
const { referenceUrl } = response.data.pgResponse.data;
const customOptions = {
url: referenceUrl,
type: "iframe",
inject: "onload",
target: "worldpay-container",
accessibility: true,
language: "ko",
country: "KR",
successURL: response.data.successUrl,
cancelURL: response.data.failureUrl,
failureURL: response.data.failureUrl,
errorURL: response.data.failureUrl
};
if (customOptions.url) {
const libraryObject = new WPCL.Library();
libraryObject.setup(customOptions);
}
Checkout.com 직접 연동 예시 #
Checkout.com은 전달받은 publicKey와 paymentSession 객체를 사용하여 Flow UI 컴포넌트를 마운트합니다.
1. HTML 설정 (SDK 로드 및 마운트 지점 정의)
<!-- Checkout.com Web Components SDK -->
<script src="https://checkout-web-components.checkout.com/index.js"></script>
<!-- Checkout.com UI가 렌더링될 컨테이너 -->
<div id="checkout-container"></div>
2. Javascript 처리 예시
const { publicKey, paymentSession } = response.data.pgResponse.data;
// 1. Checkout Web SDK 초기화
const checkout = await CheckoutWebComponents({
publicKey: publicKey,
environment: 'sandbox', // 또는 'production'
paymentSession: paymentSession, // 객체 전체를 전달
onPaymentCompleted: (component, paymentResponse) => {
window.location.href = response.data.successUrl;
},
onError: (component, error) => {
console.error("Checkout Error:", error);
}
});
// 2. Flow 컴포넌트 생성 및 마운트
const flowComponent = checkout.create('flow');
flowComponent.mount('#checkout-container');
Omise Card 직접 연동 예시 #
신용카드 결제는 publicKey를 사용하여 일회성 Token을 생성한 뒤, 해당 토큰 정보를 포함하여 EBP의 결제 생성 API를 호출합니다.
1. HTML 설정
<!-- Omise.js SDK 로드 -->
<script type="text/javascript" src="https://cdn.omise.co/omise.js"></script>
<!-- 결제 실행 버튼 -->
<button id="omise-card-btn">카드 결제하기</button>
2. Javascript 처리 예시
const { publicKey, authRequestId, authSignature, paymentHeaderContext, paymentContext, amount, currency } = response.data.pgResponse.data;
// Omise SDK 설정
OmiseCard.configure({ publicKey: publicKey });
document.getElementById('omise-card-btn').onclick = () => {
OmiseCard.open({
amount: amount,
currency: currency,
onCreateTokenSuccess: async (token) => {
const paymentBody = {
authRequestId,
authSignature,
paymentContext,
paymentMethod: "CARD",
paymentInstrumentId: token,
paymentInstrumentType: "ONE_TIME_TOKEN"
};
const host = 'https://devkic-payapi.nebp.lge.com/';
// EBP 결제 생성 API 호출
const chargeResponse = await fetch(`${host}/api/v2/payments`, {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'X-EBP-Context': paymentHeaderContext
},
body: JSON.stringify(paymentBody)
});
if (!chargeResponse.ok) throw new Error("Payment API 호출 실패");
const result = await chargeResponse.json();
// 3DS 인증이 필요한 경우 authorizeUri로 이동
const authorizeUri = result.data?.pgResponse?.data?.authorizeUri;
if (authorizeUri) {
window.location.href = authorizeUri;
} else if (result.resultCode === "0") {
window.location.href = response.data.successUrl;
}
}
});
};
Omise Installment (Source) 직접 연동 예시 #
할부 등 소스 기반 결제는 결제 요청 전 createSource를 통해 일회성 소스 ID를 생성합니다.
1. HTML 설정
<!-- Omise.js SDK 로드 -->
<script type="text/javascript" src="https://cdn.omise.co/omise.js"></script>
<!-- 결제 실행 버튼 -->
<button id="omise-installment-btn">할부 결제하기</button>
2. Javascript 처리 예시
const { publicKey, authRequestId, authSignature, paymentHeaderContext, paymentContext, installmentSource, installmentTerm, amountDecimal, currency } = response.data.pgResponse.data;
Omise.setPublicKey(publicKey);
document.getElementById('omise-installment-btn').onclick = () => {
const sourceParams = {
type: installmentSource,
amount: Number(amountDecimal), // 소스 생성 시에는 소수점 포함 금액 사용
currency: currency,
installment_term: installmentTerm
};
Omise.createSource(sourceParams.type, sourceParams, async (statusCode, res) => {
if (statusCode === 200) {
const paymentBody = {
authRequestId,
authSignature,
paymentContext,
paymentMethod: "INSTALLMENT",
paymentInstrumentId: res.id,
paymentInstrumentType: "ONE_TIME_SOURCE"
};
const host = 'https://devkic-payapi.nebp.lge.com/';
// EBP 결제 생성 API 호출
const paymentResponse = await fetch(`${host}/api/v2/payments`, {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'X-EBP-Context': paymentHeaderContext
},
body: JSON.stringify(paymentBody)
});
const result = await paymentResponse.json();
// 3DS 인증이 필요한 경우 authorizeUri로 이동
const authorizeUri = result.data?.pgResponse?.data?.authorizeUri;
if (authorizeUri) {
window.location.href = authorizeUri;
} else if (result.resultCode === "0") {
window.location.href = response.data.successUrl;
}
}
});
};