NAV Navbar
Logo

- Guide rapide -

Créer un paiement

Intégrez dans votre application la création d'un paiement.


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 paiement

  1. Créez le paiement et récupérez l’URL vers la page de paiement,
  2. Redirigez le client vers la page de paiement,
  3. PayPlug redirige votre client vers la page de retour sur votre site,
  4. PayPlug vous envoie une confirmation au travers de la notification (IPN).

Le paiement

L’exemple suivant permet de créer le paiement puis de rediriger directement votre client vers la page de paiement :

<?php
$email = 'john.watson@example.net';
$amount = 33;
$cust_id = '42710';

$payment = \Payplug\Payment::create(array(
  'amount'           => $amount * 100,
  'currency'         => 'EUR',
  'customer'         => array(
    'email'          => $email
  ),
  'hosted_payment'   => array(
    'return_url'     => 'https://example.net/return?id='.$cust_id,
    'cancel_url'     => 'https://example.net/cancel?id='.$cust_id
  ),
  'notification_url' => 'https://example.net/notifications?id='.$cust_id,
  'metadata'         => array(
    'customer_id'    => $customer_id
  )
));

$payment_url = $payment->hosted_payment->payment_url;
$payment_id = $payment->id;
header('Location:' . $payment_url);
payment_data = {
  'amount': 3300,
  'currency': 'EUR',
  'customer': {
    'email': 'john.watson@example.net'
  },
  'hosted_payment': {
    'return_url': 'https://example.net/return?id=42710',
    'cancel_url': 'https://example.net/cancel?id=42710',
  },
  'notification_url': 'https://example.net/notifications?id=42710',
  'metadata': {
    'customer_id': 42710,
  },
}
payment = payplug.Payment.create(**payment_data)
payment_id = str(payment.id)
var paymentData = new Dictionary<string, dynamic>
{
  {"amount", 3300},
  {"currency", "EUR"},
  {"customer", new Dictionary<string, object>
    {
      {"email", "john.watson@example.net"}
    }
  },
  {"hosted_payment", new Dictionary<string, object>
    {
      {"return_url", "https://example.net/return?id=42710"},
      {"cancel_url", "https://example.net/cancel?id=42710"}
    }
  },
  {"notification_url", "https://example.net/notifications?id=42710"},
  {"metadata", new Dictionary<string, object>
    {
      {"customer_id", "42710"}
    }
  }
};
var payment = Payment.Create(paymentData);
var payment_id = payment["id"];

Attention : tous les montants doivent être des entiers positifs en centime (1€ = 100 centimes).

La confirmation

Option 1 : Les notifications (IPN)

Lors de la création du paiement, vous pouvez spécifier une URL de notification (IPN) : notification_url. Si la transaction est payée ou en échec, une requête POST contenant l’objet correspondant au paiement sera envoyée à votre serveur.

<?php
$input = file_get_contents('php://input');
try {
  $resource = \Payplug\Notification::treat($input);
  if ($resource instanceof \Payplug\Resource\Payment
    && $resource->is_paid) {
    $payment_id = $resource->id;
    $payment_state = $resource->is_paid;
    $payment_date = $resource->hosted_payment->paid_at;
    $payment_amount = $resource->amount;
    $payment_data = $resource->metadata[customer_id];
  }
}
catch (\Payplug\Exception\PayplugException $exception) {
  echo $exception;
}
request_body = request.body
try:
  resource = payplug.notifications.treat(request_body)
except payplug.exceptions.PayplugError:
  # Gérer les erreurs ici
  pass
else:
  if resource.object == 'payment' and resource.is_paid:
    payment_id = str(resource.id)
    payment_state = str(resource.is_paid)
    payment_date = datetime.datetime.fromtimestamp(resource.hosted_payment.paid_at).strftime('%d/%m/%Y %H:%M:%S')
    payment_amount = str(resource.amount)
    payment_data = resource.metadata['customer_id']
using Payplug.Exceptions;

string json = new StreamReader(request.InputStream).ReadToEnd();
try
{
  var payment = Notification.Treat(json);
  if (payment["object"] == "payment" && payment["is_paid"])
  {
    var payment_id = payment["id"];
    var payment_state = payment["is_paid"];
    var payment_date = DateTimeOffset.FromUnixTimeSeconds(payment["hosted_payment"]["paid_at"]).DateTime;
    var payment_amount = payment["amount"];
    var payment_data = payment["metadata"]["customer_id"];
  }
}
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 :

Les étapes 1 à 3 sont identiques à celles décrites dans le premier schéma. Dans l’étape 4, faites un appel vers l’API utilisant l’ID du paiement récupéré lors de sa création :

<?php
$payment = \Payplug\Payment::retrieve($payment_id);
payment = payplug.Payment.retrieve(payment_id)
var payment = Payment.Retrieve(payment_id);

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 ]