Banks of Korea

Overview

Banks of Korea is a payment method that uses the P2C (person to corporate) internet bank transfers to dedicated bank accounts. Most often customers perform such transfer via their online-banking application to specified bank account details to finish the payment. Sending amount and receiving bank account must be entered correctly according to instruction provided to customers on payment page. Purchases through this method can be performed by using Payment Page and Gate, payouts – by using Gate and Dashboard (Old Dashboard).

There are two ways of purchase processing: with the redirection of the customer and without it. Refer to your ECommPay key account manager for more information about the applicable processing way.

General information

Payment method type P2C
Countries and regions South Korea
Payment currencies KRW
Currency conversion
Purchases +
Payouts +
Stored credentials payments
Full refunds
Partial refunds
Chargebacks
Notes
  • The amounts for KRW currency are specified in the major currency units (without fractional part)
  • Depending on the provider that processes the payment starting from 01.08.2020, payments will only be processed during the provider's working hours: Monday – Friday from 8:00 to 23:59 (GMT+9). During weekends and non-working hours, payments are not processed, callbacks are not sent, and requests for payouts are delayed until business hours. For more information, contact the ECommPay key account manager
Onboarding and access fee Refer to your ECommPay key account manager

Interaction diagram

Payment processing by using the Banks of Korea payment method requires merchant's web service, one of the interfaces and the payment platform of ECommPay, as well as provider's services which support this payment method.



Operations support

  Interfaces Amounts, KRW Times **
Payment Page CMS Plug-ins Gate Dashboard (Old Dashboard) Minimum Maximum Basic Threshold
Purchases + + 10,000 30,000,000 * *
Payouts + + * * up to 10 minutes 48 hours

* Refer to your ECommPay key account manager for more information.

** The basic and threshold times are defined as follows:

  • The basic time is the average estimated time between the moment a payment is initiated in the payment platform to the moment the payment result is sent to the initiator. The basic time evaluation is made on the assumption of normal operation of all technical facilities and communication channels and typical customer behaviour (if any input from customer is required). Use the basic time to estimate when to react to the absence of payment result notifications or when to check payment status.
  • The threshold time is the maximum possible time between the moment a payment is initiated in the payment platform to the moment the initiator receives the callback with the payment result. A payment is automatically declined, if its waiting time exceeds the threshold time. For individual setting of the threshold time limit, contact ECommPay technical support.

Processing scenarios

In the Banks of Korea method, to perform a purchase operation, you need to redirect a customer to the bank service or to display payment instructions to the customer, while a payout is performed with the notification of a customer via web service.

Figure: Purchase by using Payment Page with the redirection of the customer



Figure: Purchase by using Payment Page without the redirection of the customer



Figure: Purchase by using Gate with the redirection of the customer



Figure: Purchase by using Gate without the redirection of the customer



Figure: Payout by using Gate



Supported banks

Payments through the Banks of Korea method are carried out through banks that support the work with this method. Banks have their own identifiers, which are used to initiate payouts by using Gate.

The table below provides information on these banks for informational purposes, it may change without additional notice; for the most recent list of supported banks, contact your ECommPay Key Account Manager or POST the /v2/info/banks/{payment_method}/{operationType}/list request using Gate API: /v2/info/banks/korea/sale/list.

The request must contain the project and payment IDs, signature, currency, and payment amount, as shown in the example. It is important to specify real payment data, but if the payment has not yet been generated, you can specify a random value for the payment ID in the request.

Figure: Example of requesting a list of banks

{
  "general": {
    "project_id": 200,
    "payment_id": "ORDER_155860015",
    "signature": "K6jllym+PtObocZtr345st...=="
  },
  "payment": {
    "amount": 1000,
    "currency": "KRW"
  }
}
Table 1. List of banks
Bank ID
Busan Bank 1376
Citibank Korea 1476
Credit Union 1426
Daegu Bank 1366
dmsgod Mutual Savings Bank 1396
IBK 761
Jeju Bank 1456
Jeonbuk Bank 1446
KakaoBank 1406
K Bank 1486
KDB 1386
KEB Hana Bank 1466
Kookmin Bank 771
Kwangju Bank 1356
Kyungnam Bank 1346
Nonghyup Bank 781
Post Bank 1436
Saemaul Bank 811
SC First Bank 801
Shinhan Bank 751
Suhyup Bank 1416
Woori Bank 791

The sections that follow provide detailed information about what you need to perform payments and how you can analyse the information on payments and operations.

Purchase by using Payment Page with the redirection of the customer

General information

In the Banks of Korea method, to perform a purchase by using Payment Page, the merchant web service should send a request with all the required parameters and signature to the ECommPay URL and get the callback with the payment result from the payment platform. When opening Payment Page, you can either allow your customer to select the Banks of Korea method from the list of other payment methods on Payment Page or have Payment Page opened with the Banks of Korea method selected. For more information about preselecting payment methods, see in Preselecting payment method.



