# Purchase management
You can create a purchase link, check a purchase status or trigger a capture via API.
# Purchase creation
Will create a purchase with specified informations, a link for this purchase will be provided.
Authentication
For security reasons, signature is mandatory to use this endpoint (Authentication)
# Endpoint
POST /api/purchase_link/?signature=<signature>
All the parameters must be sent within the signature with the following structure:
Name | Type | Details |
---|---|---|
data | object | See Signature parameters |
purchase_link_settings | object | See Signature parameters |
# Parameters
Object parameters
The data
is used to create the purchase, the object contains the same parameters as for a new purchase. See classic signature).
The purchase_link_settings
object parameter should be like this:
Name | Type | Details |
---|---|---|
send_email | boolean | Wether the link should be sent by email. |
email | string | The email where the link should be sent. |
send_sms | boolean | Wether the link should be sent by sms. |
phone_number | string | The phone number where the link should be sent. |
With email
"purchase_link_settings": {
"email": "[email protected]",
"send_email": true,
}
With sms
"purchase_link_settings": {
"phone_number": "+33600000000",
"send_sms": true
}
With email and sms
"purchase_link_settings": {
"email": "[email protected]",
"send_email": true,
"phone_number": "+33600000000",
"send_sms": true
}
# Request example
signature = jwt.encode({
"data": {
"merchantUid": "merchantUid"
"title": "title",
"reference": "reference",
"amountCents": 2000,
"email": "[email protected]",
"language": "fr_FR",
...
},
"purchase_link_settings": {
"email": "[email protected]",
"send_email": True,
}
},
"<your-secret>",
algorithm="HS256",
)
print(f"/api/purchase_link/?signature={signature}")
/api/purchase_link/?signature=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJkYXRhIjp7InRpdGxlIjoidGVzdF9hcGlfcHVyY2hhc2UiLCJyZWZlcmVuY2UiOiJ0ZXN0X3JlZmVyZW5jZSIsImFtb3VudENlbnRzIjoyMDAwLCJlbWFpbCI6ImVtYWlsQGRvbWFpbi5jb20ifSwicHVyY2hhc2VfbGlua19zZXR0aW5ncyI6eyJlbWFpbCI6ImVtYWlsQGRvbWFpbi5jb20iLCJsYW5ndWFnZSI6ImZyX0ZSIiwic2VuZF9lbWFpbCI6dHJ1ZX19.Vs-AdDrfTYa8muNbFnGexi1stCGzDb8P19IV4P0eeFg
# Responses
Name | Type | Details |
---|---|---|
purchase_uid | string | The purchase unique identifier. |
url | string | The url that allows the payment and the validation of the purchase. |
email_has_been_sent | boolean | Wether the link was successfully sent by email. |
sms_has_been_sent | boolean | Wether the link was successfully sent by sms. |
# Response examples
With email, Status 200
{
"url": "s.sofin.co/s/ndm3Ypco",
"purchase_uid": "pur_xxxxxxxx-xxx-xxxx-xxxx-xxxxxxxxxxxx",
"email_has_been_sent": true
}
Sent by email and sms, Status 200
{
"url": "s.sofin.co/s/ndm3Ypco",
"purchase_uid": "pur_xxxxxxxx-xxx-xxxx-xxxx-xxxxxxxxxxxx",
"email_has_been_sent": true,
"sms_has_been_sent": true
}
# Purchase status
The status of any existing purchase can be checked using a http call.
Authentication
For security reasons, signature is mandatory to use this endpoint (Authentication)
# Endpoint
GET /api/purchase_status/?signature=<signature>
# Parameters
Parameters must be sent within the signature.
All the fields should be in a data
object.
The data
field with the following structure:
Name | Type | Details |
---|---|---|
merchantUid | string | Your merchant unique identifier |
purchaseUid | string | Purchase unique identifier |
reference | string | Purchase unique reference |
To identify the purchase, use either the Pledg identifier purchaseUid
or the reference
that you provided to us when creating the purchase.
# Request example
signature = jwt.encode({
"data": {
"purchaseUid": "pur_xxxxxxxx-xxx-xxxx-xxxx-xxxxxxxxxxxx",
"merchantUid": "mer_xxxxxxxx-xxx-xxxx-xxxx-xxxxxxxxxxxx"}
},
"<your-secret>",
algorithm="HS256",
)
print(f"/api/purchase_status/?signature={signature}")
/api/purchase_status/?signature=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJwdXJjaGFzZVVpZCI6InB1cl94eHh4eHh4eC14eHgteHh4eC14eHh4LXh4eHh4eHh4eHh4eCIsIm1lcmNoYW50VWlkIjoibWVyX3h4eHh4eHh4LXh4eC14eHh4LXh4eHgteHh4eHh4eHh4eHh4In0.-2Y64T0PrVIOD9P6FCwB5l9Ql-Nx3sGXxvta-lh0xXA
# Response
Name | Type | Details |
---|---|---|
purchase_uid | string | The purchase unique identifier. |
status | string | The current purchase status (among OK , PENDING , FAILED ). |
outstanding_amount_cents | integer | Remaining amount owed by the buyer. Having an outstanding balance doesn't mean it's past due. |
past_due_num_of_days | integer | The number of days past due (past due refers to a bill not paid by its due date) |
# Response example
Status 200
{
"purchase_uid": "pur_xxxxxxxx-xxx-xxxx-xxxx-xxxxxxxxxxxx",
"status": "OK",
"outstanding_amount_cents": 10500,
"past_due_num_of_days": 0,
}
# Trigger capture
For deferred payment
solutions, depending on your merchant configuration, due date can be advanced.
Authentication
For security reasons, signature is mandatory to use this endpoint (Authentication)
# Endpoint
POST /api/trigger_capture/?signature=<signature>
# Parameters
The signature parameter is the same as the example above.
# Response
- 200 if succeed.
- 400 if the signature is invalid
- 400 if merchantUid or (purchaseUid and reference) are missing.
- 400 if the purchase is not in a valid state.
- 404 if merchantUid or purchaseUid or reference are not found.