Autoriser et capturer les transactions

Apprendre le flux d'autorisation et de capture.

Autoriser la transaction

Le point de terminaison de la ressource Autoriser crée un prêt et réserve les fonds. Lorsque vous autorisez, Affirm génère un ID unique que vous utiliserez pour faire référence à la transaction. Vous devez autoriser une transaction pour la créer entièrement.

Cela représente le flux d'autorisation et de capture.

Cela représente le flux d'autorisation et de capture.

❗️

Si vous n'autorisez pas une transaction, elle ne sera pas considérée comme active. Cela signifie que l'utilisateur ne verra pas le prêt et que vous ne pourrez pas récupérer les fonds. Pour cette raison, vous devez autoriser le prêt dès que vous recevez un checkout_token.

Pour autoriser une transaction, vous aurez besoin du paramètre checkout_token renvoyé par votre intégration client pour le transmettre au paramètre transaction_id.

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: CAN"
     -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 l'ID.

{
    "status": "authorized",
    "amount_refunded": 0,
    "provider_id": 1,
    "created": "2021-06-23T23:25:55Z",
    "order_id": "ABC123",
    "checkout_id": "7WYDR0M83CGE47GJ",
    "currency": "CAN",
    "amount": 49999,
    "events": [
        {
            "currency": "CAN",
            "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 :

  • Valider que le montant autorisé est égal au total de la commande
  • Enregistrez charge_id
  • Marquez le paiement de la commande comme étant en attente

Si l'autorisation échoue, votre site peut potentiellement enregistrer cette tentative de paiement, car elle n'est pas requise de notre côté.

📘

Vous ne devez autoriser un prêt Affirm donné qu'une seule fois, pour le montant total de la
transaction en cours d'achat. Si vous avez un cas d'utilisation spécifique pour lequel cela peut s'avérer difficile
, veuillez nous contacter à l'adresse [email protected] ou utiliser le widget en bas de page.