Authorize and Capture Transactions UK
Apprendre le flux d'autorisation et de capture.
Authorize Transaction
The Authorize resource endpoint creates a loan and reserves the funds. When you authorize, Affirm will generate a unique id
that you’ll use to reference the transaction moving forward. You must authorize a transaction to fully create it.
Authorize Transaction Warning
If you do not authorize a transaction, it will not be considered active. This means the user will not see the loan, and you will not be able to capture the funds. This means the user will not see the loan, and you will not be able to capture the funds. For this reason, you should authorize the loan as soon as you receive a
checkout_token
.
To authorize a transaction you'll need the checkout_token
returned from your client integration to pass it into the transaction_id
parameter.
curl https://api.global.sandbox.affirm.com/api/v1/transactions
-X POST
-u "{public_api_key}:{private_api_key}"
-H "Content-Type: application/json"
-H "country-code: GBR"
-d '{"transaction_id": "{checkout_token}","order_id": "{order_id}"}'
$endpoint = "https://sandbox.affirm.com/api/v1/transactions";
$data = '{"transaction_id": "' . $_POST["transactions_id"] . '"}';
try {
$response = callAffirm($endpoint, $data);
// Handle the response
} catch (Exception $e) {
// Handle the exception
}
using(var httpClient = new HttpClient()) {
using(var request = new HttpRequestMessage(new HttpMethod("POST"), "https://sandbox.affirm.com/api/v1/transactions")) {
var base64authorization = Convert.ToBase64String(Encoding.ASCII.GetBytes("<public_api_key>:<private_api_key>"));
request.Headers.TryAddWithoutValidation("Authorization", $ "Basic {base64authorization}");
request.Content = new StringContent("{\"transaction_id\":\"<checkout_token>\"}");
request.Content.Headers.ContentType = MediaTypeHeaderValue.Parse("application/json");
var response = await httpClient.SendAsync(request);
HttpContent responseContent = response.Content;
using(var reader = new StreamReader(await responseContent.ReadAsStreamAsync())) {
Console.WriteLine(await reader.ReadToEndAsync());
}
Console.ReadKey();
}
}
Vous devriez recevoir une réponse qui ressemble à ceci avec le id
.
{
"status": "authorized",
"amount_refunded": 0,
"provider_id": 1,
"created": "2021-06-23T23:25:55Z",
"order_id": "ABC123",
"checkout_id": "7WYDR0M83CGE47GJ",
"currency": "GBP",
"amount": 49999,
"events": [
{
"currency": "GBP",
"amount": 49999,
"type": "auth",
"id": "7M8T1AMJP01FLI6B",
"created": "2021-06-23T23:26:28Z"
}
],
"remove_tax": false,
"authorization_expiration": "2021-07-23T23:26:28Z",
"id": "AMLC-5X0W"
}
Une fois que vous avez autorisé des frais et reçu l'objet de réponse, votre site doit effectuer les opérations suivantes :
- Validate that the authorized amount equals the order total.
- Store the
charge_id
. - Mark the order payment as pending.
Si l'autorisation échoue, votre site peut potentiellement enregistrer cette tentative de paiement, car elle n'est pas requise de notre côté.
Affirm Loan Authorization
You should only authorize a given Affirm loan once, for the entire amount of the
transaction being purchased. If you have a specific use case where this may be
difficult, please contact us at [email protected] or use the widget at the bottom of the page.
Capture a Transaction
Once an order has been fulfilled, you must send a capture
API request to Affirm in order to capture or settle the funds. You will want to perform this activity from your secure back-end systems. To capture an authorized transaction, you'll need the id
provided in the authorization
API response. There aren't any required fields that need to be stored from the capture
response.
La capture des fonds est similaire à celle d'une transaction par carte de crédit. Après avoir capturé le prêt, nous procédons comme suit :
- We notify the customer that the loan has been captured and that their first payment is due to Affirm in 30 days.
- Payer le commerçant dans 2 à 3 jours ouvrables.
curl https://api.global.sandbox.affirm.com/api/v1/transactions/{id}/capture
-X POST
-u {public_api_key}:{private_api_key}"
-H "Content-Type: application/json"
-H "country-code: GBR"
-d '{"order_id": "{order_id}", "shipping_carrier": "USPS", "shipping_confirmation": "1Z23223"}'
$endpoint = "https://sandbox.affirm.com/api/v1/transactions";
$url = $endpoint . "/" . $_GET["id"] . "/capture";
$data = '';
try {
$response = callAffirm($url, $data);
// Handle the response
} catch (Exception $e) {
// Handle the exception
Vous recevrez ensuite une réponse avec la confirmation.
{
"fee": 1500,
"created": "2021-06-23T23:27:13Z",
"order_id": "XYZ123",
"currency": "GBP",
"amount": 49999,
"reference_id": "6789",
"type": "capture",
"id": "QU9IEPR45ZN97AK6"
}
Mis à jour 2 months ago