Figure: Purchase sequence by using Payment Page

  1. A customer initiates a purchase on the merchant's web service.
  2. The web service sends the request for Payment Page opening to the specified ECommPay URL.
  3. The request for opening is redirected to the payment platform.
  4. The payment platform performs the initial request processing that involves validation of the required parameters and signature.
  5. Requested Payment Page is generated into the ECommPay payment platform as specified in the project settings and the request parameters.
  6. Payment Page is displayed to the customer.
  7. The customer selects the Banks of Korea method and agrees to use the method (or accepts the method already selected on Payment Page and agrees).
  8. The payment platform receives the purchase request for payment processing.
  9. The payment platform performs the internal purchase request processing and sends it to the provider service.
  10. The purchase request is processed on the provider service side.
  11. The provider service generates the data for redirecting the customer to the provider website and sends it to the payment platform.
  12. The payment platform sends the customer redirection data to Payment Page.
  13. The customer is redirected to the provider website.
  14. The customer completes all the payment steps required.
  15. The payment is processed on the provider side.
  16. The result is displayed to the customer on the provider website.
  17. The customer is redirected back to Payment Page.
  18. The provider service sends the result notification to the payment platform.
  19. The payment platform sends a callback with the payment result to the web service.
  20. The payment platform sends the result to Payment Page.
  21. A page with the payment result information is displayed to the customer on Payment Page.

The sections that follow provide details the request format and the Payment Page parameters to use in the Banks of Korea payment method and provide the information on the format of callbacks with payment results. For the general information on how to use the API, see Payment Page API Description.

Request format

There are several things you must consider when performing a purchase through the Banks of Korea method:

  1. You must provide values for the basic minimum of parameters. Listed below are the parameters that are mandatory for any payment method:
    • project_id—the project ID obtained from ECommPay
    • payment_id—payment ID unique within the project
    • payment_currency—payment currency in ISO-4217 alpha-3 format
    • payment_amount—amount in the major currency units (without fractional part)
  2. There are more mandatory parameters for this method:
    • customer_id—the unique ID of the customer within your project
    • first_name—customer first name
    • last_name—customer last name
    • email—customer email address

    If the data is not passed in the request, it is requested additionally from the customer on Payment Page.

  3. The currency of payment can only be KRW.
  4. By default Payment Page is opened in English language. To change the language of Payment Page and payment page of the Banks of Korea service pass the ko language code in the language_code parameter in the request for opening.
  5. To preselect Banks of Korea as the payment method on Payment Page for customers, pass the code online-korean-banks in the force_payment_method parameter in the request for opening.
  6. If required, you can also add any other additional parameters Payment Page supports. For information about all parameters available in the Banks of Korea method, see Payment Page invocation parameters.
  7. After you specify all the parameters you need, you must create the signature for the request. For instructions on how to sign a payment request, see Signature generation and verification.

Thus, a correct payment request in the Banks of Korea method must include project, customer and payment IDs, customer data, currency and the amount of a payment, as shown in the following example:

EPayWidget.run(
    { payment_id: '3936', 
      payment_amount: 10000, 
      payment_currency: 'KRW', 
      project_id: 200,
      customer_id: '123',
      customer_first_name: 'Kan',
      customer_last_name: 'Do',
      customer_email: 'do@mail.com',
      signature: "kUi2x9dKHAVNU0FYldJrxh4yo+52Kt8KURLCvhtT4DqtOcZzUCwX6R\/ekpZhkIQg=="
    }
)

Callback format

The standard format for callbacks is used to deliver purchase results from Banks of Korea. For more information, see Callbacks.

Here is the example of a callback with an information about successful 10,000 KRW purchase made by the 21 customer in the 200 project.

Figure: Example of a succeed purchase callback

 { 
        "project_id": 200,
        "payment": {
            "id": "TEST_15710440622623432441",
            "type": "purchase",
            "status": "success",
            "date": "2019-10-16T09:41:26+0000",
            "method": "Korean banks",
            "sum": {
                "amount": 10000,
                "currency": "KRW"
            },
            "description": "TEST_1571044062268"
        },
        "customer": {
            "id": "21"
        },
        "operation": {
            "id": 1737000008461,
            "type": "sale",
            "status": "success",
            "date": "2019-10-16T09:41:26+0000",
            "created_date": "2019-10-16T09:39:20+0000",
            "request_id": "00001738",
            "sum_initial": {
                "amount": 10000,
                "currency": "KRW"
            },
            "sum_converted": {
                "amount": 10000,
                "currency": "KRW"
            },
            "code": "0",
            "message": "success",
            "provider": {
                "id": 1481,
                "payment_id": "",
                "auth_code": ""
            }
        },
        "signature": "0BKrdDlCVpyNMdPZCX1DXdaeMVM8hDWWCY4PmcanJ...=="
    }

Here is the example of a callback for a purchase rejected due to minimum amount limit exceeding.

Figure: Example of a declined purchase callback

