• Главная
  • Карта сайта
Не найдено

Документація (API)

  1. Крок 1. Налаштування облікового запису інтернет-магазину
  2. Крок 2. Формування платіжної форми
  3. Крок 3. Захист платіжної форми
  4. Приклад (PHP):
  5. Крок 4. Вибір доступних способів оплати
  6. Електронні гроші
  7. Крок 6. Обробка повідомлення про результат оплати
  8. Перевірка джерела даних
  1. Налаштування облікового запису інтернет-магазину
  2. Формування платіжної форми
  3. Захист платіжної форми
  4. Вибір доступних способів оплати
  5. Налаштування відправки чеків в податкову відповідно до ФЗ-54
  6. Обробка повідомлення про результат оплати
  7. Налаштування звітів
  8. Генерація посилання на оплату

Крок 1. Налаштування облікового запису інтернет-магазину

Після реєстрації облікового запису необхідно вказати інформацію про магазин, яка буде відображатися клієнтам при оплаті. Зробити це можна в особистому кабінеті в розділі «Налаштування», вкладка «Про магазині»:

Крок 2. Формування платіжної форми

Після того, як покупець вибере товари на сайті інтернет-магазину і сформує кошик замовлення, інтернет-магазин направляє його на сторінку оплати замовлення. Сторінка оплати повинна містити платіжну форму з параметрами замовлення.
Платіжна форма містить ідентифікатор інтернет-магазину, суму і валюту замовлення, а також посилання на сторінки інтернет-магазину, на які буде відправлений покупець після успішної або не успішною оплати, наприклад:

<Form method = "post" action = "https://wl.walletone.com/checkout/checkout/Index"> <input name = "WMI_MERCHANT_ID" value = "123456789012" /> <input name = "WMI_PAYMENT_AMOUNT" value = "100.00" /> <input name = "WMI_CURRENCY_ID" value = "643" /> <input name = "WMI_DESCRIPTION" value = "Оплата демонстраційного замовлення" /> <input name = "WMI_SUCCESS_URL" value = "https: // myshop .ru / w1 / paid.php "/> <input name =" WMI_FAIL_URL "value =" https://myshop.ru/w1/fail.php "/> <input type =" submit "/> </ form>

Платіжна форма може містити додаткові параметри, які впливають на доступні способи оплати, термін дії замовлення, мова торгового інтерфейсу і т.п. Повний перелік параметрів платіжної форми наведено нижче:

Назва параметра Опис WMI_MERCHANT_ID Ідентифікатор інтернет-магазину, отриманий при реєстрації. WMI_PAYMENT_AMOUNT Сума замовлення - число округлене до 2-х знаків після «коми», як роздільник використовується «точка». Наявність 2-х знаків після «коми» обов'язково. WMI_CURRENCY_ID Ідентифікатор валюти (ISO 4217):
  • 643 - Російські рублі
  • 710 - Південно-Африканські ранди
  • 840 - Американські долари
  • 978 - Євро
  • 980 - Українські гривні
  • 398 - Казахстанські тенге
  • 974 - Білоруські рублі
  • 972 - Таджицькі сомоні
  • 985 - Польський злотий
WMI_PAYMENT_NO Ідентифікатор замовлення в системі обліку інтернет-магазину. Значення даного параметра має бути унікальним для кожного замовлення. WMI_DESCRIPTION Опис замовлення (список товарів і т.п.) - відображається на сторінці оплати замовлення, а також в історії платежів покупця. Максимальна довжина 255 символів. WMI_SUCCESS_URL
WMI_FAIL_URL Адреси (URL) сторінок інтернет-магазину, на які буде відправлений покупець після успішної або неуспішної оплати. WMI_EXPIRED_DATE Термін закінчення оплати. Дата вказується в західно-європейському часовому поясі (UTC + 0) і повинна бути більше поточної (ISO 8601), наприклад: 2013-10-29T11: 39: 26.

Зверніть увагу: термін дії рахунку не може перевищувати 30 днів з моменту виставлення!

WMI_PTENABLED
WMI_PTDISABLED За допомогою цих параметрів можна керувати доступними способами оплати. Детальніше в розділі « Вибір доступних способів оплати ». WMI_RECIPIENT_LOGIN Логін платника за замовчуванням. Значення даного параметра буде автоматично підставлятися в поле логіна при авторизації. Можливі формати: електронна пошта, номер телефону в міжнародному форматі. WMI_CUSTOMER_PHONE Номер мобільного телефону платника в міжнародному форматі. Наприклад, +71234567890. Значення цього поля буде використовуватися в наступних цілях:
  • автоматично підставлятися в форми деяких способів оплати;
  • використовуватися для визначення країни платника;
  • використовуватися для пошуку рахунків клієнта в банках і системах електронних грошей.
