Создание инвойса
Для создания invoice на оплату, необходимо отправить зарос в API сервиса по адресу: https://bpa.payanyway.ru/api/invoice?key=***
где invoice - это имя метода key - ключ партнера, будет ему сгенерирован и выдан сервисом ПА ООО “ПЭЙ ЭНИ ВЭЙ”
Через json POST следует передать данные:
{
"signature": "***",
"paymentAmount": 9.00,
"debitMntAccount": номер счета списания,
"creditMntAccount": номер счета пополнения,
"sourceTariffMultiplier": комиссия с продавца,
"mntTransactionId": "***",
"customerEmail": "***@***.**",
"mntSubscriberId": идентификатор покупателя,
"storeCard": true/false,
"inventory": [
{"sellerAccount": "30990009",
"sourceTariffMultiplier": комиссия с продавца,
"sellerInn": "1234",
"sellerName": "ООО Название 1",
"sellerPhone": "71234567890",
"productName": "test1",
"productQuantity": 1,
"productPrice": 0.20,
"productVatCode": 1105,
"po": "***",
"pm": "***"},
{"sellerAccount": "60252006",
"sourceTariffMultiplier": комиссия с продавца,
"sellerInn": "5678",
"sellerName": "ООО Название 2",
"sellerPhone": "71234567890",
"productName": "test2",
"productQuantity": 2,
"productPrice": 4,
"productVatCode": 1105},
{"sellerAccount": "30990009",
"sourceTariffMultiplier": комиссия с продавца,
"sellerInn": "1234",
"sellerName": "ООО Название 1",
"sellerPhone": "71234567890",
"productName": "test3",
"productQuantity": 2,
"productPrice": 0.40,
"productVatCode": 1105,
"po": "***",
"pm": "***"}
]
}
где:
- signature - подпись запроса - должна быть равна md5(debitMntAccount + mntTransactionId + secret). Символ + это конкатенация строк, secret - секретный код партнера, который будет выдан сервисом ПА ООО “ПЭЙ ЭНИ ВЭЙ”
- paymentAmount - общая сумма платежа. Десятичный разделитель - точка с двумя десятичными знаками даже если это нули.
- debitMntAccount - не обязательный параметр - счет списания в Системе МОНЕТА.РУ - необходимо уточнить в коммерческом отделе. Если не указывается, в сигнатуре вместо него следует оставить пустую строку.
- creditMntAccount - счет ПА ООО “ПЭЙ ЭНИ ВЭЙ” в Системе МОНЕТА.РУ, на который необходимо принять денежные средства. Необходимо уточнить в коммерческом отделе.
- sourceTariffMultiplier - не обязательный параметр - размер комиссии с продавца в процентах, разделенных на 100, то есть значение 0.015 соответствует 1,5%. Поле sourceTariffMultiplier для позиции является необязательным и если указано перекрывает значение sourceTariffMultiplier указанное для всего документа.
- mntTransactionId - уникальный внешний идентификатор транзакции.
- customerEmail - e-mail покупателя, на который надо отправить чек от ОФД.
- mntSubscriberId - не обязательный параметр - идентификатор покупателя в учетной системе продавца.
- storeCard - не обязательный параметр - true/false - сохранять ли банковскую карту покуателя, за исключением номера cvv. Если передано значение true, то параметр mntSubscriberId становится обязательным.
- inventory - номенклатура по поставщикам с указанием данных о поставщиках:
- sellerAccount - номер бизнес-счета продавца в Системе МОНЕТА.РУ.
- sellerInn - ИНН продавца.
- sellerName - название продавца.
- sellerPhone - номер телефона продавца.
- productName - название товара.
- productQuantity - количество товара.
- productPrice - окончательная цена товара с учетом всех скидок и наценок.
- productVatCode - код ставки НДС - одно из значений:
- 1104 - НДС 0%
- 1103 - НДС 10%
- 1102 - c 01.01.2019 ставка 20%
- 1105 - НДС не облагается
- 1107 - НДС с рассч. ставкой 10%
- 1106 - c 01.01.2019 НДС с расчётной ставкой 20%
- po - необязательный параметр - объект оплаты
- commodity – товар (за исключением подакцизного товара)
- excise – подакцизный товар
- job – работа
- service – услуга.
- pm - необязательный параметр - метод оплаты
- full_prepayment – предоплата 100%. Полная предварительная оплата до момента передачи предмета расчета
- prepayment – предоплата. Частичная предварительная оплата до момента передачи предмета расчета
- advance – аванс
- full_payment – полный расчет. Полная оплата, в том числе с учетом аванса (предварительной оплаты) в момент передачи предмета расчета
Все передаваемые значения не должны содержать кавычки, спецсимволы, символы слэш и обратный слэш, амперсанд.
Для приема платежа с холдированием, необходимо передать также параметр hold
в значении 1
.
Чтобы сформировать invoice для оплаты по QR СБП, счёт получателя обязательно должен быть настроен для работы с СБП (по согласованию с коммерческим отделом системы Монета). Также необходимо передать параметр QRTTL - это время в течение которого будет возможна оплата по платёжной ссылке (QR-коду). Минимальное значение - одна минута, максимальное значение - 129600 (90 дней в минутах).
API ПА ООО “ПЭЙ ЭНИ ВЭЙ” выполнит проверку входящих данных и сообщит об ошибке если:
- incorrect input data - отсутствует часть входящих данных.
- incorrect signature - не верная подпись запроса.
- incorrect inventory data, line: N - где N - номер строки номенклатуры - отсутствует часть данных по строке номенклатуры.
- incorrect amount - отсутствует общая сумма.
- inventoryTotal () and paymentAmount () are missmatch - не совпала общая сумма и сумма по всем позициям inventory.
- invoice could not be created - не удалось создать invoice.
Ошибка отдается в формате json:
{"error": "***"}
В результате выполнения команды будет создан invoice на оплату, а метод отдаст следующие данные в json:
{"operation": "***"}
***
- ID операции, созданной в Системе МОНЕТА.РУ.
Если был передан параметр QRTTL, в результат бедет так же возвращен массив operationInfo, ключи и значения которого содержат в том числе ссылку на оплату по СБП, которую можно отобразить в виде QR-кода покупателю. В этом случае переадресания на оплату через Assistant может не потребоваться.
Покупателя следует перенаправить на оплату данного invoice по ссылке: https://moneta.ru/assistant.htm?operationId=***
***
- ID операции, созданной в Системе МОНЕТА.РУ.
В ссылку можно добавить дополнительные параметры по протоколу MONETA.Assistant.
При передаче storeCard и mntSubscriberId будет сохранена использованная при оплате карта. Чтобы воспользоваться ей, нужно при последующих вызовах метода снова передать storeCard, тогда на платежной форме будет виден маскированный номер карты и expire date. Покупателю останется ввести cvv код для проведения оплаты.