{
        "project_id": 200,
        "payment": {
            "id": "TEST_157130660960567",
            "type": "purchase",
            "status": "decline",
            "date": "2019-10-17T10:38:03+0000",
            "method": "Korean banks",
            "sum": {
                "amount": 1500,
                "currency": "KRW"
            },
            "description": "TEST_157130660960567"
        },
        "customer": {
            "id": "1"
        },
        "operation": {
            "id": 15589000008586,
            "type": "sale",
            "status": "decline",
            "date": "2019-10-17T10:38:03+0000",
            "created_date": "2019-10-17T10:22:51+0000",
            "request_id": "00015590",
            "sum_initial": {
                "amount": 1500,
                "currency": "KRW"
            },
            "sum_converted": {
                "amount": 1500,
                "currency": "KRW"
            },
            "code": "603",
            "message": "Auto decline",
            "provider": {
                "id": 1481,
                "payment_id": ""
            }
        },
        "signature": "fO7MdlR35ws0oc40ehw6xh2gxyFAQHk+zVkKj0/qpdu...=="
    }

Related topics

The following topics might be useful when implementing payments through Payment Page:

Purchase by using Payment Page without the redirection of the customer

General information

In the Banks of Korea method, to perform a purchase by using Payment Page, the merchant web service should send a request with all the required parameters and signature to the ECommPay URL and get the callback with the payment result from the payment platform. When opening Payment Page, you can either allow your customer to select the Banks of Korea method from the list of other payment methods on Payment Page or have Payment Page opened with the Banks of Korea method selected. For more information about preselecting payment methods, see in Preselecting payment method.



Figure: Purchase sequence by using Payment Page

  1. A customer initiates a purchase on the merchant's web service.
  2. The web service sends the request for Payment Page opening to the specified ECommPay URL.
  3. The request for opening is redirected to the payment platform.
  4. The payment platform performs the initial request processing that involves validation of the required parameters and signature.
  5. Requested Payment Page is generated into the ECommPay payment platform as specified in the project settings and the request parameters.
  6. Payment Page is displayed to the customer.
  7. The customer selects the Banks of Korea method and agrees to use the method (or accepts the method already selected on Payment Page and agrees).
  8. The payment platform receives the purchase request for payment processing.
  9. The payment platform performs the internal purchase request processing and sends it to the provider service.
  10. The purchase request is processed on the provider service side.
  11. The provider service generates and sends the data for displaying the payment instructions to the customer to the payment platform.
  12. The payment platform sends the data for displaying the payment instructions to the customer to Payment Page.
  13. The payment instructions are displayed to the customer.
  14. The customer completes all the required payment steps .
  15. The payment is processed on the provider side.
  16. The provider service sends the result notification to the payment platform.
  17. The payment platform sends a callback with the payment result to the web service.
  18. The payment platform sends the result to Payment Page.
  19. A page with the payment result information is displayed to the customer on Payment Page.

The sections that follow provide details the request format and the Payment Page parameters to use in the Banks of Korea payment method and provide the information on the format of callbacks with payment results. For the general information on how to use the API, see Payment Page API Description.

Request format

There are several things you must consider when performing a purchase through the Banks of Korea method:

  1. You must provide values for the basic minimum of parameters. Listed below are the parameters that are mandatory for any payment method:
    • project_id—the project ID obtained from ECommPay
    • payment_id—payment ID unique within the project
    • payment_currency—payment currency in ISO-4217 alpha-3 format
    • payment_amount—amount in the major currency units (without fractional part)
    • customer_id—the unique ID of the customer within your project
  2. It is recommended to specify the first and last names of the customer in the customer_first_name and customer_last_name additional parameters. If the request is missing the parameters, on Payment Page the additional fields are displaying to the customer to input missing data. For more details about clarification, see Submission of additional payment information.
  3. The currency of payment can only be KRW.
  4. By default Payment Page is opened in English language. To change the language of Payment Page and payment page of the Banks of Korea service pass the ko language code in the language_code parameter in the request for opening.
  5. To preselect Banks of Korea as the payment method on Payment Page for customers, pass the code online-korean-banks in the force_payment_method parameter in the request for opening.
  6. If required, you can also add any other additional parameters Payment Page supports. For information about all parameters available in the Banks of Korea method, see Payment Page invocation parameters.
  7. After you specify all the parameters you need, you must create the signature for the request. For instructions on how to sign a payment request, see Signature generation and verification.

Thus, a correct payment request in the Banks of Korea method must include project and payment IDs, customer data, currency and the amount of a payment, as shown in the following example:

    { payment_id: '3936', 
      payment_amount: 10000, 
      payment_currency: 'KRW', 
      project_id: 200,
      customer_first_name: 'Kan',
      customer_last_name: 'Do',
      customer_id: '123',
      signature: "kUi2x9dKHAVNU0FYldJrxh4yo+52Kt8KURLCvhtT4DqtOcZzUCwX6...=="
    }

Callback format

The standard format for callbacks is used to deliver purchase results from Banks of Korea. For more information, see Callbacks.

Here is the example of a callback with an information about successful 10,000 KRW purchase made by the 21 customer in the 1840 project.

Figure: Example of a succeed purchase callback