WMI_CUSTOMER_FIRSTNAME
WMI_CUSTOMER_LASTNAME
WMI_CUSTOMER_EMAIL Ім'я, прізвище та e-mail платника. Значення даних параметрів будуть автоматично підставлятися в форми деяких способів оплати. WMI_CULTURE_ID Мова інтерфейсу визначається автоматично, але можна поставити його:
  • ru-RU - російська;
  • en-US - англійська.
WMI_AUTO_LOCATION Дозволяє показувати користувачеві способи оплати, відповідні його країні перебування.
  • 0 - відображаються способи без прив'язки до країни користувача;
  • 1 - країна користувача і відображення способів визначається по IP.
WMI_SIGNATURE Підпис платіжної форми, сформована з використанням «секретного ключа» інтернет-магазину. Необхідність перевірки цього параметра встановлюється в настройках інтернет-магазину. Детальніше в розділі « Захист платіжної форми ». WMI_AUTO_ADJUST_AMOUNT Дозволяє оплатити інвойс навіть якщо сума платежу відрізняється від суми інвойсу. Сума інвойсу при цьому прирівнюється до фактичного платежу.
  • 0 - чекати надходження повної суми інвойсу;
  • 1 - вважати інвойс оплаченим при надходженні будь-якої суми.

Параметр не можна використовувати разом з WMI_ORDER_ITEMS

... Всі інші поля платіжної форми, які не мають префікс «WMI_», будуть збережені і передані в інтернет-магазин.

Щоб уникнути проблем при використанні національних символів, при передачі параметра WMI_DESCRIPTION існує можливість кодування параметра рядком BASE64 (UTF-8).

Формат передачі: BASE64: <кодоване в BASE64 значення>

Приклад: BASE64: 0J7Qv9C70LDRgtCwINC30LDQutCw0LfQsA ==

Зверніть увагу! Якщо ви зареєстрували персональний проект, то на сторінці платіжної форми буде відображатися інформація про те, що платіж приймається на користь фізичної особи.

В тестовому режимі використовуються спеціальні платіжні інструменти. Рахунок буде оплачений, але руху грошових коштів по балансу не відбудеться. Види інструментів: TestCardUSD, TestCardEUR, TestCardRUB.

Параметри CardholderName, ExpiredDate, CVV відповідають загальним умовам валідації. Обов'язковий параметр Email (може передаватися як WMI_CUSTOMER_EMAIL).

Наводимо список карт і відповідних моделей поведінки:

  • 5457 2100 0100 0019 - Успішна оплата, без 3DS
  • 5457 2100 0100 0043 - Успішна оплата, c 3DS
  • 4024 0071 0471 6096 - Успішна оплата, помилка при поверненні
  • 4847 0000 6602 5312 - Неуспішна оплата, невірні дані карти
  • 5329 3728 6227 2032 - Неуспішна оплата, фрод
  • 4189 0692 9106 7072 - Неуспішна оплата, минулий карта
  • 5326 7268 9031 5936 - Неуспішна оплата, невірний власник
  • 5304 4927 9124 6052 - Неуспішна оплата, невірний cvv
  • 5312 2498 1443 1065 - Неуспішна оплата, картка не підтримується
  • 4539 6574 9236 2685 - Неуспішна оплата, недостатньо коштів
  • 4716 7187 0398 6236 - Неуспішна оплата, помилка авторизації карти

Кожному виду помилки відповідає код, що повертається в складі запиту.

Зверніть увагу: в тестовому режимі передача інших способів оплати неможлива. У цьому випадку формування платіжної форми завершиться з помилкою.

Крок 3. Захист платіжної форми

Параметри замовлення інтернет-магазину передаються в Єдину касу через web-браузер покупця, тому, щоб запобігти зміні параметрів на стороні покупця, інтернет-магазину необхідно підписати параметри платіжної форми.

Для цього інтернет-магазину необхідно додати в платіжну форму параметр WMI_SIGNATURE, сформований з використанням обраного методу формування ЕЦП і «секретного ключа» інтернет-магазину.

Метод формування ЕЦП і «секретний ключ» інтернет-магазину можна налаштувати в особистому кабінеті Єдиної каси в розділі «Налаштування» у вкладці «Інтеграція», як показано на малюнку:

Зверніть увагу! Після генерації секретного ключа обов'язково натисніть кнопку «Зберегти» внизу сторінки. Це необхідна умова для коректної роботи ЕЦП.

Параметр WMI_SIGNATURE формується шляхом об'єднання значень всіх інших параметрів форми в алфавітному порядку їх імен (без урахування регістру) з додаванням в кінець «секретного ключа»
інтернет-магазину. Якщо форма містить кілька полів з однаковими іменами, такі поля сортуються в алфавітному порядку їх значень.

