# Danal

### 1. Configure Danal PG settings

Refer to the [**Danal settings**](/docs-en/ready/2.-pg/payment-gateway-settings/undefined-2.md) page to configure the PG settings.

![](/files/MCBseKbs412wO1SnlfaH)

### 2. Request payment

To open the Danal TPay payment window, call [JavaScript SDK](/docs-en/sdk/javascript-sdk.md) IMP.**request\_pay**(param, callback).

In both PC and mobile browsers, <mark style="color:red;">**callback**</mark> is invoked after calling `IMP.request_pay(param, callback)`.

{% tabs %}
{% tab title="Authenticated payment request" %}
{% code title="Javascript SDK" %}

```javascript
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... *//
});
```

{% endcode %}

####

#### 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>

<summary>Payment method codes</summary>

* `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)
  {% endhint %}

{% embed url="<https://codepen.io/chaiport/pen/jOZZgGG>" %}
{% endtab %}

{% tab title="Non-authenticated payment request" %}
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.)
  {% endhint %}

{% code title="Javascript SDK" %}

```javascript
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');
      }
});
```

{% endcode %}

#### 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>](/docs-en/api/api/api.md) with the `customer_uid` as follows:

{% code 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
```

{% endcode %}
{% endtab %}
{% endtabs %}

### 3. Additional functions

{% tabs %}
{% tab title="Installment setting" %}
{% code title="javascript" %}

```javascript
display: {
    card_quota: [6]  // Display up to 6 months installment plans
}
```

{% endcode %}

**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**.
{% endhint %}

{% embed url="<https://codepen.io/chaiport/pen/mdXXNXV>" %}
Example of allowing up to <mark style="color:red;">**3 months**</mark>\*\* installment plans\*\*
{% endembed %}
{% endtab %}

{% tab title="Direct credit card module call" %}
{% code title="javascript" %}

```javascript
card: {
     direct: {
        code: "367",
        quota: 3,
        usePoint : “Y”
    }
}
```

{% endcode %}

**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.
  {% endhint %}
  {% endtab %}

{% tab title="Enable specific credit cards" %}
{% code title="javascript" %}

```javascript
card : {
    detail : [
        {card_code:"*", enabled:false},     // Disable all credit cards
        {card_code:'366', enabled:true}     // Enable specific credit card
    ]
}
```

{% endcode %}

**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>

{% embed url="<https://codepen.io/chaiport/pen/WNMMVJZ>" %}
Example of showing only <mark style="color:red;">**Shinhan Card**</mark> in the payment window
{% endembed %}
{% endtab %}
{% endtabs %}


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://portone.gitbook.io/docs-en/payment-integration-by-pg/payment-gateways/danal.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