{
        "project_id": 1840,
        "payment": {
            "id": "1234567890_0007",
            "type": "purchase",
            "status": "success",
            "date": "2020-04-01T11:18:58+0000",
            "method": "Korean banks",
            "sum": {
                "amount": 10000,
                "currency": "KRW"
            },
            "description": "HPPay sale transaction"
        },
        "customer": {
            "id": "21"
        }
        "operation": {
            "id": 39,
            "type": "sale",
            "status": "success",
            "date": "2020-04-01T11:18:58+0000",
            "created_date": "2020-04-01T11:18:50+0000",
            "request_id": "f5e71b1b5b243722c576bc45634787d85ad416ef87c1e-00000001",
            "sum_initial": {
                "amount": 10000,
                "currency": "KRW"
            },
            "sum_converted": {
                "amount": 10000,
                "currency": "KRW"
            },
            "code": "0",
            "message": "Success",
            "provider": {
                "id": 1995,
                "payment_id": "",
                "auth_code": ""
            }
        },
        "signature": "rxcZU0s0GQuiTI1MSA5efBzR...PdmU3uAKwJNZfQbxu9Itqp5sIx+cA=="
    }

Here is the example of a callback for a declined purchase.

Figure: Example of a declined purchase callback

{
        "project_id": 1840,
        "payment": {
            "id": "1234567890_0008",
            "type": "purchase",
            "status": "decline",
            "date": "2020-04-01T11:17:58+0000",
            "method": "Korean banks",
            "sum": {
                "amount": 10000,
                "currency": "KRW"
            },
            "description": "HPPay sale transaction"
        },
        "customer": {
            "id": "21"
        }
        "operation": {
            "id": 39,
            "type": "sale",
            "status": "decline",
            "date": "2020-04-01T11:18:58+0000",
            "created_date": "2020-04-01T11:18:50+0000",
            "request_id": "f5e71b1b5b243722c576bc45634787d85ad416ef87c1e-00000002",
            "sum_initial": {
                "amount": 10000,
                "currency": "KRW"
            },
            "sum_converted": {
                "amount": 10000,
                "currency": "KRW"
            },
            "code": "20000",
            "message": "General decline",
            "provider": {
                "id": 1995,
                "payment_id": "",
                "auth_code": ""
            }
        },
        "signature": "rxcZU0s0GQuiTI1MSA5efBzR...PdmU3uAKwJNZfQbwqe4Itqp5sIx+cA=="
    }

Related topics

The following topics might be useful when implementing payments through Payment Page:

Purchase by using Gate with the redirection of the customer

General information

In the Banks of Korea methods, when processing a purchase by using Gate, the merchant web service is required to do the following:

  1. Send a request with all the required parameters and signature to the ECommPay URL.
  2. Perform redirecting customer to the Banks of Korea form.
  3. Get the callback with the payment result from the payment platform.

The following diagram provides the detailed picture of the payment processing procedure.



Figure: Purchase sequence by using Gate

  1. A customer initiates a purchase through one of the Banks of Korea group banks on the merchant's web service side.
  2. The web service sends the request for processing the purchase by using Gate to the specified ECommPay URL.
  3. The payment platform receives the request for processing the purchase from Gate.
  4. The payment platform performs the initial request processing that includes validation of the required parameters and signature.
  5. The payment platform sends the response with request receipt confirmation and correctness check result to the web service. For more information, see Response format.
  6. The payment platform performs the internal payment request processing and redirects the request to the provider service.
  7. The request is processed on the provider side.
  8. The provider service sends the data for customer redirection to the provider side to the payment platform.
  9. The payment platform sends the callback with the redirection data to the web service.
  10. The customer is redirected to the provider website.
  11. The customer completes all the payment steps required.
  12. The payment is processed on the provider side.
  13. The result is displayed to the customer on the provider website.
  14. The customer is redirected to the merchant's web service.
  15. The provider service sends the payment result notification to the payment platform.
  16. The ECommPay payment platform sends a callback to the web service.
  17. The customer receives the payment result on the web service.

The sections that follow discuss in more details the request format and the Gate parameters to use in the Banks of Korea payment method and provide the information about formats of the data for redirecting customers and the information about the format of callbacks with payment results. The general information about working with API see in the API Description section.

Request format

There are several things you must consider when using purchase requests in the Banks of Korea method:
  1. You perform purchase by sending the /v2/payment/banks/korea/sale request by using POST (HTTP) method. This is an online banking request group: /v2/payment/banks/{payment_method}/sale
  2. The following objects and parameters must be specified in the request:
    • Object general—general purchase information:
      • project_id—project identifier
      • payment_id—unique payout identifier
      • signature—signature created after you specify all the required parameters. For more information about signature generation, see Signature generation and verification
    • Object customer—customer information:
      • id—the unique ID of the customer within your project
      • ip_address—customer IP address
      • first_name—first name
      • last_name—last name
      • email—email address
    • Object payment—purchase information:
      • amount—amount in the major currency units (without fractional part)
      • currency—purchase currency in ISO-4217 alpha-3 format
    • Object return_url—URLs for redirecting a customer from the bank website:
      • success—URL for redirecting a customer after a performed purchase
      • decline —URL for redirecting a customer after a declined purchase
  3. The currency of a purchase can only be KRW.
  4. By default the payment page of the Banks of Korea service is opened in English language. To change it pass the ko language code in the customer.language parameter in the request.
  5. Depending on the payment processing provider, other mandatory parameters may be required to complete the payment. In this case, the list of parameters is sent in the clarification callback. For more details, see Additional payment information submission.
  6. If required, you can also add any other additional parameters Gate supports.