Отримане після об'єднання параметрів і «секретного ключа» значення, представлене в кодуванні Windows-1251, хешіруется обраним методом формування ЕЦП і його байтовое уявлення кодується в Base64.

WMI_SIGNATURE = Base64 (Byte (MD5 (Windows1251 (Sort (Params) + SecretKey))));

Приклад (PHP):

<? Php // Секретний ключ інтернет-магазину $ key = "XkZMYW56NzVbNV1aekxGNVxvT3xwVHExZ005"; $ Fields = array (); // Додавання полів форми в асоціативний масив $ fields [ "WMI_MERCHANT_ID"] = "119175088534"; $ Fields [ "WMI_PAYMENT_AMOUNT"] = "100.00"; $ Fields [ "WMI_CURRENCY_ID"] = "643"; $ Fields [ "WMI_PAYMENT_NO"] = "12345-001"; $ Fields [ "WMI_DESCRIPTION"] = "BASE64:". Base64_encode ( "Payment for order # 12345-001 in MYSHOP.com"); $ Fields [ "WMI_EXPIRED_DATE"] = "2019-12-31T23: 59: 59"; $ Fields [ "WMI_SUCCESS_URL"] = "https://myshop.com/w1/success.php"; $ Fields [ "WMI_FAIL_URL"] = "https://myshop.com/w1/fail.php"; $ Fields [ "MyShopParam1"] = "Value1"; // Розширені можливості пошуку $ fields [ "MyShopParam2"] = "Value2"; // інтернет-магазину теж беруть участь $ fields [ "MyShopParam3"] = "Value3"; // при формуванні підпису! // Якщо потрібно задати тільки певні способи оплати, раськоментіруйте цього рядка і перерахуйте необхідні способи оплати. // $ fields [ "WMI_PTENABLED"] = array ( "UnistreamRUB", "SberbankRUB", "RussianPostRUB"); // Сортування значень всередині полів foreach ($ fields as $ name => $ val) {if (is_array ($ val)) {usort ($ val, "strcasecmp"); $ Fields [$ name] = $ val; }} // Формування повідомлення, шляхом об'єднання значень форми, // відсортованих по іменах ключів в порядку зростання. uksort ($ fields, "strcasecmp"); $ FieldValues ​​= ""; foreach ($ fields as $ value) {if (is_array ($ value)) foreach ($ value as $ v) {// Конвертація з поточного кодування (UTF-8) // необхідна тільки якщо кодування магазину відмінна від Windows-1251 $ v = iconv ( "utf-8", "windows-1251", $ v); $ FieldValues. = $ V; } Else {// Конвертація з поточного кодування (UTF-8) // необхідна тільки якщо кодування магазину відмінна від Windows-1251 $ value = iconv ( "utf-8", "windows-1251", $ value); $ FieldValues. = $ Value; }} // Формування значення параметра WMI_SIGNATURE, шляхом // обчислення відбитку, сформованого вище повідомлення, // за алгоритмом MD5 і подання його в Base64 $ signature = base64_encode (pack ( "H *", md5 ($ fieldValues. $ Key)) ); // Додавання параметра WMI_SIGNATURE в словник параметрів форми $ fields [ "WMI_SIGNATURE"] = $ signature; // Формування HTML-коду платіжної форми print "<form action = 'https: //wl.walletone.com/checkout/checkout/Index' method = 'POST'>"; foreach ($ fields as $ key => $ val) {if (is_array ($ val)) foreach ($ val as $ value) {print "$ key: <input type = 'text' name = '$ key' value = '$ value' /> "; } Else print "$ key: <input type = 'text' name = '$ key' value = '$ val' />"; } Print "<input type = 'submit' /> </ form>"; ?>

Приклад (Perl):

