NAV Navbar
Logo

- Guide rapide -

Utiliser la prise d'empreinte de carte

Enregistrez les informations d'une carte de paiement pour la débiter à nouveau ultérieurement.

Cette fonctionnalité n'est disponible que si vous disposez de l'offre Pro.


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 prise d’empreinte

create payment

  1. Créez le paiement en utilisant save_card = true 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 contenant l’empreinte de la carte au travers de la notification (IPN).

Le paiement et la prise d’empreinte

L’exemple suivant permet de créer le paiement qui va permettre de procéder à la prise d’empreinte puis de rediriger directement votre client vers la page de paiement :

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

$payment = \Payplug\Payment::create(array(
  'amount'           => $amount * 100,
  'currency'         => 'EUR',
  'save_card'        => true,
  '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/success?id='.$customer_id,
      'cancel_url'   => 'https://example.net/cancel?id='.$customer_id
  ),
  'notification_url' => 'https://example.net/notifications?id='.$customer_id,
  'metadata'         => array(
      'customer_id'  => $customer_id
  )
));
payment_data = {
  'amount': 3300,
  'currency': 'EUR',
  'save_card': True,
  'customer': {
    'email': 'john.watson@example.net'
  },
  'hosted_payment': {
    'return_url': 'https://example.net/success?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)

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

La confirmation

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,true;
    $payment_date = $resource->hosted_payment->paid_at;
    $payment_amount = $resource->amount;
    if ($resource->save_card == true) {
      $card_id = $resource->card->id;
      $card_exp_month = $resource->card->exp_month;
      $card_exp_year = $resource->card->exp_year;
    }
    $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:
  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)
    if resource.save_card == True
      card_id = str(resource.card.id)
      card_exp_month = str(resource.card.exp_month)
      card_exp_year = str(resource.card.exp_year)
      pass
    payment_data = resource.metadata['customer_id']
    pass

Dans l’objet contenu dans la notification (IPN) vous pouvez maintenant récupérer l’id de la carte, c’est ce dernier que vous devrez utiliser pour les prochains paiements. Nous vous recommandons de récupérer également la date d’expiration de la carte afin de prévoir de contrôler la validité de la carte avant de créer la prochaine transaction.

Le paiement avec un ID de carte

create payment with a card id

  1. Créez le paiement en utilisant payment_method
    et l’ID de la carte préalablement enregistré,
  2. PayPlug vous envoie une confirmation au travers de la notification (IPN).

Créez un paiement avec l’ID d’une carte

Maintenant que vous disposez de l’ID d’une carte, vous pouvez la débiter à nouveau sans avoir besoin de nécessairement refaire passer votre client par une page de paiement :

<?php
$email = 'john.watson@example.net';
$amount = 33;
$customer_id = '42710';
$card_id = 'card_e7133426b8de947b37161dfba1897dd1';
$initiator = 'PAYER';

$payment = \Payplug\Payment::create(array(
  'amount'         => $amount * 100,
  'currency'       => 'EUR',
  'payment_method' => $card_id,
  'initiator'      => $initiator,
  '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'
  ),
  'notification_url' => 'https://example.net/notifications?id='.$customer_id,
  'metadata'      => array(
    'customer_id' => $customer_id
  )
));
payment_data = {
  'amount': 1000,
  'currency': 'EUR',
  'payment_method': 'card_e7133426b8de947b37161dfba1897dd1',
  'customer': {
    'email': 'john.watson@example.net'
  },
  'notification_url': 'https://example.net/notifications?id=42710',
  'metadata': {
    'customer_id': 42710,
  },
}
payment = payplug.Payment.create(**payment_data)

Une fois que le paiement est créé, il faut ensuite gérer la réponse comme indiqué dans la slide suivante.

Gérer le paiement

L’objet paiement contient de nombreuses variables nécessaires pour procéder au paiement, en particulier :

{
  "id": "pay_5iHMDxy4ABR4YBVW4UscIn",
  "amount": 1000,
  "is_paid": true,
  "authorization": null,
  "failure": null,
  "hosted_payment": {
    "payment_url": "https://secure.payplug.com/pay/5iHMDxy4ABR4YBVW4UscIn",
    "return_url": "https://example.net/success?id=42",
    "cancel_url": "https://example.net/cancel?id=42",
    "paid_at": 1434010827,
    "sent_by": null
  },
  [...]
}

Ensuite, votre intégration devra gérer le paiement comme suit :

  • si is_paid est true, alors vous pouvez considérer le paiement comme payé ;
  • si les champs authorization et authorized_at sont présents et remplis, l’authorisation a bien été réalisée ;
  • si le champ failure est remplis, le paiement a donc échoué pour la raison indiquée ;
  • sinon vous devez rediriger votre client vers l’url hosted_payment.payment_url pour compléter le paiement.

Suite au paiement votre client recevra une confirmation par e-mail.

Les usages

La prise d’empreinte d’une carte permet de mettre en place les usages suivants :

Paiement en 1 clic

Permettez à vos acheteurs de payer sans avoir besoin de saisir à chaque fois ses coordonnées bancaires.

Paiement récurrent

Proposez la possibilité de souscrire à des abonnements récurrents sur votre site web.

Paiement en plusieurs fois

Offrez à vos clients de payer un montant en 3 ou 4 règlements sans frais (moins de 90 jours).

Pour le paiement récurrent et le paiement en plusieurs fois, vous devrez gérer les échéanciers au niveau de votre service.

Liens et ressources


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