Thus, a correct payment request through the Banks of Korea method must include project, payment, customer and bank IDs, customer IP-address, signature, customer data, currency and amount of the purchase, and the return URL, as shown in the following example:

Figure: Purchase request example

{
    "general": {
      "project_id": 200,
      "payment_id": payment_id,
      "signature": "PJkV8ej\/UG0Di8hTng6JvC7vQsaC6tajQVVfBaNIipTv+AWo...=="
    },
    "payment": {
      "amount": 10000,
      "currency": "KRW"
      },
    "customer": {
      "id":"21",
      "ip_address": "248.1.1.1",
      "first_name": "Kon",
      "last_name": "Do",
      "email": "do@mail.com",
    },
    "return_url":{
      "decline" : "http://return.url",
      "success" : "http://return.url"
    }
}

Formats of the customer redirection data

To redirect a customer from the web service to the bank site, you must receive a callback from the payment platform containing the URL for redirection in the redirect_data.url parameter and data to be sent in the request body in the redirect_data.body parameter, and use these parameters when opening the bank's HTML page using the method specified in the redirect_data.method parameter.

Figure: The callback fragment containing the redirection data

 "redirect_data": {
                    "body": {
                        "sid": 2553,
                        "tid": 1737000008461,
                        "amount": "10000",
                        "currency": "KRW",
                        "payby": "p2p",
                        "item_quantity[]": "1",
                        "item_name[]": "1",
                        "item_no[]": "1",
                        "item_desc[]": "1",
                        "item_amount_unit[]": "1000000",
                        "firstname": "Sung",
                        "lastname": "Do",
                        "email": "clearskies07@gmail.com",
                        "description": "TEST_1571044062268",
                        },
                    "method": "POST",
                    "url": "https://secure.awepay.com/"
                },

Callback format

In the Banks of Korea method, the callbacks that deliver purchase results use the standard format described in Callbacks.

The following is the example of a callback with the information about successful 10,000 KRW purchase made by the 21 customer in the 200 project.

Figure: Example of a succeed purchase callback

 { "project_id": 200,
        "payment": {
            "id": "TEST_15710440622623432441",
            "type": "purchase",
            "status": "success",
            "date": "2019-10-16T09:41:26+0000",
            "method": "Korean banks",
            "sum": {
                "amount": 10000,
                "currency": "KRW"
            },
            "description": "TEST_1571044062268"
        },
        "customer": {
            "id": "21"
        },
        "operation": {
            "id": 1737000008461,
            "type": "sale",
            "status": "success",
            "date": "2019-10-16T09:41:26+0000",
            "created_date": "2019-10-16T09:39:20+0000",
            "request_id": "00001738",
            "sum_initial": {
                "amount": 10000,
                "currency": "KRW"
            },
            "sum_converted": {
                "amount": 10000,
                "currency": "KRW"
            },
            "code": "0",
            "message": "success",
            "provider": {
                "id": 1481,
                "payment_id": "",
                "auth_code": ""
            }
        },
        "signature": "0BKrdDlCVpyNMdPZCX1DXdaeMVM8hDWWCY4PmcanJ...=="
    }

The following is the example of a callback for a purchase rejected due to minimum amount limit exceeding.

Figure: Example of a declined purchase callback

{
        "project_id": 200,
        "payment": {
            "id": "TEST_157130660960567",
            "type": "purchase",
            "status": "decline",
            "date": "2019-10-17T10:38:03+0000",
            "method": "Korean banks",
            "sum": {
                "amount": 1000,
                "currency": "KRW"
            },
            "description": "TEST_157130660960567"
        },
        "customer": {
            "id": "1"
        },
        "operation": {
            "id": 15589000008586,
            "type": "sale",
            "status": "decline",
            "date": "2019-10-17T10:38:03+0000",
            "created_date": "2019-10-17T10:22:51+0000",
            "request_id": "00015590",
            "sum_initial": {
                "amount": 1000,
                "currency": "KRW"
            },
            "sum_converted": {
                "amount": 1000,
                "currency": "KRW"
            },
            "code": "603",
            "message": "Auto decline",
            "provider": {
                "id": 1481,
                "payment_id": ""
            }
        },
        "signature": "fO7MdlR35ws0oc40ehw6xh2gxyFAQHk+zVkKj0/qpdu...=="
    }

Related topics

The following topics might be useful when implementing payments through Gate:

Purchase by using Gate without the redirection of the customer

General information

In the Banks of Korea method, when processing a purchase by using Gate, the merchant web service is required to do the following:

  1. Send a request with all the required parameters and signature to the ECommPay URL.
  2. Display the payment instructions to the customer.
  3. Get the callback with the payment result from the payment platform.

The following diagram provides the detailed picture of the payment processing procedure.