#! / Usr / bin / perl use Digest :: MD5 qw (md5_base64); use MIME :: Base64; # Секретний ключ інтернет-магазину $ key = "XXXXXXXXXXXX-XXXXXXXX-XXXXXXXXXXXX"; my% fields; # Додавання полів форми в асоціативний масив $ fields { "WMI_MERCHANT_ID"} = "123456789012"; $ Fields { "WMI_PAYMENT_AMOUNT"} = "100.00"; $ Fields { "WMI_CURRENCY_ID"} = "840"; $ Fields { "WMI_PAYMENT_NO"} = "12345-001"; $ Fields { "WMI_DESCRIPTION"} = encode_base64 ( "Payment for order # 12345-001 in MYSHOP.com", ""); $ Fields { "WMI_EXPIRED_DATE"} = "2019-12-31T23: 59: 59"; $ Fields { "WMI_SUCCESS_URL"} = "https://myshop.com/w1/success.php"; $ Fields { "WMI_FAIL_URL"} = "https://myshop.com/w1/fail.php"; $ Fields { "MyShopParam1"} = "Value1"; # Розширені можливості пошуку $ fields { "MyShopParam2"} = "Value2"; # Інтернет-магазину теж беруть участь $ fields { "MyShopParam3"} = "Value3"; # При формуванні підпису! # Формування повідомлення, шляхом об'єднання значень форми, # відсортованих по іменах ключів в порядку зростання. my $ fieldValues ​​= ""; for my $ key (sort {lc ($ a) cmp lc ($ b)} keys% fields) {$ fieldValues. = $ fields {$ key}; } # Формування значення параметра WMI_SIGNATURE, шляхом # обчислення відбитку, сформованого вище повідомлення, # за алгоритмом MD5 і подання його в Base64. my $ signature = md5_base64 ($ fieldValues, $ key). '=='; # Додавання параметра WMI_SIGNATURE в словник параметрів форми. $ Fields { "WMI_SIGNATURE"} = $ signature; # Формування HTML-коду сторінки з платіжної формою. print "Content-type: text / html; charset = UTF-8nn"; print "<form action =" https://wl.walletone.com/checkout/checkout/Index "method =" POST ">"; for my $ key (sort {lc ($ a) cmp lc ($ b)} keys% fields) {print "$ key: <input name =" $ key "value =" $ fields {$ key} "/>" ; } Print "<input type =" submit "/> </ form> n";

