# Configuring BLIK

If you're using[ DigitalRiver.js with Elements](https://docs.digitalriver.com/commerce-api/payments/payments-solutions/digitalriver.js), you can create a [BLIK ](https://docs.digitalriver.com/commerce-api/payments/supported-payment-methods/blik)payment method for your app or website in four easy steps:

* [Step 1: Build a BLIK Source Request object](#step-1-build-a-blik-source-request-details-object)
* [Step 2: Create a BLIK source using DigitalRiver.js](#step-2-create-a-blik-source-using-digitalriver.js)
* [Step 3: Authorize the BLIK source](#step-3-authorize-the-blik-source)
* [Step 4: Use the authorized source](#step-4-use-the-authorized-source)

## Step 1: Build a BLIK Source Request object

Build the BLIK Source Request Details object. The BLIK Source Request object requires the following fields.

| Field       | Value                                                                                                                                                                                  |
| ----------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `type`      | `blik`                                                                                                                                                                                 |
| `sessionId` | The payment session identifier.                                                                                                                                                        |
| `owner`     | An [Owner object](https://docs.digitalriver.com/commerce-api/payments/payments-solutions/digitalriver.js/common-payment-objects#owner-object).                                         |
| `blik`      | An [Online Banking Source Details object](https://docs.digitalriver.com/commerce-api/payments/payments-solutions/digitalriver.js/online-banking#online-banking-source-request-object). |

### BLIK Source Details object

The BLIK object requires the following fields.

```javascript
{
  "returnUrl":"https://js-test.digitalriver.com/v1/1.20220329.1453/components/redirect-receiver/redirect-receiver.html?controllerId=controller-76ef3046-888c-4073-90ad-1b5d61a8af08&componentId=redirect-receiver-1757f835-c21b-4f4e-b208-92adc5c30573&action=return",
  "cancelUrl":"https://js-test.digitalriver.com/v1/1.20220329.1453/components/redirect-receiver/redirect-receiver.html?controllerId=controller-76ef3046-888c-4073-90ad-1b5d61a8af08&componentId=redirect-receiver-1757f835-c21b-4f4e-b208-92adc5c30573&action=cancel",
  "shipping":{
    "address":{
      "line1":"10380 Bren Rd W",
      "line2":"Suite 180",
      "city":"Minnetonka",
      "state":"MN",
      "postalCode":"55344",
      "country":"US"
    },
    "email":"example@example.com",
    "phoneNumber":"9525551212",
    "recipient":"Jane Doe"
  }
}
```

| Field       | Required/Optional | Description                                                                                                                                 |
| ----------- | ----------------- | ------------------------------------------------------------------------------------------------------------------------------------------- |
| `cancelUrl` | Required          | If you choose to use the full redirect flow, this is where your customer will be redirected to after cancelling within the BLIK experience. |
| `returnUrl` | Required          | If you choose to use the full redirect, this is where you will redirect your customer to after authorization within the BLIK experience.    |
| `shipping`  | Optonal           | If the order contains a physical product that requires a shipping address, include it here.                                                 |

## Step 2: Create a BLIK source using DigitalRiver.js

To create a BLIK payment source, use the DigitalRiver.js library to create and mount elements to the HTML container, or you can assemble the information and then send it using the standard calls in DigitalRiver.js.

{% hint style="info" %}
The `address` object must contain postal code and state/province data that [adheres to a standardized format](https://docs.digitalriver.com/commerce-api/shopper-apis/cart/creating-or-updating-a-cart/providing-address-information) using the `state` attribute. Note that the `state` attribute listed below corresponds to the `countrySubdivision` attribute used when providing address information. The payment session manages the correct field name on the backend.
{% endhint %}

```javascript
var sourceData = {
  "type":"blik",
  "sessionId":"ea03bf6f-84ef-4993-b1e7-b7d5ecf71d1f",
  "owner":{
    "firstName":"Jane",
    "lastName":"Doe",
    "email":"example@example.com",
    "phoneNumber":"9525551212",
    "address":{
      "line1":"10380 Bren Rd W",
      "line2":"Suite 180",
      "city":"Minnetonka",
      "state":"MN",
      "postalCode":"55344",
      "country":"US"
    }
  },
  "blik":{
    "returnUrl":"https://js-test.digitalriver.com/v1/1.20220329.1453/components/redirect-receiver/redirect-receiver.html?controllerId=controller-76ef3046-888c-4073-90ad-1b5d61a8af08&componentId=redirect-receiver-1757f835-c21b-4f4e-b208-92adc5c30573&action=return",
    "cancelUrl":"https://js-test.digitalriver.com/v1/1.20220329.1453/components/redirect-receiver/redirect-receiver.html?controllerId=controller-76ef3046-888c-4073-90ad-1b5d61a8af08&componentId=redirect-receiver-1757f835-c21b-4f4e-b208-92adc5c30573&action=cancel"
  }
}
 
 
digitalriver.createSource(sourceData).then(function(result) {
    if(result.error) {
        //handle error message
        var errorMessage = result.error.errors[0].message;
    } else {
        //send the source to the back end for processing
        var source = result.source;
    }
});
```

### BLIK source response example

{% tabs %}
{% tab title="JSON" %}

```javascript
{
  "clientId":"gc",
  "channelId":"drdod15",
  "liveMode":false,
  "id":"cd53c5da-cc8a-4bbe-a51b-89fba9e82503",
  "sessionId":"ea03bf6f-84ef-4993-b1e7-b7d5ecf71d1f",
  "clientSecret":"cd53c5da-cc8a-4bbe-a51b-89fba9e82503_9e6cbc1e-41bc-4018-8ed8-f35b39c0c0b6",
  "type":"blik",
  "reusable":false,
  "owner":{
    "firstName":"Jane",
    "lastName":"Doe",
    "email":"example@example.com",
    "phoneNumber":"9525551212",
    "address":{
      "line1":"10380 Bren Rd W",
      "line2":"Suite 180",
      "city":"Minnetonka",
      "state":"MN",
      "postalCode":"55344",
      "country":"US"
    }
  },
  "amount":"100.00",
  "currency":"USD",
  "state":"pending_redirect",
  "creationIp":"209.87.180.27",
  "createdTime":"2022-03-29T20:09:25.752Z",
  "updatedTime":"2022-03-29T20:09:25.752Z",
  "flow":"redirect",
  "redirect":{
    "redirectUrl":"https://api.digitalriver.com:443/payments/redirects/954cf456-aad3-4957-87ed-743ea4c9c102?apiKey=pk_sys_c2608001bba7477eae22808e1eb138db",
    "returnUrl":"https://js-test.digitalriver.com/v1/1.20220329.1453/components/redirect-receiver/redirect-receiver.html?controllerId=controller-98d77216-cd36-474c-8c74-18e8ba7f2282&componentId=redirect-receiver-1757f835-c21b-4f4e-b208-92adc5c30573&action=return",
    "offline":false
  },
  "language":"en",
  "blik":{
    
  }
}
```

{% endtab %}
{% endtabs %}

## Step 3: Authorize the BLIK source

When you create a BLIK source, the customer is required to authorize the charge through their payment provider. You can accomplish this by redirecting the customer to their payment provider.

### Redirecting the customer for BLIK authorization

Use the `redirectUrl` parameter in your `createSource` response to redirect your customer to the payment provider for authorization.

{% code overflow="wrap" %}

```javascript
window.location.href = sourceResponse.redirect.redirectUrl;
```

{% endcode %}

The payment provider will present the customer with the transaction details, and the customer can authorize or cancel the transaction. A successful authorization redirects the customer to the BLIK Return URL parameter you specified when you created the source.

Once authorized, the source state will change to `chargeable`.

```javascript
{
  "clientId":"gc",
  "channelId":"drdod15",
  "liveMode":false,
  "id":"cd53c5da-cc8a-4bbe-a51b-89fba9e82503",
  "sessionId":"ea03bf6f-84ef-4993-b1e7-b7d5ecf71d1f",
  "clientSecret":"cd53c5da-cc8a-4bbe-a51b-89fba9e82503_9e6cbc1e-41bc-4018-8ed8-f35b39c0c0b6",
  "type":"blik",
  "reusable":false,
  "owner":{
    "firstName":"Jane",
    "lastName":"Doe",
    "email":"example@example.com",
    "phoneNumber":"9525551212",
    "address":{
      "line1":"10380 Bren Rd W",
      "line2":"Suite 180",
      "city":"Minnetonka",
      "state":"MN",
      "postalCode":"55344",
      "country":"US"
    }
  },
  "amount":"100.00",
  "currency":"USD",
  "state":"chargeable",
  "creationIp":"209.87.180.27",
  "createdTime":"2022-03-29T20:09:25.752Z",
  "updatedTime":"2022-03-29T20:09:25.752Z",
  "flow":"redirect",
  "redirect":{
    "redirectUrl":"https://api.digitalriver.com:443/payments/redirects/954cf456-aad3-4957-87ed-743ea4c9c102?apiKey=pk_sys_c2608001bba7477eae22808e1eb138db",
    "returnUrl":"https://js-test.digitalriver.com/v1/1.20220329.1453/components/redirect-receiver/redirect-receiver.html?controllerId=controller-98d77216-cd36-474c-8c74-18e8ba7f2282&componentId=redirect-receiver-1757f835-c21b-4f4e-b208-92adc5c30573&action=return",
    "offline":false
  },
  "language":"en",
  "blik":{
    
  }
}
```

## Step 4: Use the authorized source

Once authorized, you can use the source by [attaching it to a cart](https://docs.digitalriver.com/commerce-api/sources#attaching-a-payment-method-to-an-order-or-cart).

{% tabs %}
{% tab title="POST /v1/shoppers/me/carts/active/apply-payment-method" %}

```javascript
{
  "paymentMethod": {
    "sourceId": "f1e89f7a-4857-4e0a-9c31-bdb70401fea0"
  }
}
```

{% endtab %}
{% endtabs %}

## Testing BLIK

See [Testing redirect payment methods](https://docs.digitalriver.com/commerce-api/testing-scenarios#testing-redirect-payment-methods) for testing instructions.


---

# 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://docs.digitalriver.com/commerce-api/payments/payments-solutions/digitalriver.js/payment-methods/configuring-blik.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.