Figure: Purchase sequence by using Gate

  1. A customer initiates a purchase through one of the Banks of Korea group banks on the merchant's web service side.
  2. The web service sends the request for processing the purchase by using Gate to the specified ECommPay URL.
  3. The payment platform receives the request for processing the purchase from Gate.
  4. The payment platform performs the initial request processing that includes validation of the required parameters and signature.
  5. The payment platform sends the response with request receipt confirmation and correctness check result to the web service. For more information, see Response format.
  6. The payment platform performs the internal payment request processing and redirects the request to the provider service.
  7. The request is processed on the provider side.
  8. The provider service sends the data for displaying the payment instructions to the customer to the payment platform.
  9. The payment platform sends the callback with the payment instructions data to the web service.
  10. The payment instructions are displayed to the customer.
  11. The customer completes all the required payment steps.
  12. The payment is processed on the provider side.
  13. The provider service sends the payment result notification to the payment platform.
  14. The ECommPay payment platform sends a callback to the web service.
  15. The customer receives the payment result on the web service.

The sections that follow discuss in more details the request format and the Gate parameters to use in the Banks of Korea payment method and provide the information about formats of the data for displaying the payment instructions to customers and the information about the format of callbacks with payment results. The general information about working with API see in the API Description section.

Request format

There are several things you must consider when using purchase requests in the Banks of Korea method:
  1. You perform purchase by sending the /v2/payment/banks/korea/sale request by using POST (HTTP) method. This is an online banking request group: /v2/payment/banks/{payment_method}/sale
  2. The following objects and parameters must be specified in the request:
    • Object general—general purchase information:
      • project_id—project identifier
      • payment_id—unique payout identifier
      • signature—signature created after you specify all the required parameters. For more information about signature generation, see Signature generation and verification
    • Object payment—purchase information:
      • amount—amount in the major currency units (without fractional part)
      • currency—purchase currency in ISO-4217 alpha-3 format
    • Object customer—customer information:
      • id—identifier unique within the project
      • ip_address—customer IP address
  3. It is recommended to specify the first and last names of the customer. If the request is missing the parameters, the list of parameters is sent in the clarification callback. For more details, see Additional payment information submission.

    It is recommended to specify the following parameters:

    • Object customer—customer information:
      • first_name—first name
      • last_name—last name
  4. The currency of a purchase can only be KRW.
  5. If required, you can also add any other additional parameters Gate supports.

Thus, a correct payment request through the Banks of Korea method must include project, payment IDs, signature, customer data, currency and amount of the purchase, as shown in the following example:

Figure: Purchase request example

{
    "general": {
      "project_id": 200,
      "payment_id": payment_id,
      "signature": "PJkV8ej\/UG0Di8hTng6JvC7vQsaC6tajQVVfBaNIipTv+AWo...=="
    },
    "payment": {
      "amount": 10000,
      "currency": "KRW"
      },
    "customer": {
      "id": "customer123",
      "ip_address": "248.1.1.1",
      "first_name": "Kon",
      "last_name": "Do"
    }
}

Formats of data for displaying the payment instructions

To display the payment instructions to the customer, you must receive and process a callback from the payment platform containing the payment data in the in the provider_extra_fields object, display the customer the payment instructions to the customer and, if needed, display the additional messages. The payment instructions and messages must be displayed in Korean language, according to the provider requirements (the texts in English are presented for reference purposes).

Table 2. Messages:
Message type Message text in Korean language Message text in English language
Payment instructions. Must be displayed during the time in which the customer must complete the payment. 입력하신 입금계좌로 실시간 계좌이체를 계속하십시오. 결제 완료될 때까지 창을 닫지 마시기 바랍니다. 4분 내에 시스템에서 입금확인이 가능합니다. 그후 자동으로 판매자의 홈페이지로 이동됩니다. Proceed with online banking transfer to designated account. Do not close this page till your transaction is successfully processed, it might take up to 4 minutes for us to confirm your payment. You will be automatically redirected to merchant WEB site afterwards.
Timeout message. Must be displayed to the customer after the time allotted for payment is up. 결제 완료될 때까지 창을 닫지 마시기 바랍니다. 4분 내에 시스템에서 입금확인이 가능합니다. 그후 자동으로 판매자의 홈페이지로 이동됩니다. Do not close this page till your transaction is successfully processed, it might take up to 4 minutes for us to process your payment. You will be automatically redirected to merchant WEB site afterwards.
Additional payment information submission message. Must be displayed to the customer when at least one of the parameters: first_name or last_name of the object customer was not specified in the request. The message reminds the customer that they must specify the first and last name exactly as they are registered in the bank. 은행 계좌의 소유주 명과 일치하는 성함을 정확히 넣어주셔야 합니다. You must enter your first and last name exactly the same as those registered in your bank.

The object provider_extra_fields contains the following parameters:

  • timeout—time (in seconds) during which the customer must complete the payment
  • merchant_bank—title of recipient bank
  • merchant_bank_account—account number of the recipient
  • merchant_bank_account_name—account title of the recipient

