NAV Navbar
Logo

- Guide rapide -

Créer un remboursement

Gérez les remboursements directement depuis votre application.


Quel langage de programmation préférez-vous?

| PHP | Python | .NET |

Pour naviguer dans la présentation, appuyez sur les flèches directionnelles ou sur la touche espace de votre clavier.

Installez la librairie

1- Téléchargez la librairie sur GitHub :

github.com/payplug/payplug-php

github.com/payplug/payplug-python

github.com/payplug/payplug-sharp

2- Ajoutez dans toutes vos pages utilisant l’API :

<?php
require_once('PATH_TO_PAYPLUG/payplug_php/lib/init.php');
import payplug
using Payplug;

Authenfiez-vous

L’authentification à l’API s’effectue en utilisant une clé secrète dans toutes les requêtes envoyées.

Pour utiliser la clé, ajoutez-là dans toutes vos pages utilisant l’API :

<?php
\Payplug\Payplug::setSecretKey('sk_live_VOTRE_CLE_PRIVEE');
payplug.set_secret_key('sk_live_VOTRE_CLE_PRIVEE')
Configuration.SecretKey = "sk_live_VOTRE_CLE_PRIVEE";

Les clés à utiliser avec l’API commencent par “sk_”.
Elles sont disponibles dans le portail PayPlug en cliquant sur “Mon compte” puis sur “Accès API”.

Les modes TEST et LIVE utilisent le même endpoint, pour changer de mode à l’autre il suffit de changer la clé secrète.

Fonctionnement de la création d’un remboursement

  1. Créez le remboursement en utilisant l’ID du paiement à rembourser,
  2. PayPlug vous envoie une confirmation au travers de la notification (IPN).

Le remboursement

Option 1 : le remboursement complet

Pour créer un remboursement, vous devez disposer de l’ID du paiement que vous souhaitez rembourser.

L’exemple suivant permet de rembourser l’intégralité de la transaction :

<?php
$payment_id = 'pay_5iHMDxy4ABR4YBVW4UscIn';
$refund = \Payplug\Refund::create($payment_id);
payment_id = 'pay_5iHMDxy4ABR4YBVW4UscIn'
refund = payplug.Refund.create(payment_id)
var paymentId = "pay_5iHMDxy4ABR4YBVW4UscIn";
var refund = Refund.Create(paymentId);

Le remboursement

Option 2 : le remboursement partiel

Si vous souhaitez ne pas rembourser l’intégralité de la transaction, l’exemple suivant permet d’effectuer un remboursement partiel :

<?php
$payment_id = 'pay_5iHMDxy4ABR4YBVW4UscIn';
$data = array(
  'amount' => 358,
  'metadata'        => array(
      'customer_id' => 42710,
      'reason'      => 'The delivery was delayed'
    )
  );
$refund = \Payplug\Refund::create($payment_id, $data);
payment_id = 'pay_5iHMDxy4ABR4YBVW4UscIn'
refund_data = {
  'amount': 358,
  'metadata': {
    'customer_id': 42710,
    'reason': 'The delivery was delayed',
  },
}
refund = payplug.Refund.create(payment_id, **refund_data)
var paymentId = "pay_5iHMDxy4ABR4YBVW4UscIn";
var refundData = new Dictionary<string, dynamic>
{
  {"amount", 3300},
  {"metadata", new Dictionary<string, dynamic>
    {    
      {"customer_id", 42710},
      {"reason", "The delivery was delayed"}
    }
  }
};
var refund = Refund.Create(paymentId, refundData);

L’exemple ci-dessus comprend des metadata afin de faciliter le suivi du remboursement.

La confirmation

Option 1 : Les notifications (IPN)

Si lors de la création du paiement vous pouvez spécifié une URL de notification (IPN), lors de la création du remboursement une requête POST contenant l’objet correspondant au remboursement sera envoyée à votre serveur sur cette URL.

<?php
$input = file_get_contents('php://input');
try {
  $resource = \Payplug\Notification::treat($input);

  if ($resource->object == "refund")) {
    $refund_id = $resource->id;
    $payment_id = $resource->payment_id;
    $refund_date = $resource->created_at;
    $refund_amount = $resource->amount;
    $refund_data = $resource->metadata[reason];
  }
}
catch (\Payplug\Exception\PayplugException $exception) {
  echo $exception;
}
request_body = request.body
try:
  resource = payplug.notifications.treat(request_body)
except payplug.exceptions.PayplugError:
  pass
else:
  if resource.object == 'refund':
    refund_id = str(resource.id)
    payment_id = str(resource.payment_id)
    refund_date = datetime.datetime.fromtimestamp(resource.created_at).strftime('%d/%m/%Y %H:%M:%S')
    refund_amount = str(resource.amount)
    refund_data = resource.metadata['reason']
    pass
using Payplug.Exceptions;

string json = new StreamReader(request.InputStream).ReadToEnd();
try
{
  var payment = Notification.Treat(json);
  if (payment["object"] == "refund")
  {
    var refund_id = payment["id"];
    var payment_id = payment["payment_id"];
    var refund_date = DateTimeOffset.FromUnixTimeSeconds(payment["created_at"]).DateTime;
    var refund_amount = payment["amount"];
    var refund_data = payment["metadata"]["reason"];
  }
}
catch (InvalidApiResourceException $e)
{
  Console.WriteLine($e);
}

L’URL de notification doit être accessible publiquement depuis Internet. Elle ne pourra pas fonctionner si vous êtes en local ou si la page est derrière un firewall ou un proxy.

La confirmation

Option 2 : Récupérer le détail d’un paiement

Si vous ne souhaitez pas utiliser les notifications (IPN), vous pouvez utiliser l’approche suivante :

L’étape 1 est identique à celle décrite dans le premier schéma. Dans l’étape 2, faites un appel vers l’API utilisant l’ID du paiement et l’ID du remboursement :

<?php
$paymentId  = 'pay_5iHMDxy4ABR4YBVW4UscIn';
$refundId   = 're_3NxGqPfSGMHQgLSZH0Mv3B';
$refund = \Payplug\Refund::retrieve($paymentId, $refundId);
payment_id = 'pay_5iHMDxy4ABR4YBVW4UscIn'
refund_id = 're_3NxGqPfSGMHQgLSZH0Mv3B'
refund = payplug.Refund.retrieve(payment_id, refund_id)
var paymentId = "pay_5iHMDxy4ABR4YBVW4UscIn";
var refundId = "re_3NxGqPfSGMHQgLSZH0Mv3B";
var refund = Refund.Retrieve(paymentId, refundId);

Gérez les metadatas

Les metadatas permettent d’ajouter des informations complémentaires lors de la création d’un paiement ou d’un remboursement.

{
  "metadata": {
    "transaction_id": "tsct_201506023456",
    "customer_id": 58790,
    "product_id": "ts_blk_00234",
    "shipping": "The delivery was delayed"
  }
}

Vous pouvez ajouter 10 clés. Leur nom ne doit pas dépasser les 20 caractères et les données stockées 500 caractères.

Liens et ressources


[ Retourner au début de la présentation ]