First step of two-step payment.
First step is performed according to the scheme invoice/create.
After successful creation and payment of the invoice, status will be equal to 8 (Invoice funds are on hold in the payment system).
To complete the funds receipt operation, execute invoice/charge or to cancel, execute invoice/unhold.
When funds are held, merchants are required to confirm or cancel the payment within 5 days. M4 service does not automatically confirm or cancel held payments after this period.
The funds holding period cannot exceed 5 days.
Fields involved in request signature generation:
amountcurrencypaywayshop_idshop_order_idDocumentation Index
Fetch the complete documentation index at: https://docs.m4psp.com/llms.txt
Use this file to discover all available pages before exploring further.
Every API request must be signed so that we can identify your account.
The signature is transferred in the request body through the sign parameter, for example:
{
"shop_id": 1520,
"shop_order_id" : "5b0efa8a-153b-4421-abac-2aba4d772a86",
"amout": "6320.91",
"currency": 840,
"payway": "card_invoice_usd",
"description": "Payment for shop_id=1520",
"sign": "77a6f7a30876d480d4e771d08cb83800dd5cb874664c77e515ffc052b20293c6"
}"sign" parameter, nevertheless your real requests must include it in the request body where required.
Signature line is generated according to the following algorithm: all request parameters involved in signature generation are ordered in the alphabetical order of keys, the values are concatenated with a colon (":") and the account secret key is added at the end (without the: sign), a sha256 hash is generated from the resulting line and its hex representation is passed in the sign request parameter.
Fields involved in request signature generation:
shop_idshop_order_idamountcurrencypayway"amount", "currency", "payway", "shop_id", "shop_order_id"
"6320.91:840:card_invoice_usd:1520:5b0efa8a-153b-4421-abac-2aba4d772a86account-secret-key"
Where account-secret-key is the secret identification key for your account. You can request a key from the support service.
>>> string_to_sign = '6320.91:840:card_invoice_usd:1520:5b0efa8a-153b-4421-abac-2aba4d772a86account-secret-key'
>>> import hashlib
>>> sign = hashlib.sha256(string_to_sign.encode()).hexdigest()
>>> print(sign)
'77a6f7a30876d480d4e771d08cb83800dd5cb874664c77e515ffc052b20293c6'Unique shop identifier in the M4 system.
1520
Order ID in your system. Must be unique for each new invoice.
255"5b0efa8a-153b-4421-abac-2aba4d772a86"
Amount received or withdrawn.
Example: "227.34"
"6320.91"
Payment way for payment. Invoice currency depends on the specified payment way.
There are two ways to get a list of all payment directions available to the shop:
150^[A-Za-z_,\[\]]+$"card_payway_usd"
Payer IP address
"192.168.1.1"
Optional payment description.
255"Payment for shop_id=1520"
URL where the payer will be redirected after unsuccessful invoice payment.
"https://your-domain.com/status/failed/"
URL where the payer will be redirected after successful invoice payment.
"https://your-domain.com/status/success/"
URL where the notification about successful payment will be sent.
"https://your-domain.com/status/callback/"
URL where the notification about unsuccessful payment will be sent.
"https://your-domain.com/status/rejected/"
Bank card details should be sent when:
In case the payment way to the cards is used and the card data is not transmitted, the response to the request will contain a link to redirect the buyer to enter the card details.
Also, method, url and data will be filled in if the user needs to be redirected to pass the 3DSecure check.
This parameter is used to generate a payment token. More details invoice/recurrent
false
Payer browser information.
See Payer Browser Authentication for 3D Secure for the details of the data gathering.
Boolean value, in case of successful response it will be true, in case of error – false
true
A textual description of the error, in case of success - simply Ok
"Ok"
If this value is greater than 0, then the request ended with an error. Description of error codes
0