Skip to content

Latest commit

 

History

History
258 lines (192 loc) · 8.15 KB

File metadata and controls

258 lines (192 loc) · 8.15 KB
title description
Danal
Danal payment window integration guide

import Codepen from "/components/gitbook/Codepen.astro"; import Details from "/components/gitbook/Details.astro"; import Tab from "/components/gitbook/tabs/Tab.astro"; import Tabs from "/components/gitbook/tabs/Tabs.astro"; import Hint from "~/components/Hint.astro";

1. Configure Danal PG settings

Refer to the Danal settings page to configure the PG settings.

2. Request payment

To open the Danal TPay payment window, call JavaScript SDK IMP.request_pay(param, callback).

In both PC and mobile browsers, callback is invoked after calling IMP.request_pay(param, callback).

```ts title="Javascript SDK" IMP.request_pay( { pg: "danal_tpay", pay_method: "card", merchant_uid: "{Merchant created Order ID}", // Example: order_no_0001 name: "Order name: Test payment request", amount: 14000, buyer_email: "iamport@siot.do", buyer_name: "John Doe", buyer_tel: "010-1234-5678", buyer_addr: "Shinsa-dong, Gangnam-gu, Seoul", buyer_postcode: "123-456", }, function (rsp) { // callback logic //* ...Omitted... *// }, ); ```
### Key parameter description

**`pg`** <mark style="color:red;"> **\*** </mark> <mark style="color:green;"> **string** </mark>

**PG code**

- If not specified and this is the only PG setting that exists, `default PG` is automatically set.
- If there are multiple PG settings, set to **`danal_tpay`**.

**`pay_method`** <mark style="color:red;"> **\*** </mark> <mark style="color:green;"> **string** </mark>

**Payment method code**

<Details>
  <p slot="summary">Payment method codes</p>

  - `card` (credit card)
  - `trans`(instant account transfer)
  - `vbank`(virtual account)
  - `cultureland`(Cultureland)
  - `happymoney`(Happy Money)
  - `booknlife` (Book n culture gift card)
</Details>

**`merchant_uid`** <mark style="color:red;"> **\*** </mark> <mark style="color:green;"> **string** </mark>

**Order ID**

Must be unique for each request.

**`buyer_tel`** <mark style="color:red;"> **\*** </mark><mark style="color:green;"> **`string`** </mark>

**Customer phone number**

Danal payment window may throw an error if omitted

**`amount`** <mark style="color:red;"> **\*** </mark> <mark style="color:purple;"> **integer** </mark>

**Payment amount**

Must be an integer (not string)

<Hint style="info">
  #### Virtual account payment requirement

  - **`biz_num`**: 10-digit business registration number (required)
</Hint>

<Codepen user="chaiport" slug="jOZZgGG" />
To open non-authenticated payment window, specify the **customer\_uid** parameter.
<Hint style="danger">
  #### **amount**

  - If requesting **both billing key and initial payment**, specify the payment amount.

  - If only requesting for billing key, set to <mark style="color:red;">**0**</mark>.\
    (if amount is set to 0, Danal executes a test payment of 10 won which is automatically cancelled after 30 minutes.)
</Hint>

```ts title="Javascript SDK"
IMP.request_pay(
  {
    pg: "danal_tpay",
    pay_method: "card", // only 'card' supported.
    merchant_uid: "{Merchant created Order ID}", // Example: issue_billingkey_monthly_0001
    name: "Order name: Billing key request test",
    amount: 0, // For display purpose only (set actual amount to also request payment approval).
    customer_uid: "{Unique ID for the card (billing key)}", // Required (Example: gildong_0001_1234)
    buyer_email: "johndoe@gmail.com",
    buyer_name: "John Doe",
    buyer_tel: "02-1234-1234",
    buyer_addr: "Samseong-dong, Gangnam-gu, Seoul",
    period: {
      from: "20200101", //YYYYMMDD
      to: "20201231", //YYYYMMDD
    },
  },
  function (rsp) {
    if (rsp.success) {
      alert("Success");
    } else {
      alert("Failed");
    }
  },
);
```

### Key parameter description

**`pg`** <mark style="color:red;">**\***</mark> <mark style="color:green;">**string**</mark>

**PG code**

- If not specified and this is the only PG setting that exists, `default PG` is automatically set.
- If there are multiple PG settings, set to **`danal_tpay`**.

**`customer_uid`** <mark style="color:red;">**\***</mark> <mark style="color:green;">**string**</mark>

**Credit card billing key**

Billing key to be mapped 1:1 with the user-entered credit card information.

**`amount`** <mark style="color:red;">**\***</mark> <mark style="color:purple;">**Integer**</mark>

**Payment amount**

0: only billing key, **> 0: billing key + initial payment**

**`period`` `**<mark style="color:orange;">**`array`**</mark>

Product subscription payment for subscription payment. The date is displayed on the Danal payment window.

**`from`**<mark style="color:orange;">**`: YYYYMMDD`**</mark>

**`to`**<mark style="color:orange;">**`: YYYYMMDD`**</mark>\\

### Request payment with billing key (customer\_uid)

After successfully getting the billing key,
the billing key is **stored on the i'mport server** mapped 1:1 with the specified `customer_uid`.
For security reasons, the server cannot directly access the billing key.
Subsequent payments can be requested by calling
the [<mark style="color:blue;">**non-authenticated payment request REST API**</mark>](../../api/api/api)
with the `customer_uid` as follows:

```sh title="sever-side"
curl -H "Content-Type: application/json" \
     -X POST -d '{"customer_uid":"your-customer-unique-id", "merchant_uid":"order_id_8237352", "amount":3000}' \
     https://api.iamport.kr/subscribe/payments/again
```

3. Additional functions

```json title="javascript" { "display": { "card_quota": [6] // Display up to 6 months installment plans } } ```
**Parameters**

- **card\_quota :**
  - `[]`: Only immediate pay
  - `3,6`: immediate, 3, 6 month installment plans

<Hint style="info">
  Installment plan option is available only for **KRW 50,000 or more**.
</Hint>

<Codepen user="chaiport" slug="mdXXNXV" caption="Example of allowing up to 3 months installment plans" />
```json title="javascript" { "card": { "direct": { "code": "367", "quota": 3, "usePoint": "Y" } } } ```
**Parameters**

- **code**: [<mark style="color:red;">**Credit card code**</mark>](https://chaifinance.notion.site/53589280bbc94fab938d93257d452216?v=eb405baf52134b3f90d438e3bf763630) (**string**)
- **quota**: Installment plan. For immediate, set to 0. (**integer**)
- **usePoint**: Option to use points (post applied)

<Hint style="danger">
  **Danal setup required**

  - Direct module call requires pre-setup by Danal.
</Hint>
```json title="javascript" { "card": { "detail": [ { "card_code": "*", "enabled": false }, // Disable all credit cards { "card_code": "366", "enabled": true }, // Enable specific credit card ] } } ```
**Parameters**

- **card\_code:** [<mark style="color:red;">**Credit card code**</mark>](https://chaifinance.notion.site/53589280bbc94fab938d93257d452216?v=eb405baf52134b3f90d438e3bf763630)
  (<mark style="color:green;">**string)**</mark>

- **enabled:** Option to enable the credit card (<mark style="color:orange;">**boolean)**</mark>

<Codepen user="chaiport" slug="WNMMVJZ" caption="Example of showing only Shinhan Card in the payment window" />