Transmettre les données à la plateforme de paiement

Maintenant que l 'application mobile a récupéré les données du paiement, vous devez les transmettre à votre serveur.

Une fois les données reçues coté serveur, vous devez appeler le service web de création de paiement (createPayment) de l'API Webservices SOAP v5

Votre requête devra être constituée des éléments suivants:

Les entêtes SOAP Obligatoire Permet d'identifier le marchand et de sécurisé les échanges avec la plateforme de paiement.
Un objet commonRequest Facultatif Permet de forcer le numéro de contrat à utiliser pour réaliser le paiement.
un objet cardRequest Obligatoire Permet de transmettre la payload à la plateforme de paiement. Une fois déchiffrée, les données seront utilisées pour réaliser le paiement.
Un objet paymentRequest Obligatoire Permet de transmettres les informations du paiement (montant, devise etc..)
Un objet customerRequest Facultatif Permet de transmettre les données de l'acheteur.
Un sous-objet billingRequest Facultatif Permet de transmettre l'adresse de facturation de l'acheteur.
Un sous-objet shippingRequest Facultatif Permet de transmettre l'adresse de livraison de l'acheteur.
Un objet shoppingCartRequest Facultatif Permet de transmettre des informations sur le contenu du panier

Remarque:

L'implémentation actuelle de Google Pay n'est pas compatible avec le 3D Secure. Il est donc inutile de transmettre l'objet threeDSRequest dans votre requête.

Etape 1: Générez le SOAP-HEADER comme défini dans la documentation.

Exemple de header:

<?xml version="1.0" encoding="UTF-8"?> 
  <SOAP-ENV:Enveloppe xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
    xmlns:ns1="http://v5.ws.vads.lyra.com/"
    xmlns:ns2="http://v5.ws.vads.lyra.com/Header/">
  <SOAP-ENV:Header>
    <ns2:shopId>12345678</ns2:shopId>
    <ns2:requestId>70c08d51-214b-4a9b-9e74-eadcdde6710c</ns2:requestId>
    <ns2:timestamp>2018-07-06T13:51:32Z</ns2:timestamp>
    <ns2:mode>TEST</ns2:mode>
    <ns2:authToken>o53KmUXgjqhiyTooIfRjh6wF+NJwVQg790mpbrjTg18=</ns2:authToken>
  </SOAP-ENV:Header>
...

Etape 2: Créez un objet commonRequest comme défini dans la documentation si vous souhaitez forcer le numéro de contrat à utiliser pour réaliser le paiement.

Etape 3: Créez un objet cardRequest:

Attributs de l'objet cardRequest Valeur
scheme GOOGLEPAY
walletPayload Objet PaymentData au format json tel que reçu par le serveur marchand.

Les attributs number, expiryYear et expiryMonth deviennent facultatifs lorsque l'attribut scheme est valorisé à GOOGLEPAY.

Etape 4: Créez un objet paymentRequest :

Attributs de l'objet cardRequest Description
amount Montant à payer. Peut être différent de la valeur transmise dans l'objet PaymentDataRequest.
currency Code numérique de la devise à utiliser pour le paiement.

Ex: Ex : 978 pour l'euro (EUR)

Etape 5: Créez un objet orderRequest:

Attribut de l'objet orderRequest Description
orderId Référence de la commande.

Il est recommandé d'utiliser des références de commande unique. En cas de timeout cette référence sera utilisée pour retrouver la transaction correspondante.

Etape 6: Gestion des adresses de livraison et de facturation.

Si vous avez opté pour un checkout rapide, les données sont automatiquement transmises à la plateforme de paiement. Vous pouvez passer à l'étape 7.

Si vous gérez la sélection d'adresses depuis votre application mobile, vous pouvez transmettre ces informations à la plateforme de paiement afin qu'elles soient visibles dans le Back Office. Pour cela, créer un objet customerRequest.

Etape 6.1: Créez un objet billingRequest:

Attributs de l'objet billingRequest Description
email Adresse e-mail de l'acheteur.

Si vous laissez ce champ vide, la plateforme de paiement récupèrera automatiquement la valeur de la propriété "email" de la payload.

address Première ligne d'adresse de facturation.

Si vous laissez ce champ vide, la plateforme de paiement récupèrera automatiquement la valeur de la propriété "paymentMethodData.Info.billingAddress.address1" de la payload.

zipCode

Code postal de l'adresse de facturation.

Si vous laissez ce champ vide, la plateforme de paiement récupèrera automatiquement la valeur de la propriété "paymentMethodData.Info.billingAddress.postalCode" de la payload.
city

Ville de l'adresse de facturation.

Si vous laissez ce champ vide, la plateforme de paiement récupèrera automatiquement la valeur de la propriété "paymentMethodData.Info.billingAddress.locality" de la payload.
country

Pays de l'adresse de facturation.

Si vous laissez ce champ vide, la plateforme de paiement récupèrera automatiquement la valeur de la propriété "paymentMethodData.Info.billingAddress.countryCode" de la payload.
firstName

Nom de l'adresse de facturation.

Si vous laissez ce champ vide, la plateforme de paiement récupèrera automatiquement la valeur de la propriété "paymentMethodData.Info.billingAddress.name" de la payload.
cellPhoneNumber

Numéro de téléphone mobile.

Si vous laissez ce champ vide, la plateforme de paiement récupèrera automatiquement la valeur de la propriété "paymentMethodData.Info.billingAddress.phoneNumber" de la payload.

Etape 6.2: Créez un objet shippingRequest:

Attributs de l'objet shippingRequest Description
email Adresse e-mail de l'écheteur.

Si vous laissez ce champ vide, la plateforme de paiement récupèrera automatiquement la valeur de la propriété "email" de la payload.

address Première ligne d'adresse de facturation.

Si vous laissez ce champ vide, la plateforme de paiement récupèrera automatiquement la valeur de la propriété "shippingAddress.address1" de la payload.

zipCode

Code postal de l'adresse de facturation.

Si vous laissez ce champ vide, la plateforme de paiement récupèrera automatiquement la valeur de la propriété "shippingAddress.postalCode" de la payload.
city

Ville de l'adresse de facturation.

Si vous laissez ce champ vide, la plateforme de paiement récupèrera automatiquement la valeur de la propriété "shippingAddress.locality" de la payload.
country

Pays de l'adresse de facturation.

Si vous laissez ce champ vide, la plateforme de paiement récupèrera automatiquement la valeur de la propriété "shippingAddress.countryCode" de la payload.
firstName

Nom de l'adresse de facturation.

Si vous laissez ce champ vide, la plateforme de paiement récupèrera automatiquement la valeur de la propriété "shippingAddress.name" de la payload.
cellPhoneNumber

Numéro de téléphone mobile.

Si vous laissez ce champ vide, la plateforme de paiement récupèrera automatiquement la valeur de la propriété "shippingAddress.phoneNumber" de la payload.

Etape 7: Créez un objet shoppingCartRequest si vous souhaitez transmettre des informations sur le contenu du panier.

Consultez le Guide d'implémentation - API Webservices SOAP v5 pour plus de détails sur l'intégration de la méthode createPayment().

Exemple de message XML généré lors de l'appel à la méthode createPayment():

