Réaliser un paiement

Pour réaliser un paiement, vous devez suivre les étapes suivantes :

  1. Créer une commande en faisant un POST sur la ressource ORDER.
  2. Modifier éventuellement la commande pour mettre à jour le panier ou les montants des commissions par exemple.
  3. Figer la commande pour effectuer le paiement en faisant un GET :
    • soit sur l'url de l'attribut execute fourni dans les links de l'ORDER, dans ce cas la réponse contient l'url de redirection (attribut payment_url),
    • soit sur l'url de l'attribut execute-embedded pour initialiser le paiement par formulaire embarqué, et dans ce cas la réponse contient un formToken (attribut form_token).
  4. Rediriger l'acheteur vers l'URL de la page de paiement ou afficher le formulaire embarqué en utilisant le form_token.

Étape 1

Pour déclarer des items dans votre commande, vous devez mentionner l'argument ?expand=items dans l'url (/marketplace/orders?expand=items).

Dans le cas contraire, vos items ne seront pas pris en compte (la liste d'items retournée par le serveur est vide) et la commande sera créée sans items. Lors de l'éxécution de la commande (étape 3) vous rencontrerez une erreur 400 {"amount":"The sum of item amounts cannot be zero or negative."}.

Exemple d'appel POST ORDER :

POST https://secure.lyra.com/marketplace/orders?expand=items
{
  "marketplace": "ebfb36ab-2d30-4326-adb9-e16b0c9a89f3",
  "reference": "Exemple MKP BURO",
  "description": "Commande fournitures",
  "currency": "EUR",
  "url_return": "https://URLreturn.com",
"items": [
    {
      "seller": "d0f80202-0676-4d8d-9247-f455f30aec1b",
      "reference": "commburo",
      "description": "commission BURO",
      "amount": 150,
      "is_commission": true
    },
    {
      "seller": "5d0ef88c-3345-4b33-948e-80e23d553b73",
      "reference": "STB1",
      "description": "Stylos bleus",
      "amount": 1000,
      "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"
  }
}

Exemple de retour du POST ORDER :
{
  "uuid": "1a2b51f8-9d62-408f-ab39-aa8e28ab15f0",
  "href": "https://secure.lyra.com/marketplace/orders/1a2b51f8-9d62-408f-ab39-aa8e28ab15f0",
"created_at": "2019-01-21T16:46:46.517000Z",
  "updated_at": "2019-01-21T16:46:46.517000Z",
  "marketplace": "ebfb36ab-2d30-4326-adb9-e16b0c9a89f3",
  "reference": "Exemple MKP BURO",
  "description": "Commande fournitures",
  "alias": null,
  "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": null
    }
  ],
  "amount": null,
  "initial_amount": null,
  "currency": "EUR",
  "status": "CREATED",
  "webhook_result": null,
  "url_return": "https://URLreturn.com",
"items": [
    {
      "uuid": "d33ba1ab-793e-4d3d-943f-72b14a1e885b",
      "href": "https://secure.lyra.com/marketplace/items/d33ba1ab-793e-4d3d-943f-72b14a1e885b",
"created_at": "2019-01-21T16:46:46.510000Z",
      "updated_at": "2019-01-21T16:46:46.573000Z",
      "seller": "5d0ef88c-3345-4b33-948e-80e23d553b73",
      "order": "1a2b51f8-9d62-408f-ab39-aa8e28ab15f0",
      "reference": "STB1",
      "description": "Stylos bleus",
      "type": "ENTERTAINMENT",
      "amount": 1000,
      "quantity": 1,
      "transfer": null,
      "status": "CREATED",
      "links": null,
      "is_commission": false
    },
    {
      "uuid": "20034374-b425-4beb-91a8-a660ca5a3f9b",
      "href": "https://secure.lyra.com/marketplace/items/20034374-b425-4beb-91a8-a660ca5a3f9b",
"created_at": "2019-01-21T16:46:46.502000Z",
      "updated_at": "2019-01-21T16:46:46.551000Z",
      "seller": "d0f80202-0676-4d8d-9247-f455f30aec1b",
      "order": "1a2b51f8-9d62-408f-ab39-aa8e28ab15f0",
      "reference": "commburo",
      "description": "commission BURO",
      "type": "ENTERTAINMENT",
      "amount": 150,
      "quantity": 1,
      "transfer": null,
      "status": "CREATED",
      "links": null,
      "is_commission": true
    }
  ],
  "links": {
    "items": {
    "href": "https://secure.lyra.com/marketplace/orders/1a2b51f8-9d62-408f-ab39-aa8e28ab15f0/items"
    },
    "refunds": {
    "href": "https://secure.lyra.com/marketplace/orders/1a2b51f8-9d62-408f-ab39-aa8e28ab15f0/refunds"
    },
    "execute": {
    "href": "https://secure.lyra.com/marketplace/orders/1a2b51f8-9d62-408f-ab39-aa8e28ab15f0/execute"
    },
    "execute-embedded": {
    "href": "https://secure.lyra.com/marketplace/orders/1a2b51f8-9d62-408f-ab39-aa8e28ab15f0/execute-embedded"
    }
  },
  "vads_transaction_id": 0,
  "vads_transaction_date": null,
  "expected_capture_date": null,
  "capture_delay": null
}

