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 |

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

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

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

Authentifiez-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::init(array(
  'secretKey' => 'sk_live_VOTRE_CLE_PRIVEE',
  'apiVersion' => 'LA_VERSION_API',
));
payplug.set_secret_key('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 “Paramètres” puis sur “Clé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.

Consultez le changelog pour savoir quelle version d’API utiliser.

Fonctionnement de la création d’un paiement

create a payment

  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',
  'billing'  => array(
    'title'        => 'mr',
    'first_name'   => 'John',
    'last_name'    => 'Watson',
    'email'        => $email,
    'address1'     => '221B Baker Street',
    'postcode'     => 'NW16XE',
    'city'         => 'London',
    'country'      => 'GB',
    'language'     => 'en'
  ),
  'shipping'  => array(
    'title'         => 'mr',
    'first_name'    => 'John',
    'last_name'     => 'Watson',
    'email'         => $email,
    'address1'      => '221B Baker Street',
    'postcode'      => 'NW16XE',
    'city'          => 'London',
    'country'       => 'GB',
    'language'      => 'en',
    'delivery_type' => 'BILLING'
  ),
  '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)

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 htmlentities($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']

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 :

payment notifications

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)

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 ]