# One-Click Checkout

&#x20;This guide allows you to achieve a significant speedup of the checkout process by re-using the data a customer entered for a previous transaction/registration. It's based on one of these two guides:

* The [PrimeiroPay Tokenization Tutorial](https://primeiropay.docs.oppwa.com/widget-tokenisation)
* The [Server-to-Server Tokenization Tutorial](https://primeiropay.docs.oppwa.com/tokenisation)

After the customer account details are stored, as part of the initial transaction/registration, you will need to keep a record of the associated registration IDs (token) that you can then use in step 1 below.

### How it works

### 1. Prepare the checkout

NOTE: For demonstration purposes we have created a registration, which will be used in your one-click checkout, with id(s): 8ac7a4a0739e4f720173a048387d7a7c,8ac7a49f739e470f0173a048391e1c24. Following the guides above, you may add additional registrations options to the checkout.

First perform a server-to-server POST request to prepare the checkout, this should include the registration IDs of the customer as shown below.

The registration IDs should be sent in the `registrations[n].id` parameter, where n is a sequence number from zero, incrementing for each of the customer's registration IDs. For example, if the customer has two accounts on file, you would send `registrations[0].id = {first registration.id}` and `registrations[1].id = {second registration.id}`.

```
curl https://test.oppwa.com/v1/checkouts \
 -d "entityId=8a8294184e736012014e78a17a5615ac" \
 -d "amount=92.00" \
 -d "currency=EUR" \
 -d "paymentType=DB" \
 -d "registrations[0].id=8ac7a4a0739e4f720173a048387d7a7c" \
 -d "registrations[1].id=8ac7a49f739e470f0173a048391e1c24" \
 -d "createRegistration=true" \
 -H "Authorization: Bearer OGE4Mjk0MTg0ZTczNjAxMjAxNGU3OGExN2E2YTE1YjB8ZjJGRUtacXRCUA=="
```

Response:

```
{
  "result":{
    "code":"000.200.100",
    "description":"successfully created checkout"
  },
  "buildNumber":"982467e36fd8bc9e74f536ba375c5d0be4fe48eb@2020-07-30 03:42:32 +0000",
  "timestamp":"2020-07-30 15:23:37+0000",
  "ndc":"B20EFF3A508805D585492DDFFE381BCC.uat01-vm-tx03",
  "id":"B20EFF3A508805D585492DDFFE381BCC.uat01-vm-tx03"
}
```

### 2. Create the payment form

Then, to show the payment form you just need to add the following lines of HTML/Javascript to your page and populating the following variables

* The checkout's `id` that you got in the response from step 1

  ```
  <script src="https://test.oppwa.com/v1/paymentWidgets.js?checkoutId={checkoutId}"></script>
  ```
* The `shopperResultUrl`, which is the page on your site where the customer should be redirected to after the payment is processed and the brands that will be available.

  ```
  <form action="{shopperResultUrl}" class="paymentWidgets">VISA MASTER AMEX</form>
  ```

When Primeiro Pay builds up the payment form it automatically fetches the registrations data from the server and displays the pre-filled widgets to the shopper.

Require CVVShow initial payment from

* html

```
<form action="https://primeiropay.docs.oppwa.com/tutorials/integration-guide/one-click#" class="paymentWidgets">VISA MASTER AMEX</form>
```

* css

```
body {background-color:#f6f6f5;}
```

* js

```
var wpwlOptions = { registrations: { requireCvv: false, hideInitialPaymentForms: true } }
```

* result

![](https://1991843971-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MGcOwWYO42hhJYXrYx1%2F-MGjmO_bSsf-ecWdA1dv%2F-MGjnuePcsxwd0F6MRC3%2Fimage.png?alt=media\&token=9cd24bda-f376-4eaf-99bb-903d7ebcabea)

### 3. Get the payment status <a href="#getstatus" id="getstatus"></a>

As usual, once the payment has been processed, the customer is redirected to your `shopperResultUrl` along with a GET parameter `resourcePath`.

IMPORTANT: The baseUrl must end in a "/", e.g. "<https://test.oppwa.com/>".

Then, to get the status of the payment, you should make a GET request to the `baseUrl + resourcePath`, including your authentication parameters.

Example for a resourcePath:

```
resourcePath=/v1/checkouts/{checkoutId}/payment
```

<https://test.oppwa.com/v1/checkouts//payment>

```
curl -G https://test.oppwa.com/v1/checkouts/{id}/payment \
 -d "entityId=8a8294184e736012014e78a17a5615ac" \
 -H "Authorization: Bearer OGE4Mjk0MTg0ZTczNjAxMjAxNGU3OGExN2E2YTE1YjB8ZjJGRUtacXRCUA=="
```

We recommend that you verify the following fields from the Payment Status response, by comparing the returned values with expected:

* ID(s)
* Amount
* Currency
* Brand
* Type