Étape 2

Une commande peut être modifiée par une requête PUT ORDER (/marketplace/orders/<order_uuid>?expand=items) à l'aide de l'order_uuid retourné à l'étape 1, et ce, plusieurs fois.

Les attributs buyer et shipping doivent obligatoirement être renseignés.

La liste des items est renouvelée à chaque PUT. Si vous souhaitez ajouter un item supplémentaire, vous devez le transmettre avec l'ensemble des items déjà créés. Sinon la liste ne contiendra que cet item.

A contrario pour supprimer un item il suffit de renvoyer la liste complète des items sans celui que vous souhaitez supprimer.

Exemple d'appel PUT ORDER pour ajouter un item dans le panier:

PUT https://secure.lyra.com/marketplace/orders/515abac9-6cb2-4e21-8a25-b08d7e41e43c?expand=items

{
  "marketplace": "ebfb36ab-2d30-4326-adb9-e16b0c9a89f3",
  "reference": "Exemple MKP BURO",
  "description": "Commande fournitures",
  "currency": "EUR",
  "url_return": "https://URLreturn.com",
"items": [
    {
      "seller": "d0f80202-0676-4d8d-9247-f455f30aec1b",
      "reference": "commburo",
      "description": "commission BURO",
      "amount": 270,
      "is_commission": true
    },
    {
      "seller": "5d0ef88c-3345-4b33-948e-80e23d553b73",
      "reference": "STB1",
      "description": "Stylos bleus",
      "amount": 1000,
      "is_commission": false
    },
    {
    "seller": "5d0ef88c-3345-4b33-948e-80e23d553b73",
    "reference": "STR3",
    "description": "Stylos rouges",
    "amount": 1000,
    "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"
  }
}

Etape 3

A l'exception des paiements en validation manuelle (voir chapitre Paiement en préautorisation (validation manuelle)), vous devez vous assurer avant d'effectuer la requête d'exécution et de figer la commande que le montant des commissions est supérieur au minimum requis. Si ce n'est pas le cas, la requête d'exécution renverra une erreur de validation 400 avec le message {"commission":"Insufficient amount of commission."}

Vous trouverez des informations sur la commission minimum dans la section Principe de commission du chapitre Présentation de la Marketplace.

Exemple d'appel GET via la redirection pour figer la commande :

GET
https://secure.lyra.com/marketplace/orders/515abac9-6cb2-4e21-8a25-b08d7e41e43c/execute

Exemple de réponse en GET :

{
	'payment_url': 'https://secure.lyra.com/vads-payment/exec.refresh.a;jsessionid=HqKAcpvcgZQA29qCZDjXw4kS.marketplacevad01?cacheId=450272311503195000050'
}						

Exemple d'appel GET via la le formulaire embarqué pour figer la commande :

GET https://secure.lyra.com/marketplace/orders/515abac9-6cb2-4e21-8a25b08d7e41e43c/execute-embedded

Exemple de réponse en GET :
{"form_token":"fa0yfV2FQuR3aak1SwsgcuZg195eyJhbW91bnQiOjEwOTAwLCJjdXJyZW5jeSI6IkVVUiIsIm
							1vZGUiOiJURVNUIiwidmVyc2lvbiI6Mywib3JkZXJJZCI6IjVjNDk1N2E5LWNkOGEtNGJhZC1hMGNiLTgxMT
							ZiMWE3ZDdmNiIsInNob3BOYW1lIjoiTHlyYSBTTVMiLCJicmFuZFByaW9yaXR5IjpbIkJBTkNPTlRBQ1QiL
							CJDQiIsIkUtQ0FSVEVCTEVVRSIsIk1BU1RFUkNBUkQiLCVGQVVMVCJ9fX0a702"}

Note : le form_token peut peser jusqu'à 8ko

Etape 4

Dans le cas d'un paiement par redirection, il suffit de rediriger l'acheteur vers le lien fourni. La même adresse peut être utilisée pour un affichage par iframe.

Dans le cas d'un formulaire de paiement embarqué, le form_token doit être inséré dans le formulaire (attribut kr-form-token).

Exemple :

<body> 
	<!-- payment form --> 
	<div class="kr-embedded"
	kr-form-token="fa0yfV2FQuR3aak1SwsgcuZg195eyJhbW91bnQiOjEwOTAwLCJjdXJyZW5jeSI6IkVVUiIsIm
			1vZGUiOiJURVNUIiwidmVyc2lvbiI6Mywib3JkZXJJZCI6IjVjNDk1N2E5LWNkOGEtNGJhZC1hMGNiLTgxMT
			ZiMWE3ZDdmNiIsInNob3BOYW1lIjoiTHlyYSBTTVMiLCJicmFuZFByaW9yaXR5IjpbIkJBTkNPTlRBQ1QiL
			CJDQiIsIkUtQ0FSVEVCTEVVRSIsIk1BU1RFUkNBUkQiLCVGQVVMVCJ9fX0a702">
 	<!-- payment form fields -->
		<div class="kr-pan"></div>
		<div class="kr-expiry"></div>
		<div class="kr-security-code"></div>

		<!-- payment form submit button -->
		<button class="kr-payment-button"></button>
		<!-- error zone --> 
		<div class="kr-form-error"></div> 
	</div> 
</body>