<?xml version="1.0" encoding="UTF-8"?> 
  <SOAP-ENV:Envelope 
    xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" 
    xmlns:ns1="http://v5.ws.vads.lyra.com/" 
    xmlns:ns2="http://v5.ws.vads.lyra.com/Header/">
  <SOAP-ENV:Header>
    <ns2:shopId>12345678</ns2:shopId>
    <ns2:requestId>88c53eb7-6015-4ec6-8045-206e5caa2e2c</ns2:requestId>
    <ns2:timestamp>2018-07-09T10:15:54Z</ns2:timestamp>
    <ns2:mode>TEST</ns2:mode>
    <ns2:authToken>ALxESNJ+mE5htqWccF5OTkYC2noxnDr570DrnI2+5SE=</ns2:authToken>
  </SOAP-ENV:Header>
  <SOAP-ENV:Body>
    <ns1:createPayment>
      <commonRequest>
        <paymentSource>EC</paymentSource>               
      </commonRequest>
      <paymentRequest>
        <amount>2990</amount>
        <currency>978</currency>
      </paymentRequest>
      <orderRequest>
        <orderId>myOder</orderId>
      </orderRequest>
      <cardRequest>
        <scheme>GOOGLEPAY</scheme>
        <walletPayload>{"apiVersionMinor":0,"apiVersion":2,"paymentMethodData":{"description":
        "Visa •••• 3513","tokenizationData":{"type":"PAYMENT_GATEWAY","token":"{\"signature\":
        \"MEUCIC1+XSqhtgCWQa\/3k7OFIesJX0SYBtCeOKjD+O2JBWO9AiEAg03FhXVVwD0
        NRhiPnjGWdfTqTXm39fnzr+XvHdbecY4\\u003d\",\"protocolVersion\":\"ECv1\",\"signedMessage\":\"
        {\\\"encryptedMessage\\\":\\\"qjXoUw7ptqWE\/G+PSOb8QoR+hqzM7h1S7iQ3jH\/mxmjJi\/\/M
        Y5Kem6WmuQxMQbz0pXeX5mxjmUxvbIQzGhtLLELoTWxuAF\/mLSuoIznPbvJNxQ9xGOVM
      QYuo0jTKqUUv6QrjMBTSCcQx2ktkDS3EjHOWBPTw22mI\/kXz0wn5x6jlMLEUTFkNlPZYjeoFR
      vUXpw0XoECNdouiiJwub52zmyebY7pz1JlG5DQOMWRvrCnj5Kgs9sxzXp1VJJ+rIqewoBOgl\/B
      gKsf87fOxVJFYqOmq+LR\/wk8PDKE9VE1XakQBG8kxhSflMQaqC+ObObJfoUC9ruIDK7iFkT8
      EFV3FVWHu8ZVYmoek3HWabZ36NdRPUyGtDCjOR+CmT8tneRHyqRzy8S4Yk5LyCObTZ+rb
      I0toveNchZdakUhMLyFFLqkgnc\/g3WJnLpujRy3jgOe6\/+ymb1gaiOnQQA\\\\u003d\\\\u003d\\\",\\\"e
      phemeralPublicKey\\\":\\\"BKB3qFuCrmNI0bOxVg\/kVCcCtswHrwabcrm18JtPTB+w5L\/d39dnrga
      GajdYvdLrFRQc5RyQ52Ug3e151yDNE6E\\\\u003d\\\",\\\"tag\\\":\\\"rJ5SapWOGc\/f4eqzif+P9D\/wS
      g\/yvfOJ63yVbRc1lGY\\\\u003d\\\"}\"}"},"type":"CARD","info":{"cardNetwork":"VISA","cardDetails":
      "3513","billingAddress":{"address3":"","sortingCode":"","address2":"","countryCode":"FR","address1"
      :"109Ruedel'Innovation","postalCode":"31670","name":"Lyranetwork","locality":"Labège",
      "administrativeArea":""}}},"shippingAddress":{"address3":"","sortingCode":"","address2":"",
      "countryCode":"FR","address1":"109Ruedel'Innovation","postalCode":"31670","name":"MyNetwork",
      "locality":"Labège","administrativeArea":""},"email":"test.gpay@gmail.com"}</walletPayload>
      </cardRequest>
      <customerRequest>
        <billingDetails>
          <email>test@test.com</email>
        </billingDetails>
        </customerRequest>
        <techRequest/>
      </ns1:createPayment>
 </SOAP-ENV:Body>
</SOAP-ENV:Envelope>