Paiement en préautorisation (validation manuelle)

Par défaut, la validation de l’Order se fait de façon automatique au moment de l’étape 2 du paiement (lors du GET <url>/execute).

Il est également possible de dissocier les étapes d'autorisation de paiement et de remise en banque des transactions.

Cela permet de réaliser des autorisations alors que le dispatching final des items du panier entre montant vendeurs et montant commission marketplace n'est pas encore connu.

Étape 1

Pour mettre en œuvre cette fonctionnalité, il suffit d’ajouter le champ awaiting_validation lors de la création de l’Order et lui assigner la valeur true.

Exemple d’appel POST ORDER de création en validation manuelle:

{
  "marketplace": "ebfb36ab-2d30-4326-adb9-e16b0c9a89f3",
  "reference": "Exemple MKP BURO",
  "description": "Commande fournitures",
  "currency": "EUR",
  "url_return": "https://URLreturn.com",
  "awaiting_validation" : true,
  "items": [
    {
      "seller": "5d0ef88c-3345-4b33-948e-80e23d553b73",
      "reference": "STB1",
      "description": "Stylos bleus",
      "amount": 1150,
      "is_commission": false
    }
  ], 
  "buyer": 
    {
      "type": "PRIVATE",
      "email": "jean.dupont@acheteur.fr",
      "phone_number": "33 (0)1 11 22 33 44",
      "reference": "ZhIsYM"
    },
  "shipping": 
    {
      "shipping_method": "RELAY_POINT"
    }
}

Dans cet exemple, le montant de l’item (montant acheteur) est connu, mais pas sa répartition entre la part sous-marchand et la part de la commission de l’opérateur (la marketplace).

Remarque : Notez toutefois qu’il est possible de préciser dès cette étape les commissions de l’opérateur. Ces dernières pourront, si nécessaire, être mises à jour à l’étape 4.

Étape 2

L’étape 2 est exécutée de la même manière que pour un paiement standard et l’url de redirection pour procéder au paiement est retournée.

Exemple d'appel GET pour figer la commande :

GET https://secure.lyra.com/marketplaces/marketplace/orders/7fac13b0-7ab9-4382-9073-11ddb38d4427/execute

L’Order étant en attente de validation, les contrôles sur le montant minimum de commission ne sont pas exécutés.

Etape 3

Une fois le paiement effectué avec succès, l’order passe à l’état PENDING et les transactions associées à au statut TO_VALIDATE.

Etape 4

Cette étape, facultative, permet d'indiquer le montant des commissions de l'opérateur si ces dernières n'ont pas été fournies à l’étape 1.

Il est ainsi possible d’ajouter :
  • un item commission
  • et/ou des commissions sur les items (cf paragraphe dédié).

Un ou plusieurs items peuvent également être supprimés (fonction standard).

Le montant total de l’Order peut être diminué mais il ne peut pas être augmenté.

En revanche, le champ awaiting_validation ne peut pas être modifié.

Etape 5

Le processus se termine par la validation de l’Order. C’est lors de cette étape que l’on contrôle que le montant de commission est suffisant.

Pour valider un Order, il faut faire un POST sur l’url de l’Order, attribut : validate.

Exemple d’appel POST ORDER pour le valider manuellement :

POST https://secure.lyra.com/marketplace/orders/7fac13b0-7ab9-4382-9073-11ddb38d4427/validate

Exemple de retour du POST ORDER validate :

Le détail de l’Order est retourné. L’attribut awaiting_validation de l’Order prend alors la valeur false et les transactions associées passent de l’état TO_VALIDATE à PENDING.

{
  "uuid": "7fac13b0-7ab9-4382-9073-11ddb38d4427",
  "href": "https://secure.lyra.com/marketplace/orders/7fac13b0-7ab9-4382-9073-11ddb38d4427",
  "created_at": "2019-05-27T09:30:24.434556Z",
  "updated_at": "2019-05-27T09:36:06.500936Z",
  "marketplace": "ebfb36ab-2d30-4326-adb9-e16b0c9a89f3",
  "reference": "Exemple MKP BURO 2",
  "description": "Commande fournitures",
  "alias": null,
  "awaiting_validation": false,
  "buyer": [ 
    { 
      "reference": "ZhIsYM",
      "title": null,
      "type": "PRIVATE",
      "first_name": null,
      "last_name": null,
      "legal_name": null,
      "phone_number": "33 (0)1 11 22 33 44",
      "email": "jean.dupont@acheteur.fr",
      "address": null 
    } 
  ], 
  "shipping": [ 
    { 
      "shipping_method": "RELAY_POINT",
      "delivery_company_name": null,
      "shipping_speed": null,
      "shipping_delay": null,
      "type": null,
      "first_name": null,
      "last_name": null,
      "legal_name": null,
      "phone_number": null,
      "address": 
            { 
                  "street_number": "37",
                  "street": "rue Marcel Philippe",
                  "district": "Wallis-et-Futuna",
                  "zipcode": "59259",
                  "city": "Dupont",
                  "state": "Meurthe-et-Moselle",
                  "country": "FR"
            }
    } 
  ], 
  "payment_config": "SINGLE",
  "amount": 1150,
  "initial_amount": 1150,
  "currency": "EUR", 
  "status": "PENDING",
  "webhook_result": null,
  "url_return": "https://URLreturn.com",
  "links": 
    { 
      "items": 
        {
            "href": "https://secure.lyra.com/marketplace/orders/7fac13b0-7ab9-4382-9073-11ddb38d4427/items" },
      "transactions": 
        {
            "href": "https://secure.lyra.com/marketplace/orders/7fac13b0-7ab9-4382-9073-11ddb38d4427/transactions" },
      "refunds": 
        { 
            "href": "https://secure.lyra.com/marketplace/orders/7fac13b0-7ab9-4382-9073-11ddb38d4427/refunds" }
     },
  "vads_transaction_id": 600001,
  "vads_transaction_date": "20190527093234", 
  "expected_capture_date": "20190530093235",
  "capture_delay": 3
}

Important : L’Order peut être validé tant que la date d'expiration de la demande d'autorisation n’est pas dépassée. Si cette date est dépassée alors le paiement prend le statut définitif EXPIRED.