Create a payment order by URL
Use cases
The merchant creates a payment order by URL. The payment URL is sent by the merchant.
Test
Test the Charge/CreatePaymentOrder web service via our playground.
Request
Immediate payment
Example of request
Required fields:
- Amount: €100,00.
. Recommended fields:
- Référence de la commande : "myOrderId-1234".
- Distribution channel: URL.
{ "amount": 10000, "currency": "EUR", "orderId": "myOrderId-1234", "channelOptions": { "channelType": "URL" } }
{ "amount": 200050, "currency": "PEN", "orderId": "myOrderId-999999", "channelOptions": { "channelType": "URL" }, "paymentReceiptEmail": "sample@example.com", "expirationDate": "2020-04-20T20:13:26+02:00", "locale": "es_PE", "dataCollectionForm": "false" }
{ "amount": 200050, "currency": "ARS", "orderId": "myOrderId-999999", "channelOptions": { "channelType": "URL" }, "paymentReceiptEmail": "sample@example.com", "expirationDate": "2020-04-20T20:13:26+02:00", "locale": "es_AR", "dataCollectionForm": "false" }
{ "amount": 200050, "currency": "COP", "orderId": "myOrderId-999999", "channelOptions": { "channelType": "URL" }, "paymentReceiptEmail": "sample@example.com", "expirationDate": "2020-04-20T20:13:26+02:00", "locale": "es_CO", "dataCollectionForm": "false" }
/** * I initialize the PHP SDK */ require_once __DIR__ . '/vendor/autoload.php'; require_once __DIR__ . '/keys.php'; require_once __DIR__ . '/helpers.php'; /** * Initialize the SDK * see keys.php */ $client = new Lyra\Client(); /** * I create a formToken */ $store = array("amount" => 250, "currency" => "EUR", "orderId" => uniqid("MyOrderId"), "customer" => array( "email" => "sample@example.com" )); $response = $client->post("V4/Charge/CreatePayment", $store); /* I check if there are some errors */ if ($response['status'] != 'SUCCESS') { /* an error occurs, I throw an exception */ display_error($response); $error = $response['answer']; throw new Exception("error " . $error['errorCode'] . ": " . $error['errorMessage'] ); } /* everything is fine, I extract the formToken */ $formToken = $response["answer"]["formToken"]; ?>
/** * I initialize the PHP SDK */ require_once __DIR__ . '/vendor/autoload.php'; require_once __DIR__ . '/keys.php'; require_once __DIR__ . '/helpers.php'; /** * Initialize the SDK * see keys.php */ $client = new Lyra\Client(); /** * I create a formToken */ $store = array("amount" => 250, "currency" => "EUR", "orderId" => uniqid("MyOrderId"), "customer" => array( "email" => "sample@example.com" )); $response = $client->post("V4/Charge/CreatePayment", $store); /* I check if there are some errors */ if ($response['status'] != 'SUCCESS') { /* an error occurs, I throw an exception */ display_error($response); $error = $response['answer']; throw new Exception("error " . $error['errorCode'] . ": " . $error['errorMessage'] ); } /* everything is fine, I extract the formToken */ $formToken = $response["answer"]["formToken"]; ?>
To view the fields and their description, go to the playground: Charge/CreatePaymentOrder (menu on the left).
Payment in installments
Prerequisites
- subject to option and/or depending on your offer
- not available for SEPA payments
Sample query
Required fields:
- Amount: €100,00.
- Rule: Payment in 3 installments. The first amount is €50,00 with an interval of 7 days.
. Recommended fields:
- Référence de la commande : "myOrderId-1234".
- Distribution channel: URL.
{ "amount": 10000, "currency": "EUR", "orderId": "myOrderId-1234", "channelOptions": { "channelType": "URL" }, "transactionOptions": { "installmentOptions": { "firstAmount": 5000, "count": 3, "period": 7 } } }
Le premier paiement de 50,00 EUR est créé à J+0.
Le deuxième paiement de 25,00 EUR est créé à J+7.
Le troisième paiement de 25,00 EUR est créé à J+14.
The description and all of the fields are available (menu on the left): Charge/CreatePaymentOrder.
Pay in instalments with a personalized payment plan
Prerequisites
- subject to the "Advanced installment payment" option
- not taking into account the value of the Capture Delay field (time to bank)
- not available for SEPA payments
Sample query
Required fields:
- Amount: €100,00.
- Rule: Payment in 3 installments.
- April 1, 2023 for an amount of EUR 50,00.
- May 1, 2023 for an amount of EUR 30,00.
- June 1, 2023 for an amount of EUR 20,00.
. Recommended fields:
- Référence de la commande : "myOrderId-1234".
- Distribution channel: URL.
{ "amount": 10000, "currency": "EUR", "orderId": "myOrderId-1234", "channelOptions": { "channelType": "URL" }, "transactionOptions": { "installmentOptions": { "schedules": [ { "date": "2023-04-01T23:59:59+00:00", "amount": 5000 }, { "date": "2023-05-01T23:59:59+00:00", "amount": 3000 }, { "date": "2023-06-01T23:59:59+00:00", "amount": 2000 } ] } } }
The description and all of the fields are available (menu on the left): Charge/CreatePaymentOrder.
Response
Example of a response
{ "webService": "Charge/CreatePaymentOrder", "version": "V4", "applicationVersion": "5.5.0", "status": "SUCCESS", "answer": { "paymentOrderId": "fd8f6060f824427ba687d0161e46af8f", "paymentURL": "https://secure.lyra.com/t/328zq5so", "paymentOrderStatus": "RUNNING", "creationDate": "2020-03-31T15:06:49+00:00", "updateDate": null, "amount": 200050, "currency": "EUR", "locale": "en_GB", "strongAuthentication": "AUTO", "orderId": "myOrderId-1234", "channelDetails": { "channelType": "URL", "mailDetails": null, "smsDetails": null, "whatsAppDetails": null, "_type": "V4/ChannelDetails" }, "paymentReceiptEmail": "sample@example.com", "taxRate": null, "taxAmount": null, "expirationDate": "2020-04-20T18:13:26+00:00", "transactionDetails": { "cardDetails": { "manualValidation": "NO", "captureDelay": 0, "_type": "V4/CardDetails" }, "_type": "V4/PaymentOrderTransactionDetails" }, "dataCollectionForm": false, "merchantComment": null, "message": "I pay EUR 2,000.50 via secure payment before 23/04/2020 (if the link does not work, copy the URL : https://secure.lyra.com/t/xdt0bcmo ).", "_type": "V4/PaymentOrder" }, "ticket": null, "serverDate": "2020-03-31T15:06:49+00:00", "applicationProvider": "PAYZEN", "metadata": null, "_type": "V4/WebService/Response" } }
The merchant must send the payment link to the buyer. The payment link corresponds to thepaymentURL
field of the objectAnswer.
View the description and all the fields in our playground:PaymentOrder
Error handling
Error table
Code | Description |
---|---|
INT_009 | The format of the amount field is invalid or the field is not transmitted. |
INT_010 | The format of the currency field is invalid or the field is not transmitted. |
INT_050 | The strongAuthentication parameter is invalid. |
INT_856 | The locale parameter is invalid. |
INT_858 | The taxRate parameter is invalid. |
INT_869 | The taxAmount parameter is invalid. |
INT_928 | The format of the installmentOptions.firstAmount field is invalid or the field is not transmitted. |
INT_929 | The installmentOptions.count parameter is invalid. |
INT_930 | The installmentOptions.period parameter is invalid. |
INT_931 | The installmentOptions.schedules[] parameter is invalid. |
INT_932 | The installmentOptions.schedules[date] parameter is invalid. |
INT_933 | The format of the installmentOptions.schedules[amount] field is invalid or the field is not transmitted. |
PSP_519 | Unknown currency. |
PSP_606 | Currency not supported by the MID. |
PSP_1007 | The expiry date of the payment order cannot be earlier than the current date or exceed 90 days. |
PSP_1015 | No data collection form for this shop. |
PSP_1018 | The data collection form cannot be used for the requested currency. |
Analysis of payment results
To see the payment result, implement the instant payment notification (also known as IPN).