PayU Russia
API Version
Minimum required API version: 1.1.0
Payment Methods
The tables below lists payment methods that are supported through a server-to-server integration and through the PayU payment page.
Server-to-Server Integrations
The following table lists all supported payment methods through a server-to-server integration.
Payment Method | Payment Method Type |
---|---|
Apple Pay - Encrypted Token | eWallet |
Google Pay | eWallet |
MAESTRO | Cards |
MASTERCARD | Cards |
MIR | Cards |
QIWI | Bank Transfer |
Svyaznoy | Cash |
VISA | Cards |
VISA Electron | Cards |
Payment Page
The following table lists all supported payment methods available on the PayU payment page.
Payment Method |
---|
ApplePay |
Google Pay |
MAESTRO |
MASTERCARD |
MIR |
UnionPay |
VISA |
Currencies
RUB
Features
The following table provides an overview of all supported and non-supported features.
Feature | Supported |
---|---|
![]() | No |
![]() | No |
![]() | No |
![]() | No |
Installments | No |
Level 2 and 3 Data | No |
![]() | No |
Network Tokens | No |
![]() | No |
PayU Risk | No |
![]() | No |
![]() | No |
Retrieve Supported Plans | No |
Statement Soft Descriptor | No |
![]() | Yes |
![]() | Yes |
Requests
The following table lists all supported requests.
Use the bodybuilder to create a sample request body for each request type.
Request | Partial/Multiple | Mode | Notes |
---|---|---|---|
Authorize | Partial and multiple are not supported | Asynchronous | Automatic capture is supported. |
Capture | Partial is supported | Asynchronous | |
Refund | Both partial and multiple are supported | Asynchronous | |
Void | Not Applicable | Asynchronous |
Request | Partial/Multiple | Mode |
---|---|---|
Authorize | Not Applicable | Asynchronous |
Request | Partial/Multiple | Mode | Notes |
---|---|---|---|
Authorize | Partial and multiple are not supported | Asynchronous | After the Authorize request, PayU Russia will capture the funds manually. You should thus not invoke a Capture request yourself. To receive a notification when the Capture is done, register webhooks and enable notifications for Create Capture events. |
Request | Partial/Multiple | Mode |
---|---|---|
Authorize | Partial and multiple are not supported | Asynchronous |
Capture | Partial is supported | Asynchronous |
Request | Partial/Multiple | Mode |
---|---|---|
Authorize | Not Applicable | Asynchronous |
Capture | Not Applicable | Asynchronous |
Refund | Both partial and multiple are supported | Synchronous |
Void | Not Applicable | Synchronous |
Setup Procedures
The following table lists the setup procedures that are specific to this provider.
Configuration | Required/Optional |
---|---|
In the PaymentsOS Control Center, configure the following credentials:
| Required |
In the PaymentsOS Control Center, create webhooks to be notified when a transaction changes its status. | Required |
In your PayU Russia account, configure the currencies you want to use in transactions. Contact PayU Russia support for assistance. | Required |
In your PayU Russia account, enable IPNs (Instant Payment Notifications). This will ensure that PaymentsOS is kept in sync with PayU systems. See Configuring IPN Settings below. Contact PayU Russia support for assistance. | Required |
In your PayU Russia account, enable the IRN identifier by default | Required |
In your PayU Russia account, configure all IPNs to use version 4 by default | Required |
Disable the cvv check if you do not require customers to enter their cvv code when initiating a payment. This can only be done by PayU Russia support. Contact PayU Russia support for assistance. | Optional |
Enable partial captures if desired. This can only be done by PayU Russia support. Contact PayU Russia support for assistance. | Optional |
If you want to use the Svyaznoy payment method, make sure that auto-capture is enabled in your PayU Russia account. | Optional |
Integration Procedures
The following sections list the integration procedures that are specific to this provider.
Considerations when Creating an Authorization
The authorization amount may be higher than the payment.amount
, due to commissions related to installments. The final authorization.amount
can be seen in the response to the authorization request.
Configuring IPN settings
You must enable IPNs (Instant Payment Notifications) to keep PaymentsOS in sync with PayU systems. To enable IPNs, login to your PayU Russia account, and open the Account Management > Account Settings > IPN Settings tab.
In your account, configure the following IPN URL:
- For working with the PaymentsOS test environment: https://api.paymentsos.com/callbacks/payurussia/test/notifications
- For working with the PaymentsOS live environment: https://api.paymentsos.com/callbacks/payurussia/live/notifications
After configuring the IPN URLs, select the following (required) fields: SALEDATE
, REFNOEXT
, ORDERSTATUS
, IPN_PID[]
, IPN_PNAME[]
, IPN_DATE
, and IPN_TOTALGENERAL
.
We recommend selecting all the fields.
As a last step, enable IPNs in your PayU Russia account (by default, IPNs are enabled for Authorized orders
only). Click Account Settings > Notifications > Send notifications for and select the following:
Canceled and returned orders
Complete orders
Integrating Apple Pay
Note
Make sure your account with PayU Russia has been configured to support Apple Pay.Integrating Apple Pay involves the following:
-
Configuring your Apple Developer Account and adding Apple Pay to your checkout page.
-
Integrating Apple Pay with your PaymentsOS transaction flows.
Integrating Apple Pay with PaymentsOS
PayU Russia supports the non-decrypted Network Token flow. Once you’ve obtained a network token through Apple Pay, the payload needs to be passed ‘as is’ (that is, without decryption), after which PayU Russia extracts the network token for you.
Configuring your Apple Developer Account
Before following the procedures below, contact us to request a CSR (Certificate Signing Request) certificate. Apple requires this certificate. Then proceed as follows:
-
Configure your Apple Developer Account for Apple Pay. For help, see this video on the Apple developer site. Note that you will be required to upload the CSR (Certificate Signing Request) certificate as part of the configuration procedures.
-
When setting up your account in step 1, you will generate a apple_pay.cer file. Send us this file so that we can store it in your account.
-
Integrate Apple Pay in your checkout page using Apple’s Javascript API, as explained on the Apple developer site.
Now proceed to integrate Apple Pay with PaymentsOS.
Integrating Apple Pay with PaymentsOS
Once your Apple Developer account is setup and you’ve added Apple Pay to your checkout page, you are ready to integrate Apple Pay with PaymentsOS.
When the customer chooses to pay with Apple Pay, Apple will return a token to your web page. Here’s a sample token:
{
"version": "EC_v1",
"data": "DjI8Ez7nPhVo742aGEzABz/TfxCPt9LSdf2/h+0xIgVJbi3fQqd4lv3ogoTI3SQ7vZrDAWI8g2lbd5sflXBHc0z+wSeybsCcqZB3n1edRFXU7+6DYmdhFFWWCejwUc6XZWmsSaVNEQf+Kc0SeYrj8Eskdapj8bYX/QXxXSPqS4IKSjB+f3O0gUXSq7LK/jA9dl+BbWW0l3gXERU6n5rcYndO5rnjiwNUpnm7EMIMfNU+IPbsubpL82kbL2MdMJB1grel03J4JKld6G0pFSmjR2mF/xBY/yKkADRhoQkVlDRicuKVMpdRXXbIQjw/yRkLv/u8iy1wXI5YmEBB+W4QpPYsuxys94gMPaKhcaEK/OaT099aFrNBezbuLMTcTzbhXOpPwWn9pkAK0eZNOQ==",
"signature": "MIAGCSqGSIb3DQEHAqCAMIACAQExDzANBglghkgBZQMEAgEFADCABgkqhkiG9w0BBwEAAKCAMIID5jCCA4ugAwIBAgIIaGD2mdnMpw8wCgYIKoZIzj0EAwIwejEuMCwGA1UEAwwlQXBwbGUgQXBwbGljYXRpb24gSW50ZWdyYXRpb24gQ0EgLSBHMzEmMCQGA1UECwwdQXBwbGUgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkxEzARBgNVBAoMCkFwcGxlIEluYy4xCzAJBgNVBAYTAlVTMB4XDTE2MDYwMzE4MTY0MFoXDTIxMDYwMjE4MTY0MFowYjEoMCYGA1UEAwwfZWNjLXNtcC1icm9rZXItc2lnbl9VQzQtU0FOREJPWDEUMBIGA1UECwwLaU9TIFN5c3RlbXMxEzARBgNVBAoMCkFwcGxlIEluYy4xCzAJBgNVBAYTAlVTMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEgjD9q8Oc914gLFDZm0US5jfiqQHdbLPgsc1LUmeY+M9OvegaJajCHkwz3c6OKpbC9q+hkwNFxOh6RCbOlRsSlaOCAhEwggINMEUGCCsGAQUFBwEBBDkwNzA1BggrBgEFBQcwAYYpaHR0cDovL29jc3AuYXBwbGUuY29tL29jc3AwNC1hcHBsZWFpY2EzMDIwHQYDVR0OBBYEFAIkMAua7u1GMZekplopnkJxghxFMAwGA1UdEwEB...",
"header": {
"ephemeralPublicKey": "MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEZMzlWOx8Xo8pXlOvzYONy+gvUy59ZOeuCov3kzc7fESczZTyvmA9dU9AdVMFaYyfCXlMG5oedi3Wy4yubqfxtg==",
"publicKeyHash": "xrJqUFO2jN5edGS8iETkfNXtwqnwSqRUUrQJBysFpZ8=",
"transactionId": "aa0b77fbb4f64cd3e5deef65177938b2d836e0d7d93d58000d8d54cfca19ae13"
}
}
Once you’ve obtained a network token through Apple Pay, the payload needs to be passed ‘as is’ (that is, without decryption), after which we extract the network token for you.
You pass the token fields as key-value pairs under payment_method.additional_details
in the Create Authorization request. Make sure to also include all fields from the token header
object using key names as shown in the example below (include just the fields, not the entire object). Here’s a sample request body:
{
"payment_method": {
"source_type": "ewallet",
"type": "untokenized",
"vendor": "applepay",
"additional_details": {
"data": "DjI8Ez7nPhVo742aGEzABz/TfxCPt9LSdf2/h+0xIgVJbi3fQqd4lv3ogoTI3SQ7vZrDAWI8g2lbd5sflXBHc0z+wSeybsCcqZB3n1edRFXU7+6DYmdhFFWWCejwUc6XZWmsSaVNEQf+Kc0SeYrj8Eskdapj8bYX/QXxXSPqS4IKSjB+f3O0gUXSq7LK/jA9dl+BbWW0l3gXERU6n5rcYndO5rnji...",
"ephemeralPublicKey": "MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEZMzlWOx8Xo8pXl...",
"publicKeyHash": "xrJqUFO2jN5edGS8iETkfNXtwqnwSqRUUrQJBysFpZ8=",
"signature": "MIAGCSqGSIb3DQEHAqCAMIACAQExDzANBglghkgBZQMEAgEFADCABgkqhkiG9w0BBwEAAKCAMIID5j...",
"transactionId": "aa0b77fbb4f64cd3e5deef65177938b2d836e0d7d93d58000d8d54cfca19ae13",
"version": "EC_v1"
}
}
}
Of course, you can use the BodyBuilder to generate sample requests (make sure to choose the eWallet payment type).
You can now complete the transaction by invoking the Create Capture request.
Integrating Google Pay
Integrating Google Pay involves the following:
-
Adding Google Pay to your checkout page.
-
Integrating Google Pay with your PaymentsOS transaction flows.
Adding Google Pay to your Checkout Page
Start by adding Google Pay to your checkout page, as explained in the Google developer documentation. For guidelines that detail how to reference the Google Pay brand within your website, see the brand guidelines published on the Google developer documentation site.
Now proceed to integrate Google Pay with PaymentsOS.
Integrating Google Pay with PaymentsOS
Once you’ve added Google Pay to your checkout page, you are ready to integrate Google Pay with PaymentsOS. Proceed as follows:
- Grab the token that Google returns to your web page when the customer chooses to pay with Google Pay. Here’s a sample token:
{
"protocolVersion":"ECv2",
"signature":"MEQCIH6Q4OwQ0jAceFEkGF0JID6sJNXxOEi4r+mA7biRxqBQAiAondqoUpU/bdsrAOpZIsrHQS9nwiiNwOrr24RyPeHA0Q\u003d\u003d",
"intermediateSigningKey": {
"signedKey": "{\"keyExpiration\":\"1542323393147\",\"keyValue\":\"MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE/1+3HBVSbdv+j7NaArdgMyoSAM43yRydzqdg1TxodSzA96Dj4Mc1EiKroxxunavVIvdxGnJeFViTzFvzFRxyCw\\u003d\\u003d\"}",
"signatures": ["MEYCIQCO2EIi48s8VTH+ilMEpoXLFfkxAwHjfPSCVED/QDSHmQIhALLJmrUlNAY8hDQRV/y1iKZGsWpeNmIP+z+tCQHQxP0v"]
},
"signedMessage":"{\"tag\":\"jpGz1F1Bcoi/fCNxI9n7Qrsw7i7KHrGtTf3NrRclt+U\\u003d\",\"ephemeralPublicKey\":\"BJatyFvFPPD21l8/uLP46Ta1hsKHndf8Z+tAgk+DEPQgYTkhHy19cF3h/bXs0tWTmZtnNm+vlVrKbRU9K8+7cZs\\u003d\",\"encryptedMessage\":\"mKOoXwi8OavZ\"}"
}
- Grab the
intermediateSigningKey
from Google’s token and runJSON.stringify
twice on theintermediateSigningKey
’s value:
JSON.stringify(JSON.stringify({
"signedKey": "{\"keyValue\":\"MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE/1+3HBVSbdv+j7NaArdgMyoSAM43yRydzqdg1TxodSzA96Dj4Mc1EiKroxxunavVIvdxGnJeFViTzFvzFRxyCw==\",\"keyExpiration\":\"4756616787684\"}",
"signatures": [
"MEUCIQDuExYygEgjbdyRHZK2HsRhjl/bOA7xXmaRsSIHI+LD9AIgQR996zrfX4onAszvdaVmQYiBphkQ5nAlc2UXqX/J14E="
]
}));
- Pass the token’s fields as key-value pairs in the
payment_method.additional_details
field of the Create Authorization request. Here’s a sample request body (notice that the stringifiedintermediateSigningKey
value must be passed as astring
):
{
"payment_method": {
"source_type": "ewallet",
"type": "untokenized",
"vendor": "googlepay",
"additional_details": {
"signature": "MIAGCSqGSIb3DQEHAqCAMIACAQExDzANBglghkgBZQMEAgEFADCABgkqhkiG9w0BBwEAAKCAMIID5j...",
"protocol_version": "ECv2",
"intermediate_signing_key": "{\"signedKey\":\"{\\\"keyExpiration\\\":\\\"1542323393147\\\",\\\"keyValue\\\":\\\"MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE/1+3HBVSbdv+j7NaArdgMyoSAM43yRydzqdg1TxodSzA96Dj4Mc1EiKroxxunavVIvdxGnJeFViTzFvzFRxyCw\\\\u003d\\\\u003d\\\"}\",\"signatures\":[\"MEYCIQCO2EIi48s8VTH+ilMEpoXLFfkxAwHjfPSCVED/QDSHmQIhALLJmrUlNAY8hDQRV/y1iKZGsWpeNmIP+z+tCQHQxP0v\"]}",
"signed_message": "{\"encryptedMessage\":\"1Dc4mm6z7TopQ3FnWAyDFDYj77HencFTK/Il1vT3JojLf9Gn/BpluT/Qs1aeRoTLEuA4k9zOIYJXsbi72efNSwrKBl+hBMWJFO50YIG50b9vs/OQu6pKYke0T1PuqGdAhmmYI0/Av7iMQHkGiU/s6Ds8TwP9BMzYUk+rNtyyWBtfHViALMiCda02Sjz7V4Cv5GZXadNDLMN0ebqCaHzWXkw0NPT8HIuS6mvpDxUDOREIXwQeNXK+Wjl+H7SkGVdBA6T8goJH/u+Bx+G1ae4DukQ7aqS+WqzzR0QIebv1Sq1J/UnC71oInEyWtjDZz4EFhPMZsqBAcGC3FUmdhwYE9nx9jsU3JNCpNmOjd8hOPOY5foHTADDNhRhzskNVZ3w6N0YtM61Ao+rd2utd4WGtu8vhZlHHbKO+4lWLmdr0HuCM/YBQioHDngeSXUmeCAlCxQ\\u003d\\u003d\",\"ephemeralPublicKey\":\"BAHVfSI4qx/YftOPE8HiUXuVwcEiHkPpdXsqAzNdhe5aTw/Ihn/B6S+JOz3JjPO+pOigiUNPtPflc4J04D44FwA\\u003d\",\"tag\":\"7LK+7CZ0kvsBiXN3ClFEUD3KnjYAn8aK/Lyqg3mw1C8\\u003d\"}"
}
}
}
Of course, you can use the BodyBuilder to generate sample requests (make sure to choose the eWallet payment type).
You can now complete the transaction by invoking the Create Capture request.
Handling the Charge Request Response for Cash Transactions
If the charge request is successful, then the provider will return a charge response containing:
- A
status
ofpending
. - The expiration date of the Payment Receipt.
- A
provider_data.document
object with href links to the Payment Receipt in HTML format and possibly the Payment Receipt in PDF format.
Note that the provider_data.additional_information
field may contain a barcode, for receipt tracking purposes.
Now direct your customer to one, or both of the transaction payment receipts, so that they can print the receipt. Your customer should then take the payment receipt to the relevant Payment Office and pay for their purchase, before the expiration date.
When the provider notifies us that your customer has paid, we will update the transaction status. If no payment notification is received by the expiration date then the transaction will be considered as failed.
Testing
The following table lists the card numbers you can use for testing.
Test Card Number | Expiration Month | Expiration Year | CVV / CVC2 | Cardholder Name | 3DS Enrolled | Payment Status | Error received |
4652035440667037 | 08 | Next year | 971 | Any name | No | Success payment | - |
4051060000000178 | 12 | Next year | 895 | Any name | Yes | Success payment | - |
5105105105105100 | 03 | Next year | 235 | Any name | No | Success payment | - |
5547629478785897 | 07 | Next year | 123 | Any name | Yes | Success payment | - |
2200204265570145 | 03 | Next year | 235 | Any name | No | Success payment | - |
2200201673687446 | 07 | Next year | 123 | Any name | Yes | Success payment | - |
5563693062030796 | 03 | Up to 20 years in the future | 235 | Any name | No | Failed payment | Stolen card, pick up |
4921301010459253 | 03 | Up to 20 years in the future | 235 | Any name | No | Failed payment | Default error |
2200200000000000 | 03 | Up to 20 years in the future | 235 | Any name | No | Failed payment | Non Sufficient Funds |
[snippet](../snippets/html/provider-testing/payu-russia-test-cards >}}
You can use the following public sandbox test Merchant account without registering:
POS Currency | MERCHANT_CODE | SECRET_KEY | ||
---|---|---|---|---|
RUB | payostst | paymentsos_test1# |