Приклад (С #):

using System; using System.Web; using System.Text; using System.Security.Cryptography; using System.Collections.Generic; public class PaymentForm: IHttpHandler {public void ProcessRequest (HttpContext context) {// Секретний ключ інтернет-магазину string merchantKey = "XXXXXXXXXXXX-XXXXXXXX-XXXXXXXXXXXX" // Додавання полів форми в словник, сортовані за іменами ключів. SortedDictionary <string, string> formField = new SortedDictionary <string, string> (); formField.Add ( "WMI_MERCHANT_ID", "123456789012"); formField.Add ( "WMI_PAYMENT_AMOUNT", "100.00"); formField.Add ( "WMI_CURRENCY_ID", "643"); formField.Add ( "WMI_PAYMENT_NO", "12345-001"); formField.Add ( "WMI_DESCRIPTION", "BASE64:" + Convert.ToBase64String (Encoding.UTF8.GetBytes ( "Payment for order # 12345-001 in MYSHOP.com"))); formField.Add ( "WMI_EXPIRED_DATE", "2019-12-31T23: 59: 59"); formField.Add ( "WMI_SUCCESS_URL", "https://myshop.com/w1/success.php"); formField.Add ( "WMI_FAIL_URL", "https://myshop.com/w1/fail.php"); formField.Add ( "MyShopParam1", "Value1"); // Розширені можливості пошуку formField.Add ( "MyShopParam2", "Value2"); // магазину теж беруть участь formField.Add ( "MyShopParam3", "Value3"); // при формуванні підпису! // Формування повідомлення, шляхом об'єднання значень форми, // відсортованих по іменах ключів в порядку зростання і // додавання до нього "секретного ключа" інтернет-магазину StringBuilder signatureData = new StringBuilder (); foreach (string key in formField.Keys) {signatureData.Append (formField [key]); } // Формування значення параметра WMI_SIGNATURE, шляхом // обчислення відбитку, сформованого вище повідомлення, // за алгоритмом MD5 і подання його в Base64 string message = signatureData.ToString () + merchantKey; Byte [] bytes = Encoding.GetEncoding (1 251) .GetBytes (message); Byte [] hash = new MD5CryptoServiceProvider (). ComputeHash (bytes); string signature = Convert.ToBase64String (hash); // Додавання параметра WMI_SIGNATURE в словник параметрів форми formField.Add ( "WMI_SIGNATURE", signature); // Формування платіжної форми StringBuilder output = new StringBuilder (); output.AppendLine ( "<form method =" POST "action =" https://wl.walletone.com/checkout/checkout/Index ">"); foreach (string key in formField.Keys) {output.AppendLine (String.Format ( "{0}: <input name =" {0} "value =" {1} "/>", key, formField [key]) ); } Output.AppendLine ( "<input type =" submit "/> </ form>"); context.Response.ContentType = "text / html; charset = UTF-8"; context.Response.Write (output.ToString ()); }}

Приклад Python:

from collections import defaultdict import binascii from hashlib import md5 def get_signature (params, secret_key): "" "Base64 (Byte (MD5 (Windows1251 (Sort (Params) + SecretKey)))) params - list of tuples [( 'WMI_CURRENCY_ID', 643), ( 'WMI_PAYMENT_AMOUNT', 10)] "" "icase_key = lambda s: unicode (s) .lower () lists_by_keys = defaultdict (list) for key, value in params: lists_by_keys [key] .append (value) str_buff = '' for key in sorted (lists_by_keys, key = icase_key): for value in sorted (lists_by_keys [key], key = icase_key): str_buff + = unicode (value) .encode ( '1251') str_buff + = secret_key md5_string = md5 (str_buff) .digest () return binascii.b2a_base64 (md5_string) [: - 1]

Приклад NodeJS:

var iconv = require ( 'iconv-lite'); var crypto = require ( 'crypto'); // Секретний ключ інтернет-магазину var key = 'XXXXXXXXXXXX-XXXXXXXX-XXXXXXXXXXXX'; var fields = {WMI_MERCHANT_ID: '123456789012', WMI_PAYMENT_AMOUNT: '100.00', WMI_CURRENCY_ID: '643', WMI_PAYMENT_NO: '12345-001', WMI_DESCRIPTION: 'BASE64:' + new Buffer ( 'Payment for order # 12345-001 in MYSHOP .com '). toString (' base64 '), WMI_EXPIRED_DATE:' 2019-12-31T23: 59: 59 ', WMI_SUCCESS_URL:' https://myshop.com/w1/success.php ', WMI_FAIL_URL:' https: / /myshop.com/w1/fail.php ', // Якщо потрібно задати тільки певні способи оплати, раськоментіруйте цього рядка і перерахуйте необхідні способи оплати. // WMI_PTENABLED: [ 'UnistreamRUB', 'SberbankRUB', 'RussianPostRUB'], MyShopParam1: 'Value1', MyShopParam2: 'Value2', MyShopParam3: 'Value3'}; var comparator = function (a, b) {var a = a.toLowerCase (); var b = b.toLowerCase (); return a> b? 1: a '; }; var inputs = ''; var values ​​= ''; // Формування повідомлення, шляхом об'єднання значень форми, // відсортованих по іменах ключів в порядку зростання Object.keys (fields) .sort (comparator) .forEach (function (name) {var value = fields [name]; if (Array. isArray (value)) {values ​​+ = value.sort (comparator) .join ( ''); inputs + = value.map (function (val) {return createInput (name, val);}). join ( '') ;} else {values ​​+ = value; inputs + = createInput (name, value);}}); // Формування значення параметра WMI_SIGNATURE, шляхом // обчислення відбитку, сформованого вище повідомлення, // за алгоритмом MD5 і подання його в Base64 inputs + = createInput ( 'WMI_SIGNATURE', crypto.createHash ( 'md5'). Update (iconv.encode (values ​​+ key, 'win1251')). digest ( 'base64')); // Формування HTML-коду платіжної форми. console.log ( '');

Переконайтеся, що всі параметри, які присутні в платіжній формі, за винятком WMI_SIGNATURE, беруть участь при формуванні підпису. Наприклад, якщо кнопка «submit» має встановлений атрибут «name», платіжна форма також буде містити значення атрибута «value» цієї кнопки.

Переконайтеся, що ваша функція MD5 повертає масив байт, а не їх подання до HEX. Якщо все зроблено правильно, довжина параметра WMI_SIGNATURE становить рівно 24 символу.

Якщо параметр WMI_DESCRIPTION містить кирилицю, переконайтеся, що форма відправляється на сервер в кодуванні UTF-8. Для цього форма повинна мати атрибут accept-charset = "UTF-8".

Крок 4. Вибір доступних способів оплати

Після передачі платіжної форми в Єдину касу покупець може вибрати зручний для нього спосіб оплати. Інтернет-магазин може обмежити список доступних способів оплати або явно визначити один з них.

Для управління доступними способами оплати використовуються параметри платіжної форми WMI_PTENABLED і WMI_PTDISABLED. Кожен з цих полів може бути присутнім в платіжній формі кілька разів і повинен містити один із способів оплати.

Наприклад, це замовлення можна оплатити тільки CreditCard:

<Form method = "post" action = "https://wl.walletone.com/checkout/checkout/Index" accept-charset = "UTF-8"> <input name = "WMI_MERCHANT_ID" value = "123456789012" /> <input name = "WMI_PAYMENT_AMOUNT" value = "100.00" /> <input name = "WMI_CURRENCY_ID" value = "643" /> <input name = "WMI_DESCRIPTION" value = "Оплата демонстраційного замовлення" /> <input name = "WMI_PTENABLED "value =" CreditCardRUB "/> <input name =" WMI_PTENABLED "value =" CreditCardUSD "/> <input name =" WMI_PTENABLED "value =" CreditCardEUR "/> <input name =" WMI_PTENABLED "value =" CreditCardUAH "/> <input name = "WMI_PTENABLED" value = "CreditCardGLD" /> <input name = "WMI_SUCCESS_URL" value = "https://myshop.ru/w1/paid.php" /> <input name = "WMI_FAIL_URL" value = " https://myshop.ru/w1/fail.php "/> <input type =" submit "/> </ form>

Зверніть увагу: в тестовому режимі передача інших способів оплати неможлива. У цьому випадку формування платіжної форми завершиться з помилкою.

Наступний приклад показує, як заборонити оплату замовлення певним способом:

<Form method = "post" action = "https://wl.walletone.com/checkout/checkout/Index" accept-charset = "UTF-8"> <input name = "WMI_MERCHANT_ID" value = "123456789012" /> <input name = "WMI_PAYMENT_AMOUNT" value = "100.00" /> <input name = "WMI_CURRENCY_ID" value = "643" /> <input name = "WMI_DESCRIPTION" value = "Оплата демонстраційного замовлення" /> <input name = "WMI_PTDISABLED "value =" W1RUB "/> <input name =" WMI_SUCCESS_URL "value =" https://myshop.ru/w1/paid.php "/> <input name =" WMI_FAIL_URL "value =" https: // myshop. ru / w1 / fail.php "/> <input type =" submit "/> </ form>

Електронні гроші

Способ оплати Ідентифікатор Єдиний гаманець WalletOne W1 RUB WalletOneRUB W1 UAH WalletOneUAH W1 USD WalletOneUSD W1 EUR WalletOneEUR W1 ZAR WalletOneZAR W1 BYR WalletOneBYR W1 GEL WalletOneGEL W1 KZT WalletOneKZT W1 PLN WalletOnePLN W1 TJS WalletOneTJS Яндекс.Деньги Яндекс.Деньги YandexMoneyRUB QIWI Гаманець QIWI Гаманець QiwiWalletRUB B- pay B-Pay BPayMDL CashU CashU CashUUSD EasyPay EasyPay EasyPayBYR LiqPay Money LiqPayMoney LiqPayMoneyUAH LiqPayMoneyUAH Google Wallet GoogleWalletUSD OKPAY OKPAY OkpayUSD OKPAY OkpayRUB мікропозік Kviku KvikuRUB

мобільна комерція

Способ оплати Ідентифікатор Мобільний платіж «Білайн» (Росія) BeelineRUB Мобільний платіж «МТС» (Росія) MtsRUB Мобільний платіж «Мегафон» (Росія) MegafonRUB Мобільний платіж «Tele2» (Росія) Tele2RUB Мобільний платіж «Yota» (Росія) YotaRUB КиївСтар. Мобільні гроші (Україна) KievStarUAH

готівкові

Способ оплати Ідентифікатор Платіжні термінали CashTerminal Платіжні термінали Беларуси CashTerminalBYR Платіжні термінали Грузії CashTerminalGEL Платіжні термінали Казахстану CashTerminalKZT Платіжні термінали Молдови CashTerminalMDL Платіжні термінали России CashTerminalRUB Платіжні термінали України CashTerminalUAH Платіжні термінали Таджикистану CashTerminalTJS Платіжні термінали ПАР CashTerminalZAR ATM ATM Прийом готівкі (UAH) AtmUAH Automated Teller Machine AtmZAR салони зв'язку MobileRetails салони зв'язку «Евросеть» EurosetRUB салони зв'язку «зв'язковий» SvyaznoyRUB салони зв'язку «Цифроград» CifrogradRUB салони зв'язку «Стільнікові й світ CellularWorldRUB Відділення банків BankOffice Відділення Ощадбанку Росії SberbankRUB Відділення Ощадбанку в Казахстані SberbankKZT Відділення Приватбанку в Україні PrivatbankUAH Відділення Правекс-Банку в Україні PravexBankUAH Відділення УкрСиббанку в Україні UkrsibBankUAH Відділення Казкоммерцбанка Казахстані KazkomBankKZT Відділення Liberty Bank в Грузії LibertyBankGEL Bank Branch Deposit BranchZAR Відділення Пошти Росії RussianPostRUB грошові перекази MoneyTransfer грошові перекази «ЛІДЕР» LiderRUB грошові перекази Unistream (RUB) UnistreamRUB грошові перекази Unistream (USD) UnistreamUSD

безготівкові

Спосіб оплати Ідентифікатор Інтернет-банки OnlineBank Інтернет-банк «Альфа-Клік» ( «Альфа-Банк») AlfaclickRUB Інтернет-банк «Тінькофф» TinkoffRUB Інтернет-банк «Приват24» Privat24UAH Інтернет-банк «PSB-Retail» ( «Промсвязьбанк») PsbRetailRUB Ощадбанк ОнЛ @ йн SberOnlineRUB Faktura.ru FakturaruRUB Інтернет-банк Банку «Русский Стандарт» RsbRUB Єдине Розрахункова інформаційний простір (ЕРІП) EripBYR Electronic funds transfer EftZAR Банківський переказ BankTransfer Банківський переказ в китайських юанях BankTransferCNY Банківський переказ в євро BankTransferEUR Банківський переказ в ларі BankTransferGEL Банківський переказ в тенге BankTransferKZT Ба нковскій переклад в леях BankTransferMDL Банківський переказ в польських злотих BankTransferPLN Банківський переказ в рублях BankTransferRUB Банківський переказ у гривнях BankTransferUAH Банківський переказ в доларах BankTransferUSD Банківські карти Карти Smartivi SmartiviGEL VISA VISA VISA BYR CreditCardBYR VISA RUB CreditCardRUB VISA UAH CreditCardUAH VISA USD CreditCardUSD VISA EUR CreditCardEUR MasterCard MasterCard MasterCard BYR CreditCardBYR MasterCard RUB CreditCardRUB MasterCard UAH CreditCardUAH MasterCard USD CreditCardUSD MasterCard EUR CreditCardEUR Maestro Maestro Maestro RUB CreditCardRUB СВІТ СВІТ CreditCardRUB

Тестові способи оплати

Спосіб оплати Ідентифікатор TestCardEUR TestCardEUR TestCardRUB TestCardRUB TestCardUSD TestCardUSD

Крок 5. Налаштування відправки чеків в податкову відповідно до ФЗ-54

Для додавання можливості передачі даних чека необхідно внести невеликі доопрацювання при відправці запиту на створення інвойсу , А саме, в обов'язковому порядку потрібно передавати:

  • дані платника, WMI_CUSTOMER_PHONE і WMI_CUSTOMER_EMAIL (допускається передача тільки одного з параметрів);
  • інформацію про товар (послугу), WMI_ORDER_ITEMS.

Параметр WMI_ORDER_ITEMS є json об'єкт наступної структури:

[{ "Title": "Position 1", "Quantity": 3.00, "UnitPrice": 150.00, "SubTotal": 450.00, "TaxType": "tax_ru_3", "Tax": 45.00}, { "Title": " Position 2 "," Quantity ": 1.00," UnitPrice ": 70.00," SubTotal ": 70.00," TaxType ":" tax_ru_3 "," Tax ": 7.00}]

Містить колекцію об'єктів, що характеризують конкретний товар в чеку.

об'єкт товару

{ "Title": "Position 1", "Quantity": 3.000, "UnitPrice": 150.00, "SubTotal": 450.00, "TaxType": "tax_ru_3", "Tax": 45.00} Параметр Тип Опис Обов'язкова вимога Title Рядок, 128 символів Опис товару Та Quantity Десяткове число з точністю
3 символу після коми Кількість товару Та UnitPrice Десяткове число з точністю
2 символи після коми Ціна одиниці товару Та SubTotal Десяткове число з точністю
2 символи після коми Ціна товару Та TaxType Рядок, 9 символів

Ставка ПДВ, можливі значення:

  • tax_ru_1 - без ПДВ;
  • tax_ru_2 - ПДВ за ставкою 0%;
  • tax_ru_3 - ПДВ чека за ставкою 10%;
  • tax_ru_4 - ПДВ чека за ставкою 18%;
  • tax_ru_5 - ПДВ чека за розрахунковою ставкою 10/110;
  • tax_ru_6 - ПДВ чека за розрахунковою ставкою 18/118;
  • tax_ru_7 - ПДВ чека за ставкою 20%;
  • tax_ru_8 - ПДВ чека за розрахунковою ставкою 20/120;
Так Tax Десяткове число з точністю
2 символи після коми Сума податку Та

Після успішної оплати рахунку зазначені дані будуть відправлені до податкової інспекції.

Крок 6. Обробка повідомлення про результат оплати

Після того, як покупець завершить оплату замовлення, Єдина каса виконує POST-запит на адресу, вказану в даних для відправки результатів транзакції в налаштуваннях інтернет-магазину. Запит містить параметри платіжної форми, інформацію про результат оплати і деякі додаткові параметри:

Назва параметра Опис WMI_MERCHANT_ID Ідентифікатор інтернет-магазину. WMI_PAYMENT_AMOUNT Сума замовлення WMI_COMMISSION_AMOUNT Сума утриманої комісії WMI_CURRENCY_ID Ідентифікатор валюти замовлення (ISO 4217) WMI_TO_USER_ID двенадцатізначний номер гаманця платника. WMI_PAYMENT_NO Ідентифікатор замовлення в системі обліку інтернет-магазину. WMI_ORDER_ID Ідентифікатор замовлення в системі обліку Єдиної каси. WMI_DESCRIPTION Опис замовлення. WMI_INVOICE_OPERATIONS json масив з об'єктів INVOICEOPERATION c полями CreateDate, PaymentId, Amount, AmountEntryId. Скоуп інформації про операції в складі інвойсу. Якщо операцій по інвойсу кілька, кожної з них будуть відповідати свої поля. AmountEntryId відповідає TransferId, відображеним в виписці . WMI_SUCCESS_URL
WMI_FAIL_URL Адреси (URL) сторінок інтернет-магазину, на які буде відправлений покупець після успішної або неуспішної оплати. WMI_EXPIRED_DATE Термін закінчення оплати в західно-європейському часовому поясі (UTC + 0). WMI_CREATE_DATE
WMI_UPDATE_DATE Дата створення і зміни замовлення в західно-європейському часовому поясі (UTC + 0). WMI_ORDER_STATE Стан оплати замовлення:
  • Accepted - замовлення оплачений;
WMI_SIGNATURE Підпис повідомлення про оплату, сформована з використанням «секретного ключа» інтернет-магазину. WMI_TEST_MODE_INVOICE Параметр, який передається в складі повідомлень, одержуваних при оплаті тестовими способами . За замовчуванням має значення 1. ... Всі інші параметри платіжної форми, які не мають префікс «WMI_».

Інтернет-магазин повинен обробити запит оповіщення про результат оплати і повернути відповідь. Обробка запиту для інтернет-магазину відбувається також, як ніби він отримав POST-запит від звичайної HTML-форми, тільки замість сторінки він повинен повернути рядок такого змісту:

WMI_RESULT = OK

або

WMI_RESULT = RETRY & WMI_DESCRIPTION = Сервер тимчасово недоступний

Параметр WMI_RESULT у відповіді інтернет-магазину повинен містити результат обробки запиту і може приймати одне з наступних значень:

  • OK - все в порядку, інтернет-магазин обробив повідомлення і прийняв замовлення.
  • RETRY - інтернет-магазин не може в даний момент обробити повідомлення. Єдина каса повторить запит пізніше.

Параметр WMI_DESCRIPTION у відповіді інтернет-магазину може містити коментар, який буде збережений в логах Єдиної каси. Рекомендується повертати його в разі помилки. Значення даного параметра має бути в кодуванні UrlEncode:

#! / Usr / bin / php <? Php function print_answer ($ result, $ description) {print "WMI_RESULT =". strtoupper ($ result). "&"; print "WMI_DESCRIPTION =" .urlencode ($ description); exit (); }?>

З різних причин Єдина каса може не отримати відповідь від інтернет-магазину і відправити повторний запит, інтернет-магазин повинен відповісти на повторний запит також як при першому.

Перевірка джерела даних

Для того, щоб переконатися, що запит надійшов від Єдиної каси і надійшла можна довіряти, інтернет-магазину необхідно обчислити цифровий підпис запиту з використанням свого «секретного ключа» і порівняти її з параметром WMI_SIGNATURE, отриманим в запиті.

Зробити це можна за алгоритмом, описаним в розділі « Захист платіжної форми », Об'єднавши всі значення параметрів запиту (крім WMI_SIGNATURE) в алфавітному порядку їх імен з« секретним ключем »інтернет-магазину і обчисливши хеш-відбиток цього значення обраного методу формування ЕЦП.

Приклад (PHP):

#! / Usr / bin / php <? Php // Секретний ключ інтернет-магазину (налаштовується в кабінеті) $ skey = "XXXXXXXXXXXX-XXXXXXXX-XXXXXXXXXXXX"; // Функція, яка повертає результат в Єдину касу function print_answer ($ result, $ description) {print "WMI_RESULT =". strtoupper ($ result). "&"; print "WMI_DESCRIPTION =". $ description; exit (); } // Перевірка наToLowerCase (); return a> b?
Usr / bin / php <?
Urlencode ($ description); exit (); }?
Usr / bin / php <?
Провайдеры:
  • 08.09.2015

    Batyevka.NET предоставляет услуги доступа к сети Интернет на территории Соломенского района г. Киева.Наша миссия —... 
    Читать полностью

  • 08.09.2015
    IPNET

    Компания IPNET — это крупнейший оператор и технологический лидер на рынке телекоммуникаций Киева. Мы предоставляем... 
    Читать полностью

  • 08.09.2015
    Boryspil.Net

    Интернет-провайдер «Boryspil.net» начал свою работу в 2008 году и на данный момент является одним из крупнейших поставщиков... 
    Читать полностью

  • 08.09.2015
    4OKNET

    Наша компания работает в сфере телекоммуникационных услуг, а именно — предоставлении доступа в сеть интернет.Уже... 
    Читать полностью

  • 08.09.2015
    Телегруп

    ДП «Телегруп-Украина» – IT-компания с 15-летним опытом работы на рынке телекоммуникационных услуг, а также официальный... 
    Читать полностью

  • 08.09.2015
    Софтлинк

    Высокая скоростьМы являемся участником Украинского центра обмена трафиком (UA — IX) с включением 10 Гбит / сек... 
    Читать полностью