Créer une charge (ancien système)

Utilisez l'API Frais d'Affirm et votre action côté serveur pour traiter les frais.

Autoriser les frais

Le point de terminaison crée un prêt et réserve les fonds. Lorsque vous autorisez un frais, Affirm génère un charge_id que vous pouvez utiliser pour faire référence au frais à l’avenir. Vous devez autoriser une charge pour le créer entièrement.

❗️

Vous devez autoriser un débit pour qu'il soit considéré comme actif. Lorsqu'il n'est pas actif, l'utilisateur ne peut pas voir le prêt et vous ne pouvez pas récupérer les fonds. Nous recommandons d’autoriser le prêt dès que vous recevez un Jeton de paiement.

Pour autoriser un débit, vous avez besoin du checkout_token renvoyé par votre intégration client.

curl https://sandbox.affirm.com/api/v2/charges/
     -X POST
     -u "{public_api_key}:{private_api_key}"
     -H "Content-Type: application/json"
     -d '{"checkout_token": "{checkout_token}","order_id": "{order_id}"}'
$endpoint = "https://sandbox.affirm.com/api/v2/charges";
$data = '{"checkout_token": "' . $_POST["checkout_token"] . '"}';
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/v2/charges")) {
		var base64authorization = Convert.ToBase64String(Encoding.ASCII.GetBytes("<public_api_key>:<private_api_key>"));
		request.Headers.TryAddWithoutValidation("Authorization", $ "Basic {base64authorization}");
		request.Content = new StringContent("{\"checkout_token\":\"<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 recevez une réponse qui ressemble à ceci avec le charge_id:

{
   "id":"ALO4-UVGR",
   "created":"2016-03-18T19:19:04Z",
   "currency":"USD",
   "amount":6100,
   "auth_hold":6100,
   "payable":0,
   "void":false,
   "expires": "2016-04-18T19:19:04Z",
   "order_id":"JKLM4321",
   "events":[
      {
         "created":"2014-03-20T14:00:33Z",
         "currency":"USD",
         "id":"UI1ZOXSXQ44QUXQL",
         "transaction_id":"TpR3Xrx8TkvuGio0",
         "type":"auth"
      }
   ],
   "details":{
      "items":{
         "sweater-a92123":{
            "sku":"sweater-a92123",
            "display_name":"Sweater",
            "qty":1,
            "item_type":"physical",
            "item_image_url":"http://placehold.it/350x150",
            "item_url":"http://placehold.it/350x150",
            "unit_price":5000
         }
      },
      "order_id":"JKLM4321",
      "shipping_amount":400,
      "tax_amount":700,
      "shipping":{
         "name":{
            "full":"John Doe"
         },
         "address":{
            "line1":"325 Pacific Ave",
            "city":"San Francisco",
            "state":"CA",
            "zipcode":"94112",
            "country":"USA"
         },
        "phone_number": "4153334567",
        "email": "[email protected]"
      },
      "discounts": {
        "RETURN5": {
          "discount_amount":    500,
          "discount_display_name": "Returning customer 5% discount"
        },
        "PRESDAY10": {
          "discount_amount":    1000,
          "discount_display_name": "President's Day 10% off"
        }
      }
   }
}

Une fois que vous avez autorisé des frais et reçu l'objet de réponse, votre site effectue les opérations suivantes :

  • Valide que le montant autorisé est égal au total de la commande.
  • Conserve le charge_id.
  • Marque le paiement de la commande comme étant en attente.

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

📘

N’autorisez 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 où cela peut être difficile, veuillez communiquer avec nous à l'adresse [email protected] ou utiliser le widget au bas de la page.

Capturer une charge

Une fois qu’une commande a été exécutée, vous devez envoyer une requête API Capture à Affirm pour saisir ou régler les fonds. Effectuez cette activité à partir de vos systèmes dorsaux sécurisés. Pour capturer une transaction autorisée, vous aurez besoin de l'charge_id fourni dans la réponse API Authorization. Il n'y a pas de champs obligatoires qui doivent être enregistrés à partir de la réponse Capture.

La capture des fonds est similaire à celle d'une transaction par carte de crédit. Après avoir capturé le prêt, nous :

  • Informons le client que le prêt a été saisi et que son premier paiement est dû à Affirm dans 30 jours.
  • Payer le commerçant dans 2 à 3 jours ouvrables.
curl https://sandbox.affirm.com/api/v2/charges/{CHARGE_ID}/capture
     -X POST
     -u {public_api_key}:{private_api_key}"
     -H "Content-Type: application/json"
     -d '{"order_id": "{order_id}", "shipping_carrier": "USPS", "shipping_confirmation": "1Z23223"}'
$endpoint = "https://sandbox.affirm.com/api/v2/charges";
$url = $endpoint . "/" . $_GET["id"] . "/capture";
$data = '';
try {
 $response = callAffirm($url, $data);
// Handle the response
} catch (Exception $e) {
 // Handle the exception

Vous recevez ensuite une réponse avec la confirmation.

{
  "fee": 600,
  "created": "2016-03-18T00:03:44Z",
  "order_id": "JKLM4321",
  "currency": "USD",
  "amount": 6100,
  "type": "capture",
  "id": "O5DZHKL942503649",
  "transaction_id": "6dH0LrrgUaMD7Llc"
}