Figure: The callback fragment containing the payment data

    "provider_extra_fields": {
        "timeout": 60,
        "merchant_bank": "Kyungnam Bank 039",
        "merchant_bank_account": "1111-1111-1111",
        "merchant_bank_account_name": "TEST"
    }

Callback format

In the Banks of Korea method, the callbacks that deliver purchase results use the standard format described in Callbacks.

The following is the example of a callback with the information about successful 10,000 KRW purchase made by the 21 customer in the 1840 project.

Figure: Example of a succeed purchase callback

{
        "project_id": 1840,
        "payment": {
            "id": "1234567890_0007",
            "type": "purchase",
            "status": "success",
            "date": "2020-04-01T11:18:58+0000",
            "method": "Korean banks",
            "sum": {
                "amount": 10000,
                "currency": "KRW"
            },
            "description": "HPPay sale transaction"
        },
        "customer": {
            "id": "21"
        }
        "operation": {
            "id": 39,
            "type": "sale",
            "status": "success",
            "date": "2020-04-01T11:18:58+0000",
            "created_date": "2020-04-01T11:18:50+0000",
            "request_id": "f5e71b1b5b243722c576bc45634787d85ad416ef87c1e-00000001",
            "sum_initial": {
                "amount": 10000,
                "currency": "KRW"
            },
            "sum_converted": {
                "amount": 10000,
                "currency": "KRW"
            },
            "code": "0",
            "message": "Success",
            "provider": {
                "id": 1995,
                "payment_id": "",
                "auth_code": ""
            }
        },
        "signature": "rxcZU0s0GQuiTI1MSA5efBzR...PdmU3uAKwJNZfQbxu9Itqp5sIx+cA=="
    }

The following is the example of a callback for a declined purchase.

Figure: Example of a declined purchase callback

{
        "project_id": 1840,
        "payment": {
            "id": "1234567890_0008",
            "type": "purchase",
            "status": "decline",
            "date": "2020-04-01T11:17:58+0000",
            "method": "Korean banks",
            "sum": {
                "amount": 10000,
                "currency": "KRW"
            },
            "description": "HPPay sale transaction"
        },
        "customer": {
            "id": "21"
        }
        "operation": {
            "id": 39,
            "type": "sale",
            "status": "decline",
            "date": "2020-04-01T11:18:58+0000",
            "created_date": "2020-04-01T11:18:50+0000",
            "request_id": "f5e71b1b5b243722c576bc45634787d85ad416ef87c1e-00000002",
            "sum_initial": {
                "amount": 10000,
                "currency": "KRW"
            },
            "sum_converted": {
                "amount": 10000,
                "currency": "KRW"
            },
            "code": "20000",
            "message": "General decline",
            "provider": {
                "id": 1995,
                "payment_id": "",
                "auth_code": ""
            }
        },
        "signature": "rxcZU0s0GQuiTI1MSA5efBzR...PdmU3uAKwJNZfQbwqe4Itqp5sIx+cA=="
    }

Related topics

The following topics might be useful when implementing payments through Gate:

Payouts by using Gate

General information

To perform a payout through the Banks of Korea method, merchant's web service sends a request with all the required parameters and signature to ECommPay URL, and receives a callback with the payment result. The full sequence of the payout process is provided below.



Figure: Payout sequence by using Gate

  1. A customer orders a payout through one of the supported banks from Banks of Korea group.
  2. Merchant's web service sends the payout request for processing the payout by using Gate to the appropriate ECommPay URL.
  3. Gate redirects the request to the ECommPay payment platform.
  4. The payment platform performs all the necessary check and processes the request.
  5. The reply with the request processing results is sent to the merchant's web service. For more information, see Response format.
  6. The payment platform redirects the payout request to the Banks of Korea service.
  7. The payout is processed on the bank side.
  8. Banks of Korea sends the result notification to the payment platform.
  9. The payment platform sends a callback with the payment result to the web service.
  10. The customer receives the payout result from the web service.

The sections that follow discuss in more details the request format and the Gate parameters to use in the Banks of Korea payment method and provide the information on the format of callbacks with payout results.

Request format

There are several things you must consider when using payout requests in the Banks of Korea method:
  1. You perform payouts by sending the /v2/payment/banks/korea/payout request by using POST (HTTP) method. This is an online banking request group: /v2/payment/banks/{payment_method}/payout
  2. The following objects and parameters must be specified in any request:
    • Object general—general payout information:
      • project_id—project identifier
      • payment_id—unique payout identifier
      • signature—signature created after you specify all the required parameters. For more information about signature generation, see Signature generation and verification
    • Object customer—customer information:
      • id—identifier
      • first_name—customer first name
      • last_name—customer last name
      • email—email address
      • ip_address—customer IP address
    • Object account—customer account information:
      • number—customer account number
      • customer_name—bank account holder's name
      • bank_id—bank identifier
    • Object payment—payout information:
      • amount—amount in the major currency units (without fractional part)
      • currency—payout currency in the ISO-4217 alpha-3 format.
  3. The currency of payout can only be KRW.
  4. If required, you can also add any other additional parameters that are supported by Gate .

