Purpose and main features of bills
Services for invoicing and payment of bills provides a simple way of processing a payment by link (URL) which client can use to follow and make a payment on order in IPS Assist. The merchant calls the service of bill creation (providing info about bill number, amount, payment timeout and etc.), IPS Assist makes a bill record and payment token associated to this bill. A bill also can be created manually within the personal account (https://account.paysecure.ru/). IPS Assist sends the link with the payment token to customer via E-mail or the enterprise generates an URL using the received payment token, and redirects the customer to the bill payment page. The enterprise also can send the payment link to customer via E-mail, SMS or via other means of communication from its own side. Payment link looks like the following:
https://<SERVER_NAME>/bill/paybill.cfm?ID=c2RmZ2UzNXkyNXR5MjU0
When the client follows by the link and agrees to pay the bill IPS Assist creates order. Next, the client enters his payment mean data and performs a payment similarly to the standard order payment.
This manual describes services for bill creation, cancellation of bill payment, bill information requests and process of payment. It also covers the questions of setting up of interaction with those services of IPS Assist.
Procedure of connection to bill invoicing and payment services for merchant
- send a request for connection to bill services to the Assist support team (support@assist.ru);
- receive the confirmation from Assist support team that all necessary settings are done for the merchant
Bill creation service (createbill)
The service accepts the bill parameters in HTTP POST/SOAP or JSON (swagger specification: https://docs.assist.ru/swagger/) format and returns (in case of successful bill creation) a payment token/ID corresponding to that bill. The enterprise can make a payment link using this payment token/ID to redirect the customer to the bill payment page or send it to customer from its own side (E-mail, SMS or other type of communications), or IPS Assist can send it by E-mail customer's address specified in the parameters.
URL for the request:
https://<SERVER-NAME>/bill/createbill.cfm
List of request parameters:
Parameter | Mandatory field | Adopted values | Default value | Description |
Merchant_ID | Yes | Number | The enterprise identifier in IPS Assist | |
Login | Yes | 8 - 20 characters | Login (Latin letters, digits and symbol _) | |
Password | Yes | 8 - 20 characters | Password (Latin letters and digits) | |
Bill | Yes/No1 | String | Bill number (in creating order will be used as OrderNumber) | |
Bill_amount | Yes | 15 digits, two digits after the delimiter (delimiter '.') | Bill amount (OrderAmount in order) | |
Bill_currency | Yes | String | Bill currency (OrderCurrency) | |
Bill_comment | No | String | Comment (OrderComment in order) | |
Customer_Name | No | String | Customer's name (FirstName in order) | |
Customer_Lastname | No | String | Customer's last name (LastName in order) | |
Customer_Middlename | No | String | Customer's middle name (MiddleName in order) | |
Customer_Email | Yes/No2 | String | Customer's e-mail (Email in order) | |
Customer_Phone | No | String | Customer's phone number (HomePhone in order) | |
Customer_Mobile | No | String | Customer's mobile phone number (MobilePhone in order) | |
Language | No | RU EN | Setting of basic merchant account language | Language of authorized pages |
Pay_until | No | Date/time | 1 day | Expire date of bill payment (date and time in GMT): YYYYMMDDThhmm, when parameter is not passed then its value is calculated based on merchant settings |
DelayPayment | No | Number | 0 | Attribute of a credit card authorization for the double-stage operation mode (parameter delay in order): 0- one-stage operation, 1 - double-stage operation. |
SendNotification | No | Number | Depending on merchant settings | Bill sending by E-mail: 0 – not send, 1 – send by E-mail, 2 – send by SMS, 3 - send by E-mail and by SMS. |
URL_RETURN | No | 256 characters | Page URL, to where a customer should return after performing his/her payment in the system (option "Go to the shop page" should be enabled in merchant's settings in Personal account). ). It is recommended to use HTTPS protocol for secure communication. | |
URL_RETURN_OK | No | 256 characters | URL_RETURN parameter value, or, if none, return URL parameter after successful authorization, specified in Personal account | Page URL, to where a customer should return after successful performing his/her payment in IPS Assist (option "Go to the shop page" should be enabled in merchant's settings in Personal account)). It is recommended to use HTTPS protocol for secure communication. |
URL_RETURN_NO | No | 256 characters | URL_RETURN parameter value, or, if none, return URL specified in Personal account | Page URL, to where a customer should return if the payment is not performed in IPS Assist or payment is still in progress (current payment status "In Progress"), see details.. The option "Go to the shop using return URL" should be enabled in merchant's settings in Personal account. It is recommended to use HTTPS protocol for secure communication. |
CardPayment | No | 1 – pay using bankcard; | 1 | A customer can perform his/her payment using bankcard, if parameter value 1 has been sent, or the parameter is missing (and bankcard payments are enable for the enterprise) |
YMPayment | No | 1 – use YandexMoney payment system, | 1 | A customer can perform his/her payment using YandexMoney payment system, if parameter value 1 has been sent, or the parameter is missing (and YandexMoney payments are enable for the enterprise) |
WMPayment | No | 1 – use WebMoney payment system, | 1 | A customer can perform his/her payment using WebMoney payment system, if parameter value 1 has been sent, or the parameter is missing (and WebMoney payments are enable for the enterprise) |
QIWIPayment | No | 1 – use QIWI payment system, | 1 | A customer can perform his/her payment using QIWI payment system, if parameter value 1 has been sent, or the parameter is missing (and QIWI payments are enable for the enterprise) |
FastPayPayment | No | 1; 0 | 1 | A customer can perform his/her payment using the Faster Payment System, if parameter value 1 has been sent and payments via FPS are enable for the enterprise. |
GooglePayPayment | No | 1; 0 | 1 | Payment via Google Pay attribute (=1) |
ApplePayPayment | No | 1; 0 | 1 | Payment via Apple Pay attribute (=1) |
SamsungPayPayment | No | 1; 0 | 1 | Payment via Samsung Pay attribute (=1) |
MirPayPayment | No | 1; 0 | 1 | Payment via Mir Pay attribute (=1) |
Checkvalue | Yes | String | Request validation code. 3 | |
CustomerNumber | No | String | Merchant's internal customer identification (for payments in OneClick program). |
1 parameter BILL is not mandatory in case when automatic bill numbering is switched on.
2 If the value of the E-mail address is not sent, sending the bill by E-mail is not possible. If the value of phone number is not sent, sending the SMS is not possible. Note. For SendNotification= 3, if there is no phone number in the request, then the link to the bill will be sent only by E-mail; and if there is no E-mail address in the request, the notification will not be performed at all.
3 Check value is calculated by following formula:
uppercase(md5(uppercase(md5(SALT) + md5(Х)))), where SALT – secret word; Х – result of string concatenation (with semicolon (;) as delimiter) of the request parameters in order as they located in table from top to bottom excluding DelayPayment, SendNotification, Checkvalue and CustomerNumber, '+' – string concatenation.
When bill with the same number is already exist then new bill is not created and an error is returned: "Bill with the specified number already exists".
If request doesn't contain mandatory parameters or wrong data format provided the new bill is not created and an error is returned (similar to the error of order creation with not enough or wrong parameters).
When unique payment token/ID cannot be created the new bill is not created and an error is returned: "Unique payment token/ID cannot be created".
Information about using the 3-D Secure 2.0 protocol when creating a payment.
Example of bill creation request (HTTP POST):
<FORM ACTION="https://<SERVER-NAME>/bill/createbill.cfm" method="POST"> <INPUT TYPE="hidden" NAME="Merchant_ID" VALUE="Your Merchant_ID"> <INPUT TYPE="hidden" NAME="Login" VALUE="Your login"> <INPUT TYPE="hidden" NAME="Password" VALUE="Your password"> <INPUT TYPE="hidden" NAME="Bill" VALUE="Bill number"> <INPUT TYPE="hidden" NAME="Bill_amount" VALUE="Bill amount"> <INPUT TYPE="hidden" NAME="Bill_currency" VALUE="Bill currency"> <INPUT TYPE="hidden" NAME="Bill_comment" VALUE="Bill comment"> <INPUT TYPE="hidden" NAME="Customer_Name" VALUE="Customer name"> <INPUT TYPE="hidden" NAME="Customer_Lastname" VALUE="Customer lastname"> <INPUT TYPE="hidden" NAME="Customer_Middlename" VALUE="Customer middlename"> <INPUT TYPE="hidden" NAME="Customer_Email" VALUE="Customer Email"> <INPUT TYPE="hidden" NAME="Customer_Phone" VALUE="Customer phone"> <INPUT TYPE="hidden" NAME="Customer_Mobile" VALUE="Customer mobile phone"> <INPUT TYPE="hidden" NAME="Language" VALUE="Language of authorized pages"> <INPUT TYPE="hidden" NAME="Pay_until" VALUE="Expire date of bill payment"> <INPUT TYPE="hidden" NAME="SendNotification" VALUE="Bill sending flag"> <INPUT TYPE="hidden" NAME="Checkvalue" VALUE="Request validation code"> <INPUT TYPE="Submit"></FORM>
List of response parameters:
Parameter | Value |
Hash | Payment token/bill ID |
Example of return parameter in CSV format:
Hash: xKPWpz4ZzDe5A9anPhnN
In XML format:
<?xml version='1.0' encoding='utf-8' standalone='yes'?> <result firstcode="0" secondcode="0" count="1"> <return> <Hash>akPWp08t84MTQ9anTy30</Hash> </return> </result>
SOAP web-service description:
https://<SERVER_NAME>/bill/createbill.wsdl
Example of bill creation request:
<?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> <CreateBill> <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> </CreateBill> </Body> </Envelope>
Example of request result:
<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>
Request for bill status (billstatus)
The service allows to receive the full data about bill, payment and cancellations on it. The data can be received by the number of bill or by the billnumber value.
When bill can't be found by his number the error is returned: "Bill is not found".
When it can't be found by billnumber the error appears: "Bill is not found within processed".
URL of request for bill status:
https://<SERVER-NAME>/bill/billstatus.cfm
List of request parameters:
Parameter | Mandatory field | Adopted values | Default value | Description |
Merchant_ID | Yes | Number | The merchant identifier in IPS Assist | |
Login | Yes | 8 - 20 characters | Login (Latin letters, digits and symbol _) | |
Password | Yes | 8 - 20 characters | Password (Latin letters and digits) | |
Bill | Yes/No* | String | Bill number (in creating order will be used as OrderNumber) | |
BillNumber | Yes/No* | 15 or 16 digits | Unique number of payment corresponding to the order number in IPS Assist |
* One of the parameters Bill or BillNumber must be provided in the request. When both of them are provided then search is performed by BillNumber.
Example of bill status request (HTTP POST):
<FORM ACTION="https://<SERVER-NAME>/bill/billstatus.cfm" method="POST"> <INPUT TYPE="hidden" NAME="Merchant_ID" VALUE="Your Merchant_ID"> <INPUT TYPE="hidden" NAME="Login" VALUE="Your login"> <INPUT TYPE="hidden" NAME="Password" VALUE="Your password"> <INPUT TYPE="hidden" NAME="Bill" VALUE="Bill number"> <INPUT TYPE="hidden" NAME="BillNumber" VALUE="Number of payment"> <INPUT TYPE="Submit"></FORM>
List of response parameters:
Parameter | Value |
Merchant_id | The merchant identifier in IPS Assist |
Bill | Bill number |
Bill_amount | Bill amount |
Bill_currency | Bill currency |
Bill_comment | Bill comment |
Bill_date | Date and time of bill (GMT) |
Bill_status | |
Billnumber | Number of payment (empty if the order is not created) = Billnumber of order |
Payment_date | Date and time of bill payment (empty if the order is not created) = OrderDate (GMT) |
Payment_amount | Payment amount (empty if the order is not created) = amount of payment operation amount |
Payment_currency | Payment currency (empty if the order is not created) = currency of payment operation currency |
Payment_RRN | Additional identifier of payment/RRN (empty if there was no payment) |
Refund_amount | Total amount of successful refunds for this payment (empty if the order is not created; 0 if there was payment, but there wasn’t any refund) |
Customer_name | Customer name |
Customer_Lastname | Customer lastname |
Customer_Middlename | Customer middlename |
Customer_Email | Customer Email-address |
Customer_Phone | Customer phone number |
Customer_Mobile | Customer mobile phone number |
Language | Language |
Pay_until | Expire date of bill payment (GMT) |
Sendnotification | Bill sending by E-mail ( 0 – not send, 1 - send, 10 – is sent)* |
Bill_type | Bill type (1 – by default) |
CheckValue | Request validation code is calculated by following formula: uppercase(md5(uppercase(md5(SALT) + md5(Х)))), where SALT – secret word; Х – result of string concatenation (with semicolon (;) as delimiter) of the request parameters in order as they located in table from top to bottom excluding SendNotification and Checkvalue, delimiter is also added in case of missing parameter, '+' – string concatenation. |
* when E-mail sending was required in bill creation request (by parameter SendNotification=1 or by merchant settings in IPS Assist) then value of SendNotification in the result can have the following values:
1 – sending of E-mail message has not performed yet (for example when E-mail was not provided);
10 – E-mail message has been prepared and sent (it was placed in the sending queue).
Results example in CSV format:
merchant_id:515089; bill:2015.06.30 11:19-85; bill_amount:100.00; bill_currency:RUB; bill_comment:; bill_date:30.06.2015 08:19:41; bill_status:Invoiced; billNumber:;payment_date: ; payment_amount:0.00; payment_currency:; payment_rrn:; refund_amount:; customer_name:Test; customer_lastname:Testov; customer_middlename:; customer_email:test@testpost.ru; customer_phone:; customer_mobile:; language:RU; pay_until:20150701T0819; sendnotification:1; checkValue:26397652E3DB8E25407A9B091B9431B3
In XML format:
<?xml version='1.0' encoding='utf-8' standalone='yes'?> <result firstcode="0" secondcode="0" count="1"> <orders> <order> <merchant_id>515089</merchant_id> <bill>20150630111985</bill> <bill_amount>100.00</bill_amount> <bill_currency>RUB</bill_currency> <bill_comment/> <bill_date>30.06.2015 08:19:41</bill_date> <bill_status>Invoiced</bill_status> <billNumber/> <payment_date></payment_date> <payment_amount>0.00</payment_amount> <payment_currency/> <payment_rrn/> <refund_amount/> <customer_name>Test</customer_name> <customer_lastname>Testov</customer_lastname> <customer_middlename/> <customer_email>test@testpost.ru</customer_email> <customer_phone/> <customer_mobile/> <language>RU</language> <pay_until>20150701T0819</pay_until> <sendnotification>1</sendnotification> <checkValue>26397652E3DB8E25407A9B091B9431B3</checkValue> </order> </orders> </result>
SOAP web-service description
https://<SERVER_NAME>/bill/billstatus.wsdl
Example of bill status request:
<?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> <BillStatus> <Bill> <merchant_id>423422</merchant_id> <login>login</login> <password>password</password> <bill>123456</bill> <billnumber></billnumber> </Bill> </BillStatus> </Body> </Envelope>
Example of results:
<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/"> <merchant_id xsi:type="xsd:string">515089</merchant_id> <bill xsi:type="xsd:string">20150610115527</bill> <bill_amount xsi:type="xsd:string">150.00</bill_amount> <bill_currency xsi:type="xsd:string">RUB</bill_currency> <bill_comment xsi:type="xsd:string">testbill</bill_comment> <bill_date xsi:type="xsd:string">10.06.2015 09:03:07</bill_date> <bill_status xsi:type="xsd:string">Invoiced</bill_status> <billNumber xsi:type="xsd:string"/> <payment_date xsi:type="xsd:string"></payment_date> <payment_amount xsi:type="xsd:string">0.00</payment_amount> <payment_currency xsi:type="xsd:string"/> <payment_rrn xsi:type="xsd:string"/> <refund_amount xsi:type="xsd:string"/> <customer_name xsi:type="xsd:string">test</customer_name> <customer_lastname xsi:type="xsd:string">testov</customer_lastname> <customer_middlename xsi:type="xsd:string"/> <customer_email xsi:type="xsd:string">test@testpost.ru</customer_email> <customer_phone xsi:type="xsd:string"/> <customer_mobile xsi:type="xsd:string"/> <language xsi:type="xsd:string">EN</language> <pay_until xsi:type="xsd:string">0150611T0903</pay_until> <sendnotification xsi:type="xsd:string">0</sendnotification> <checkValue xsi:type="xsd:string">D9F0E4933007B96BCC2594983F7A24E3</checkValue> </return> </ASS-NS:BillResponse> </SOAP-ENV:Body>
Bill revocation request (billrevoke)
The service allows to revoke a bill that was not yet payed. Call of this service change the bill status to Deleted if it was in status Inviced or Timed out on moment of the request.
URL for bill revocation request:
https://<SERVER-NAME>/bill/billrevoke.cfm
List of request parameters:
Parameter | Mandatory field | Adopted values | Default value | Description |
Merchant_ID | Yes | Number | The merchant identifier in IPS Assist | |
Login | Yes | 8 - 20 characters | Login (Latin letters, digits and symbol _) | |
Password | Yes | 8 - 20 characters | Password (Latin letters and digits) | |
Bill | Yes | String | Bill number | |
SendNotification | No | Number | Depending on merchant settings | Flag of sending notice of bill revocation (when this parameter is not passed in the request then the default setting for the merchant in IPS Assist is used). |
Checkvalue | Yes | String | Request validation code (is calculated the same way as by bill creation, excluding Sendnotification and CheckValue) |
Request example in HTTP POST format:
<FORM ACTION="https://test.paysecure.ru/bill/billrevoke.cfm" method="POST"> <INPUT TYPE="hidden" NAME="Merchant_ID" VALUE="Your Merchant_ID"> <INPUT TYPE="hidden" NAME="Login" VALUE="Your login"> <INPUT TYPE="hidden" NAME="Password" VALUE="Your password"> <INPUT TYPE="hidden" NAME="Bill" VALUE="Bill number"> <INPUT TYPE="hidden" NAME="SendNotification" VALUE="Notice sending flag"> <INPUT TYPE="hidden" NAME="Checkvalue" VALUE="Request validation code"> <INPUT TYPE="Submit"></FORM>
List of response parameters:
Parameter | Value |
Bill | Bill number |
Bill_status | Bill status |
Results example in CSV format:
bill:2015.06.30 11:17-81; bill_status:Revoked
In XML format:
<?xml version='1.0' encoding='utf-8' standalone='yes'?> <result firstcode="0" secondcode="0" count="1"> <return> <bill>20150630111985</bill> <bill_status>Revoked</bill_status> </return> </result>
SOAP web-service description:
https://<SERVER_NAME>/bill/billrevoke.wsdl
Example of bill revocation request:
<?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> <BillRevoke> <Bill> <merchant_id>423422</merchant_id> <login>login</login> <password>password</password> <bill>123456</bill> <sendnotification>0</sendnotification> <checkvalue> AA3BC3F48B7FE23988044B53AA98F169</checkvalue> </Bill> </BillRevoke> </Body> </Envelope>
Results example:
<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/"> <bill xsi:type="xsd:string">20150610115527</bill> <bill_status xsi:type="xsd:string">Revoked</bill_status> </return> </ASS-NS:BillResponse> </SOAP-ENV:Body>
Messages templates
After bill creation, the client will receive the E-mail message that looks like the following:
Subj | The bill has been invoiced for payment |
Text | Hello Test Testov, We inform you that bill # 1c362fd on amount of 888.42 RUB has been invoiced for payment. You can pay it till 25.01.2015 18:00 (MSK). To view and pay the bill go by link below. https://payments.paysecure.ru/bill/paybill.cfm?ID=c2RmZ2UzNXkyNXR5MjU0 Please address internet-shop #1 at shop1@testpost.ru in case of any questions concerning about this bill. _____________ With best regards, Assist Customer Service Team |
In case when bill was revoked the client will be also notified via E-mail by message looks like:
Subj | The bill was annulled |
Text | Hello Test Testov, We inform you that bill # 1c362fd on amount of 888.42 RUB was annulled. Please address internet-shop #1 at shop1@testpost.ru in case of any questions concerning about this bill. _____________ With best regards, Assist Customer Service Team |
If necessary, the customer can create his request by a simple reply to the received E-mail. If the merchant specified several addresses as the address for customer requests when connecting to the IPS Assist, then the E-mail will be sent to all these addresses.
Messages' templates can be tuned individually for the enterprise. Please, contact the Assist support team for it: support@assist.ru.