1. Назначение и основные особенности счетов
Предприятие вызывает веб-сервис создания счета (с указанием номера счета, суммы, допустимого срока оплаты и т. д.), АПК Ассист формирует счет на оплату и платежный токен, соответствующий данному счету. Создание счета также возможно вручную из личного кабинета (https://account.paysecure.ru). Ссылка с платежным токеном отправляется системой АПК Ассист покупателю по электронной почте или предприятие формирует URL с использованием полученного платежного токена и переадресовывает покупателя на страницу оплаты счета. Также предприятие самостоятельная может отправить ссылку покупателю с помощью E-mail, SMS или других средств связи. Ссылка на оплату счета имеет следующий вид: https://<SERVER_NAME>/bill/paybill.cfm?ID=c2RmZ2UzNXkyNXR5MjU0
Когда покупатель переходит по ссылке и соглашается оплатить счет, в системе АПК Ассист создается заказ. Далее покупатель вводит данные платежного средства и оплачивает заказ аналогично стандартному варианту подключения.
В данном разделе описывается процесс подключения сервисов выставления и оплаты счетов для предприятия, а также освещаются вопросы настройки технического взаимодействия с этими сервисами АПК Ассист.
Порядок действий предприятия при подключении сервисов выставления и оплаты счетов
- сделать заявку для подключения к функционалу выставления и оплаты счетов в службу технической поддержки АПК Ассист support@assist.ru;
- получить подтверждение от службы технической поддержки АПК Ассист о том, что все необходимые технические настройки для функционирования сервисов выставления и оплаты счетов при оплате товаров и услуг данному предприятию выполнены.
2. Cоздание счета (createbill)
Веб-сервис для создания счета принимает параметры счета (форматы HTTP POST/SOAP) и возвращает (в случае успешного создания счета) платежный токен/ID, соответствующий данному счету. На основе этого платежного токена предприятие может сформировать ссылку на своей стороне для переадресации покупателя на страницу оплаты счета или для самостоятельной отправки ее покупателю (E-mail, SMS или другие средства связи), или АПК Ассист может отправить ее по E-mail адресу покупателя, указанному в параметрах.
URL запроса для создания счета:
https://<SERVER-NAME>/bill/createbill.cfm
Список параметров запроса:
Название | Обязатель-ное поле | Принимаемые значения | Значение по умолчанию | Описание |
Merchant_ID | Да | Число | Идентификатор предприятия в АПК Ассист | |
Login | Да | 8 - 20 символов | Логин (лат. буквы и цифры, символ _) | |
Password | Да | 8 - 20 символов | Пароль (лат. буквы и цифры) | |
Bill | Да/Нет1 | Строка | Номер счета (при создании заказа будет использован в качестве OrderNumber) | |
Bill_amount | Да | Число | Сумма счета (OrderAmount в заказе) | |
Bill_currency | Да | Строка | Валюта счета (OrderCurrency) | |
Bill_comment | Нет | Строка | Комментарий (OrderComment в заказе) | |
Customer_Name | Нет | Строка | Имя плательщика (FirstName в заказе) | |
Customer_Lastname | Нет | Строка | Фамилия плательщика (LastName в заказе) | |
Customer_Middlename | Нет | Строка | Отчество плательщика (MiddleName в заказе) | |
Customer_Email | Да/Нет2 | Строка | E-mail плательщика (Email в заказе) | |
Customer_Phone | Нет | Строка | Телефон плательщика (HomePhone в заказе) | |
Customer_Mobile | Нет | Строка | Мобильный телефон плательщика (MobilePhone в заказе) | |
Language | Нет | RU EN | Настройка базового языка аккаунта мерчанта | Язык платежных страниц |
Pay_until | Нет | Дата/время | 1 сутки | Крайний срок оплаты счета (дата и время в GMT): YYYYMMDDThhmm, если не передано - вычисляется на основе настройки мерчанта |
DelayPayment | Нет | Число | 0 | Флаг двустадийного платежа (параметр delay в заказе): 0- одностадийный, 1 - двустадийный режим оплаты. |
SendNotification | Нет | Число | В зависимости от настроек мерчанта | Признак отправки счета: 0 - не отправлять, 1 – отправлять ссылку по Email, 2 – отправлять ссылку в SMS, 3 – отправлять ссылку и по Emai, и в SMS. |
Checkvalue | Да | Строка | Контрольная сумма3 | |
CustomerNumber | Нет | Строка | Идентификационный номер клиента магазина (для организации платежей в режиме OneClick). | |
Chequeitems** | Да/Нет4 | Структура данных (строка в формате JSON) | Позиции чека согласно документу «Работа с чеком». | |
GenerateReceipt* | Нет | 0 или 1 | 1 | Разрешение формирования фискального чека. При значении параметра 0 формирование фискального чека запрещено для данного заказа. |
Tax* | Да/Нет4 | 10 символов | Определяется настройкой предприятия "Ставка налога по умолчанию" и используется в режиме без передачи позиций чека (вся сумма должна проводится с одной ставкой). | Идентификатор ставки налога, значение из справочника (novat, vat0, vat10, vat18, vat110, vat118). |
ReceiptLine* | Да/Нет4 | 128 символов | Определяется настройкой предприятия "Шаблон строки чека по умолчанию" и используется в режиме без передачи позиций чека). | Текстовое описание позиции чека, если по чеку проводится одна единственная позиция. |
FPMode* | Да/Нет4 | Число | Определяется настройкой предприятия "Признак способа расчета по умолчанию" и используется в режиме без передачи позиций чека. | |
TaxationSystem** | Нет5 | Число | Из настроек предприятия или ККТ |
1 Номер счета может не передаваться, если включена автоматическая генерация номера счета.
2 Если не передано значение адреса E-mail, то отправка счета по E-mail невозможна. Если не передан номер телефона, то отправка SMS невозможна. Примечание. Если признак отправки равен 3, то при отсутствии номера телефона ссылка на счет будет отправлена только по E-mail, а при отсутствии адреса E-mail нотификация вообще не будет выполнена.
3 Контрольная сумма формируется на основе формулы:
uppercase(md5(uppercase(md5(SALT) + md5(Х)))), где SALT – секретное слово; Х – результат строковой склейки всех переданных параметров счета (в последовательности по порядку следования параметров в таблице сверху вниз, не включая DelayPayment, SendNotification, Checkvalue и CustomerNumber) через разделитель - точка с запятой(";"), '+' – строковая склейка.
4 Состав чека (поля с названием, стоимостью за единицу товара/услуги, ставкой налога и способом расчета по каждой позиции) определяется по следующим правилам.
- Если в запросе передана структура ChequeItems (см. раздел «Работа с чеком»), то формируется чек с количеством позиций по числу переданных в ChequeItems строк, в каждой позиции должны быть обязательно указаны параметры:
- product и/или name;
- price;
- quantity;
- amount;
при этом:
название каждой из позиций формируется как объединение параметров product и name через пробел (если переданы оба) или как один из параметров product или name соответственно (если передан только один);
если параметры Tax или FPmode не переданы в позициях, то они могут быть переданы в параметрах запроса (в этом случае значения этих параметров будут одинаковыми для всех позиций чека, переданных в ChequeItems);
если параметры Tax или FPmode не переданы в параметрах запроса, то их значения подставляются из настроек предприятия (значения этих параметров будут одинаковыми для всех позиций чека, переданных в ChequeItems);
если настройки предприятия для этих параметров отсутствуют, то обработка запроса завершается с ошибкой (недостаточно данных для выполнения операции).
2. Если в запросе не передана структура ChequeItems, то формируется чек с одной позицией, в которой:
- название позиции подставляется из параметра ReceiptLine, если он передан в запросе; если параметр ReceiptLine не передан в запросе, то название позиции подставляется из настроек предприятия; если настройки предприятия для этих параметров отсутствуют, то в качестве названия подставляется строка "Оплата заказа";
- стоимость единицы товара/услуги подставляется из параметра запроса Amount;
- количество всегда равно 1;
если параметры Tax или FPmode не переданы в параметрах запроса, то их значения подставляются из настроек предприятия;
если настройки предприятия для этих параметров отсутствуют, то обработка запроса завершается с ошибкой (недостаточно данных для выполнения операции).
5 Параметр TaxationSystem задается для всего чека в целом (не передается в позициях чека). Если параметр не передан, то его значение берется из настроек предприятия. Если у предприятия не настроено значение параметра TaxationSystem по умолчанию, то в ККТ этот параметр (тег 1055) не отправляется и ККТ будет проводить чек по собственным настройкам. Это возможно только в том случае, если в ККТ настроена только одна система налогообложения, в противном случае ККТ выдаст ошибку.
* параметры, необходимые при использовании сервиса фискализации АПК Ассист.
** параметры, необходимые при передаче позиций чека, подробное описание в разделе «Работа с чеком».
Если счет или заказ с указанным в запросе номером уже существует, то счет не создается и выдается сообщение об ошибке "Счет с указанным номером уже существует".
Если в запросе не переданы обязательные параметры или нарушены форматы передачи данных, то счет не создается и выдается сообщение об ошибке (аналогично ошибке при создании заказа с неверными/недостающими параметрами).
Если не удается создать уникальный платежный токен/ID, то счет не создается и выдается сообщение об ошибке "Не удалось сформировать уникальный платежный токен".
Пример запроса HTTP POST для создания счета:
<FORM ACTION="https://<SERVER-NAME>/bill/createbill.cfm" method="POST"> <INPUT TYPE="hidden" NAME="Merchant_ID" VALUE="Ваш Merchant_ID"> <INPUT TYPE="hidden" NAME="Login" VALUE="Ваш логин"> <INPUT TYPE="hidden" NAME="Password" VALUE="Ваш пароль"> <INPUT TYPE="hidden" NAME="Bill" VALUE="Номер счета"> <INPUT TYPE="hidden" NAME="Bill_amount" VALUE="Сумма счета"> <INPUT TYPE="hidden" NAME="Bill_currency" VALUE="Валюта счета"> <INPUT TYPE="hidden" NAME="Bill_comment" VALUE="Комментарий к счету"> <INPUT TYPE="hidden" NAME="Customer_Name" VALUE="Имя плательщика"> <INPUT TYPE="hidden" NAME="Customer_Lastname" VALUE="Фамилия плательщика"> <INPUT TYPE="hidden" NAME="Customer_Middleтame" VALUE="Отчество плательщика"> <INPUT TYPE="hidden" NAME="Customer_Email" VALUE="Email плательщика"> <INPUT TYPE="hidden" NAME="Customer_Phone" VALUE="Телефон плательщика"> <INPUT TYPE="hidden" NAME="Customer_Mobile" VALUE="Моб. телефон плательщика"> <INPUT TYPE="hidden" NAME="Language" VALUE="Язык платежных страниц"> <INPUT TYPE="hidden" NAME="Pay_until" VALUE="Срок оплаты счета"> <INPUT TYPE="hidden" NAME="SendNotification" VALUE="Флаг отправки счета"> <INPUT TYPE="hidden" NAME="Checkvalue" VALUE="Контрольная сумма"> <INPUT TYPE="hidden" NAME="GenerateReceipt" VALUE="1"> <INPUT TYPE="hidden" NAME="Tax" VALUE="Идентификатор ставки налога"> <INPUT TYPE="hidden" NAME="ReceiptLine" VALUE="Наименование позиции чека"> <INPUT TYPE="hidden" NAME="FPMode" VALUE="Признак способа расчета"> <INPUT TYPE="Submit"></FORM>
Список параметров ответа:
Название | Значение |
Hash | Платежный токен/ID счета |
Пример результата запроса для создания счета в формате CSV:
Hash: xKPWpz4ZzDe5A9anPhnN
В формате XML:
<?xml version='1.0' encoding='utf-8' standalone='yes'?>
<result
firstcode="0"
secondcode="0"
count="1">
<return>
<Hash>akPWp08t84MTQ9anTy30</Hash>
</return>
</result>
Описание веб-сервиса для формата SOAP:
https://<SERVER_NAME>/bill/createbill.wsdl
Пример запроса для создания счета:
<?xml version="1.0" encoding="UTF-8"?>
<Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<Header/>
<Body>
<WSCreateBill>
<Bill>
<merchant_id>423422</merchant_id>
<login>login</login>
<password>password</password>
<bill>123456</bill>
<bill_amount>23.23</bill_amount>
<bill_currency>RUB</bill_currency>
<bill_comment></bill_comment>
<customer_name>Test</customer_name>
<customer_lastname>Testov</customer_lastname>
<customer_middlename>Testovich</customer_middlename>
<customer_email>test@testpost.ru</customer_email>
<customer_phone></customer_phone>
<language>RU</language>
<pay_until>20150611T1212</pay_until>
<sendnotification>0</sendnotification>
<checkvalue> AA3BC3F48B7FE23988044B53AA98F169</checkvalue>
</Bill>
</WSCreateBill>
</Body>
</Envelope>
Пример результата запроса создания счета:
<soapenv:Envelope
SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<SOAP-ENV:Body SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
<ASS-NS:BillResponse xmlns:ASS-NS="http://www.paysecure.ru/ws/">
<return xsi:type="si:SOAPStruct" xmlns:si="http://www.paysecure.ru/type/">
<Hash xsi:type="xsd:string">6CPV7F4a0aWQg9XsXhrS</Hash>
</return>
</ASS-NS:BillResponse>
</SOAP-ENV:Body>