Thus, a correct payout request in the Banks of Korea method must include project, payment, and bank IDs, customer data, account number (for crediting) and its holder name, currency and amount of the payout, as shown in the following example:

Figure: Payout request example

{
    "general": {
        "project_id": 200,
        "payment_id": payment_id,
        "signature": "PJkV8ej\/UG0Di8hTng6JvC7vQsaC6tajQVVLhNN5e7aRfB...=="
    },
    "payment": {
      "amount": 10000,
      "currency": "KRW"
      },
    "customer": {
      "id":"100",
      "ip_address": "248.1.1.1",
      "first_name": "Kon",
      "last_name": "Do",
      "email": "do@mail.com"
    },
    "account":{
      "bank_id": 140,
      "customer_name": "Do",
      "number": "950-001413-01-010"
    }
}

Callback format

In the Banks of Korea method, the callbacks that deliver payout results use the standard format described in Callbacks.

The following is the example of a callback with the information about successful 10,000 KRW payout made to account 950-001413-01-010 of the 100 customer in the 200 project.

Figure: Example of a successful payout callback

 "project_id": 200,
        "payment": {
            "id": "TEST_22153483503277312",
            "type": "payout",
            "status": "success",
            "date": "2019-10-17T10:10:06+0000",
            "method": "Korean banks",
            "sum": {
                "amount": 10000,
                "currency": "KRW"
            },
            "description": ""
        },
        "account": {
            "number": "950-001413-01-010"
        },
        "customer": {
            "id": "100"
        },
        "operation": {
            "id": 6042000008706,
            "type": "payout",
            "status": "success",
            "date": "2019-10-17T10:10:06+0000",
            "created_date": "2019-10-17T09:55:00+0000",
            "request_id": "00006043",
            "sum_initial": {
                "amount": 10000,
                "currency": "KRW"
            },
            "sum_converted": {
                "amount": 10000,
                "currency": "KRW"
            },
            "code": "0",
            "message": "Success",
            "provider": {
                "id": 1481,
                "payment_id": "1571306102456624",
                "auth_code": "",
                "date": "2019-10-17T09:55:02+0000"
            }
        },
        "signature": "rZ06hEPGZMNzAVcnymiweQHzrdmffUHuQXShiuWKPJ...=="
    }

The following is the example of a callback for a payout rejected due to minimum amount limit exceeding.

Figure: Example of a declined payout callback

{
          "project_id": 200,
        "payment": {
            "id": "Test_8998465_001",
            "type": "payout",
            "status": "decline",
            "date": "2019-10-21T11:38:58+0000",
            "method": "Korean banks",
            "sum": {
                "amount": 1000,
                "currency": "KRW"
            },
            "description": ""
        },
        "account": {
            "number": "950-001413-01-010"
        },
        "customer": {
            "id": "123"
        },
        "operation": {
            "id": 1167000009526,
            "type": "payout",
            "status": "decline",
            "date": "2019-10-21T11:38:58+0000",
            "created_date": "2019-10-21T11:07:15+0000",
            "request_id": "00001168",
            "sum_initial": {
                "amount": 1000,
                "currency": "KRW"
            },
            "sum_converted": {
                "amount": 1000,
                "currency": "KRW"
            },
            "code": "20000",
            "message": "General decline",
            "provider": {
                "id": 1481,
                "payment_id": "1571656037176657",
                "auth_code": "",
                "date": "2019-10-21T11:07:17+0000"
            }
        },
        "signature": "lIsx+2VgxYSCQI89R8aIIcBN14p9xkpwbuaHkNfbDhxa16...=="
    }

Related topics

The following topics might be useful when implementing payments through Gate:

Payouts by using Dashboard (Old Dashboard)

To make a payout through Dashboard (Old Dashboard), the merchant sends a request, and receives a notification with the request processing result. There are two ways to initiate payouts through Dashboard (Old Dashboard):
  • as a single payout—in this case, you must specify the currency and amount for a payout available for this method, and fill in all fields required on the Dashboard (Old Dashboard) interface in accordance with the selected payment method
  • as a part of a mass payment—in this case, all parameters are specified in a CSV file in accordance with the requirements in the Payouts by using Gate section (except for the signature)

Information about performed payouts is displayed in the Payments section of Dashboard (Old Dashboard).

More detailed information on the payout processing by using Dashboard (Old Dashboard) is provided in the Bulk payments section.

Analysis of payments results

As with other payment methods ECommPay offers, when using the Banks of Korea method, you have several options to analyse the information about payments and operations performed by using the method—alone or in conjunction with other methods.

You can load and analyse all the necessary information in Dashboard, for instance you can use the analytic panels on the Analytics tab to this end.

Also, you can export the information for further analysis by using third party analytical tools. The following options are available:

  • Dashboard allows you to download reports in CSV and XLS formats—by using the tools on the Payments tab. You can perform export as a one-time download to your local computer or have payment data regularly exported and delivered to email addresses you specify.
  • Data API allows you to have payment information exported in JSON format and delivered to a URL you specify. The payment information is exported by using the /operations/get queries.

If you have any further questions regarding payment data analysis, contact ECommPay technical support.