Reusing the payment source
How to save the payment source into the customer wallet so that it can be reused
You want to save a Klarna payment source already used to complete a purchase into the customer wallet and eventually reuse it for future payments.
- 1.To save the payment source into the customer wallet you need to ensure that the
auth_token
is already set, then send aPATCH
request to the/api/orders/:id
endpoint, setting the_save_payment_source_to_customer_wallet
attribute totrue
. - 2.To reuse the stored payment source you need to associate it with the related order. To do that send a
PATCH
request to the/api/orders/:id
endpoint, using the ID of the selected customer payment source to properly set the_customer_payment_source_id
attribute.
To get a list of the customer's available payment sources, include the
available_customer_payment_sources
relationship in the request (1).Request
Response
The following request save the Klarna payment source to the customer wallet for the order identified by the "qaMAhZkZvd" ID:
curl -g -X PATCH \
'http://yourdomain.commercelayer.io/api/orders/qaMAhZkZvd?include=available_customer_payment_sources' \
-H 'Accept: application/vnd.api+json' \
-H 'Authorization: Bearer your-access-token' \
-H 'Content-Type: application/vnd.api+json' \
-d '{
"data": {
"type": "orders",
"id": "qaMAhZkZvd",
"attributes": {
"_save_payment_source_to_customer_wallet": true
}
}
}'
On success, the API responds with a
200 OK
status code, returning the updated order object:{
"data": {
"id": "qaMAhZkZvd",
"type": "orders",
"links": {
"self": "https://yourdomain.commercelayer.io/api/orders/qaMAhZkZvd"
},
"attributes": {...},
"relationships": {
"market": {
"links": {...}
},
"customer": {
"links": {...}
},
"shipping_address": {
"links": {...}
},
"billing_address": {
"links": {...}
},
"available_payment_methods": {
"links": {...}
},
"available_customer_payment_sources": {
"links": {...},
"data": [
{
"type": "customer_payment_sources",
"id": "QgDXpwsqDx"
}
]
},
"payment_method": {
"links": {...}
},
"payment_source": {
"links": {...}
},
"line_items": {
"links": {...}
},
"shipments": {
"links": {...}
}
},
"meta": {
"mode": "test"
}
},
"included": [
{
"id": "QgDXpwsqDx",
"type": "customer_payment_sources",
"links": {
"self": "https://yourdomain.commercelayer.io/api/customer_payment_sources/QgDXpwsqDx"
},
"attributes": {
"customer_token": "1",
"name": "XXXX-XXXX-XXXX-1111",
"payment_source_token": "7RxGd2HUyY1Yc2Tghw5N453piFs",
"created_at": "2018-01-01T12:00:00.000Z",
"updated_at": "2018-01-01T12:00:00.000Z",
"reference": null,
"metadata": {}
},
"relationships": {
"customer": {
"links": {...}
},
"payment_source": {
"links": {...}
}
},
"meta": {
"mode": "test"
}
}
]
}
Request
Response
The following request associates the payment source saved into the customer wallet and identified by the ID "QgDXpwsqDx" with the order identified by the "qaMAhZkZvd" ID:
curl -g -X PATCH \
'http://yourdomain.commercelayer.io/api/orders/qaMAhZkZvd' \
-H 'Accept: application/vnd.api+json' \
-H 'Authorization: Bearer your-access-token' \
-H 'Content-Type: application/vnd.api+json' \
-d '{
"data": {
"type": "orders",
"id": "qaMAhZkZvd",
"attributes": {
"_customer_payment_source_id": "QgDXpwsqDx"
}
}
}'
On success, the API responds with a
200 OK
status code, returning the updated order object:{
"data": {
"id": "qaMAhZkZvd",
"type": "orders",
"links": {
"self": "https://yourdomain.commercelayer.io/api/orders/qaMAhZkZvd"
},
"attributes": {...},
"relationships": {
"market": {
"links": {...}
},
"customer": {
"links": {...}
},
"shipping_address": {
"links": {...}
},
"billing_address": {
"links": {...}
},
"available_payment_methods": {
"links": {...}
},
"available_customer_payment_sources": {
"links": {...}
},
"payment_method": {
"links": {...}
},
"payment_source": {
"links": {...}
},
"line_items": {
"links": {...}
},
"shipments": {
"links": {...}
}
},
"meta": {
"mode": "test"
}
}
}
See our documentation if you need more information on how to update an order or deal with customer payment sources.
Last modified 1yr ago