You are on page 1of 63

NIBSS QR Code Payment

Integration Technical Specification

Prepared by:

Nigeria Inter – Bank Settlement System (NIBSS)

Version:1.699

4-11-2020
Table of Content

1.Introduction............................................................................................................................................. 6
2.Transaction Flow ................................................................................................................................... 6
2.1 C Scan B ............................................................................................................................................... 6
2.2 B Scan C ............................................................................................................................................... 6
3.Communication And Signature Rules ................................................................................................... 7
3.1 Communication mode ......................................................................................................................... 7
3.2 Signature Rule ..................................................................................................................................... 7
3.3 Message structure................................................................................................................................ 9
3.4 Data Field Type Definition ................................................................................................................. 9
4.QR code Rules ....................................................................................................................................... 9
4.1 Summary .............................................................................................................................................. 9
4.2 Format Rules ....................................................................................................................................... 9
4.3 Organization TagID Definition ........................................................................................................ 11
4.4 Field Definition .................................................................................................................................. 11
4.5 Example.............................................................................................................................................. 12
5. Development instructions ...................................................................................................................... 13
5.1 Transaction ........................................................................................................................................ 13
5.2 Merchant ............................................................................................................................................ 15
6.Interface Technical Specifications ....................................................................................................... 15
6.1 Merchant Status Query Interface .................................................................................................... 15
6.2 Fixed QR Code Payment Interface .................................................................................................. 19
6.3 Dynamic QR Code Payment Interface ............................................................................................ 23
6.4 Order payment status Interface ....................................................................................................... 27
6.5 Bank Card Information Query Interface ........................................................................................ 29
6.6 Transfer transaction the interface ................................................................................................... 31
6.7 Generate Dynamic QR Code Interface............................................................................................ 35
6.8 Create Merchant Interface ............................................................................................................... 37
6.9 Merchant Binding Collection Account Interface............................................................................ 40
6.10 Create Sub Merchant Interface ..................................................................................................... 42
6.11 Merchant Information Query Interface ........................................................................................ 44
6.12 Merchant Transaction Record Query Interface ........................................................................... 47
6.13 Create Merchants In Batch Interface ............................................................................................ 52
6.14 Create Sub Merchants in Batch Interface..................................................................................... 55
6.15 Transaction Fee Inquiry Interface ................................................................................................. 59
6.16 Cancel Dynamic QR Code Interface.............................................................................................. 61
Document Control
Data Describe Version

2020-04-11 Documents Creating; 1.00


Add the iOS system UIWebView method;
Update interface address;
2020-05-10 1.10
Add transfer transaction interface;
Update response example;
Update signature example;
Update IOS UIWebView;
2020-05-15 1.18
Add fixed QR Code payment interface to test QR Code;
Add dynamic QR Code payment interface test link;
Modify QR code generation rules;
Add Development Notes;
2020-05-22 Add merchant query interface; 1.20
Update some interface examples;
Update order query interface;
2020-06-02 Add Generate Dynamic QR Code Interface. 1.30

Update Dynamic QR Code payment interface;


2020-06-11 1.32
Update Order payment status interface;
Modify the description of 'channel' field;
Change NIP ChannelCode = '12';
2020-07-17 1.34
Please note that this 'channel' is the payment channel ID number defined by
QR platform (non NIP 'ChannelCode' );
Modified the parameter value of "[]" returned by partial NIP.
Repair "QR_Type" annotation error;
2020-07-29 Update "PaymentReference" parameter values, amend the "" values to 1.36
"order_no" + "NIBSSQR" combination, example:
"20200726113811938200833807NIBSSQR";
Modify the QR Code generation rules and add EMVCo standard rules;
Modify the interface parameters of dynamic generated QR code and add
2020-08-04 1.42
standard type parameters of QR code;
The test QR code with fixed QR code interface is added;
Add merchant business process (B scan C) and merchant side development
steps;
2020-08-07 1.54
Add Create merchant interface;
Add Merchant Binding Collection Account Interface;
Add Create Sub Merchant Interface;
Add Merchant Information Query Interface;
Add Merchant Transaction Record Query Interface;
Add Create Merchants in Batch;
Add Create Sub Merchants in Batch;
Delete Non-EMVCo standard QR code information content
2020-08-10 1.58
Update the merchant TIN parameter to make the required fields optional.
Modify fixed QR code payment interface and add Intra-Bank transaction
return parameters.
Modify the dynamic QR code payment interface and add "order_ Amount"
2021-06-10 actual transaction amount parameter, and add Intra-Bank transaction return 1.65
parameter.
Add 6.15 Intra-Bank Transaction Success Notification Interface.
Add 6.16 Transaction Fee Query Interface.
2021-07-26 Delete the Fee field of Create merchant interface 1.66

Modify Create merchant interface, add bank account and fee borne party
parameters.
2021-09-26 1.68
Modify Create merchant in batch interfaces, add bank account and fee borne
party parameters.
2021-10-15 Add Cancel Dynamic QR Code Interface 1.69

Modify the "Generating Dynamic QR Code Interface" and add the


2021-12-14 1.695
"Unique_id" field for merchants to upload additional data
Modify 6.2 Fixed QR Code Payment Interface and delete the "Intra-bank
transaction return" part of the transaction response.
Modify 6.3 Dynamic QR Code Payment Interface and delete the "Intra-bank
2022-03-21 transaction return" part of the transaction response. 1.697
Delete 6.15 Intra-Bank Transaction Success Notification Interface
Modify the Transaction Fee Inquiry Interface and delete the
"TransactionType" parameter.
2022-05-17 Update UPI TagID description in QR code specification section 1.699
1.Introduction
QR code payment platform is a product based on QR code technology to realize scanning
payment. QR code payment platform is used to provide uniform two-dimensional code payment
and multiple payment scenarios for institutions, SP, merchants, etc.
This document describes the technical specifications for the integration of financial (three
party service) institutions and QR code payment platforms, and the realization of merchant
collection business through QR code.
Before integrating QR code payment platform, Institutions need to have app products and
complete registration in QR system.

2.Transaction Flow

2.1 C Scan B

The cardholder scans the merchant QR code (Fixed QR Code or Dynamic QR Code) and
the payment process is as follows:
(1) The cardholder consumes and settles at the merchant, opens the App of the banking
institution or the third party to scan the QR code of the merchant;
(2) The App application recognizes the QR code information, obtains the merchant's
payment information through the interface, and displays the payment page;
(3) The payer inputs or confirms the amount to be paid and settled;
(4) The payer enters the transaction password;
(5) App application uploads the amount and other information to the QR platform through
the interface
(6) The QR platform initiates the transaction according to the information received, and
returns the transaction response result to the app through the interface.

2.2 B Scan C

The cardholder presents the payment QR code to the merchant during consumption at the
merchant. The payment process is as follows:
(1) The cardholder consumes and settles at the merchant, opens the banking institution or
the third-party app, and presents the payment code to the merchant;
(2) Merchant App (or payment device) scans and recognizes the QR code information of
consumers, and uploads the information to the QR platform through the interface;
(3) The QR platform returns a response;
(4) The payer confirms the payment settlement amount, and if there is a payment password,
the payer enters the transaction password;
(5) The merchant App application (or payment device) initiates a payment request to the
QR platform;
(6) The QR platform initiates a transaction based on the received information, and returns
the transaction response result to the App through the interface.

3.Communication And Signature Rules

3.1 Communication mode

3.1.1 Summary

The communication method is HTTPS/HTTP POST. To ensure the security of transaction


transmission, Internet access only supports HTTPS.

3.1.2 HTTPS/HTTP Message Start Setting

HTTPS/HTTP request/reply messages must use ASCII encoding to set the header field:
Content-length: required item, value is the Length of the message body;
Content-type: required item, value is "application/json; Charset = GBK ".

3.2 Signature Rule

3.2.1 Summary

QR system uses signature verification technology to ensure the identity reliability and data
integrity of both parties.
Based on Internet interaction, the message originator needs to encrypt the business domain
outside the common part and then sign the remaining domain after encryption. The receiver of
the message shall prior sign and decrypt after passing the check.

3.2.2 Signature Algorithm

Signature is generated:
(1) Arrange the parameters whose sending data parameter value is not empty according to
the order of parameter name ASCII code from small to large (dictionary order), and press
“key1=value1&key2=Value2&...” The format is spliced into a string “stringA”.
Example:
stringA="appid=wxd930ea5d5a258f4f&body=test&device_info=1000&mch_id=10000100
";

(2) The key is spliced at the end of the string 'stringa' (the key is provided to the
mechanism by nibss), Get 'stringsigntemp' string;
Example:
key=192006250b4c09247ec02edce69f6a2d;
stringSignTemp=stringA+key;

(3) Perform an MD5 operation on “stringSignTemp”, Then convert all characters of the
resulting string to uppercase;
Example:
sign=MD5(stringSignTemp).toUpperCase();

Pay special attention to:


◆ Parameter name ASCII code from small to large sort (dictionary order);
◆ If the value of the parameter is null, it does not participate in the signature;
◆ Parameter names are case sensitive.

3.2.3 Example

Example of bank card information query interface


{
"institution_number":"I0000000001",
"channel":"1",
"bank_number":"999070",
"account_number":"5050138001",
"timestamp":"1581312432",
"sign":"64B3A8ED8647064F5A0F830EE195F845"
}

1 Step: The parameters of the "non-null" value are arranged from small to large according to
ASCII code.
account_number=5050138001&bank_number=999070&channel=1&institution_number=I0
000000001&timestamp=1581312432
2 Step: The tail concatenation key for the string. (the key will be obtained when the
management background creates the institution)。
KEY=QER5HKWePAFeFRM7RD8wPjwdWAfWPQHR

account_number=5050138001&bank_number=999070&channel=1&institution_number=I0
000000001&timestamp=1581312432QER5HKWePAFeFRM7RD8wPjwdWAfWPQHR

3 Step: Use MD5 for encryption and convert uppercase.


sign=md5(account_number=5050138001&bank_number=999070&channel=1&institution_n
umber=I0000000001&timestamp=1581312432QER5HKWePAFeFRM7RD8wPjwdWAfW
PQHR);

Complete the signature, the result is:64B3A8ED8647064F5A0F830EE195F845

3.3 Message structure

The request and response message structures in this document are all json-formatted strings.

3.4 Data Field Type Definition

"String" X byte fixed or variable length String.

4.QR code Rules

4.1 Summary

The QR code of the QR platform uses EMVCo standard formats. And according to the
actual scene, it is divided into two types: fixed QR Code and dynamic two-dimensional code, and
fixed QR Code is divided into two types: custom amount code and fixed amount code.

4.2 Format Rules

This chapter defines the requirements to be followed by payloads to generate EMVCo


standard QR codes.
The data contained within a QR Code is organized as follows. Each data object is made up
of three individual fields. The first field is an identifier “ID” by which the data object can be
referenced. The next field is a “Length” field that explicitly indicates the number of characters
included in the third field: the “Value” field. A data object is then represented as an ID / Length
/ Value combination, where:
(1) The “ID” is coded as a two-digit numeric value, with a value ranging from "00" to "99",
(2) The “Length” is coded as a two-digit numeric value, with a value ranging from "01" to
"99",
(3) The “Value” field has a minimum length of one character and maximum length of 99
characters.

4.2.1 Data Object ID

(1) An ID shall be coded as a two-digit numeric value and shall have a value "00" to "99".
(2) There shall be only one occurrence of a data object with a specific ID under the root and
there shall be only one occurrence of a specific ID within a template.

4.2.2 Data Object Length

(1) Length shall be equal to the number of characters in the value field.
(2) Length shall be coded as a two-digit numeric value and shall have a value "01" to "99".

4.2.3 Data Object Values

4.2.3.1 Numeric Values

Data objects with a format of numeric [N] shall only contain values represented by digits
"0" to "9". Each digit is encoded in the QR Code by its binary representation as defined by
[Unicode].

4.2.3.2 Alphanumeric Special Values

Data objects with a format of Alphanumeric Special [ans] shall only contain values defined
in the Common Character Set of [EMV Book 4]. Each character is encoded in the QR Code by
its binary representation as defined by [Unicode].
4.2.3.3 String Values

Data objects with a format of String [S] shall only contain precomposed values defined in
[Unicode]. Each precomposed character is encoded in the QR Code by its binary representation
as defined by [Unicode].

4.3 Organization TagID Definition

TagID Organization Name Description

15 UnionPay UnionPay TagID of EMVCo specification

The EMVCo specification is a template reserved for


26 NIBSS NQR additional payment networks. NIBSS NQR uses this
TagID.

4.4 Field Definition

ID Length Value Describe

00 02 (Fixed length) 01 Message start

11: Fixed QR Code,


01 02 (Fixed length) 11
12: Dynamic QR Code

4434056600520446****M0 Institution number + forwarding


15 31 (Fixed length)
000000001 number + merchant ID

0019NG.COM.NIBSS-
PLC.QR0111S00000000010 Reverse domain + sub merchant
26 72 (Fixed length)
23099916620052109225201 number + order number
6378356101

00 19 (Fixed length) NG.COM.NIBSS-PLC.QR Reverse domain

01 11 (Fixed length) S0000000001 sub merchant number


ID Length Value Describe

99916620052109225201637 Order number (only appear in


02 30 (Fixed length)
8356101 dynamic QR code)

58 02 (Fixed length) NG Country code

52 04 (Fixed length) 0000 Merchant Category Code

53 03 (Fixed length) 566 Currency number

59 99 (Variable length) Test Merchant Merchant name

60 99 (Variable length) Nigeria City name

Amount (Appears when a fixed


54 99 (Variable length) 10.00 amount of QR code and dynamic
QR code are set)

63 04(Fixed length) 6304 End of message

CRC16 verification code of


CRC 04(Fixed length) A54A
message

4.5 Example

Message sample
00020101021215314434056600520446****M000000000126720019NG.COM.NIBSS-
PLC.QR0111S000000000102309991662005210922520163783561015204000053035665402
105802NG5913Test Merchant6007Nigeria6304A54A

Message analysis
Tag:00 Length:2 Value:01
Tag:01 Length:2 Value:12
Tag:52 Length:4 Value:0000
Tag:53 Length:3 Value:566
Tag:54 Length:2 Value:10
Tag:26 Length:72 Value:0019NG.COM.NIBSS-
PLC.QR0111S00000000010230999166200521092252016378356101
Tag:58 Length:2 Value:NG
Tag:59 Length:13 Value:Test Merchant
Tag:60 Length:7 Value:Nigeria
Tag:15 Length:31 Value: 4434056600520446****M0000000001
Tag:63 Length:4 Value:A54A
Tag:26 Length:72 Value:0019NG.COM.NIBSS-
PLC.QR0111S00000000010230999166200521092252016378356101
Tag:00 Length:19 Value:NG.COM.NIBSS-PLC.QR
Tag:01 Length:11 Value:S0000000001
Tag:02 Length:30 Value:999166200521092252016378356101

5. Development instructions

5.1 Transaction

(1) App scan QR code (including fixed QR code and dynamic QR code);

(2) Get the combination string of QR code information;

(3) The string is parsed according to the rules to get the parameters;

(4) Get bank institution number and key by Email;

(5) Call <Merchant status query interface> to query merchant status and QR code type;

(6) If the merchant status is valid, call the <transaction fee inquery interface> to query and

obtain parameters such as transaction commission (Fee), tax (VAT) and borne party (including

"Merchant", "Acquirer" and "Payer");

(7) Display different collection pages according to the 'QrType' parameter value (QrType =

"0" custom amount QR code, QrType = "1" fixed amount QR code);


(8) If the borne is "payer", it is recommended to display the fee, tax and other amounts to be
borne by the payer on the collection page so that the payer can confirm and agree;
(9) After confirming the payment, determine whether the user needs to input the payment
password according to the requirements of the institution. If the user needs to input the payment
password, the payment password input page needs to be opened.

(10) Enter the payment password and call different payment interfaces according to the value
of 'qr_cate' parameter (qr_cate= "1", calls <Fixed QR Code Payment Interface>; qr_cate="2",
calls <Dynamic QR Code Payment Interface>).
5.2 Merchant

When a merchant is created through a three-party Institution system, the interface required for
creating a merchant needs to be called:
(1) Create a level one merchant and upload the merchant's information (including basic
information, business information, settlement information, etc.) to the QR platform through the
merchant creation interface;
(2) The QR platform creates merchants according to the uploaded merchant information;
(3) When creating a merchant, it is necessary to upload the settlement bank information of the
merchant through the binding bank account interface, and the QR platform returns the merchant
creation result;
(4) After the first level merchant is successfully created, it needs to create a sub merchant
again, and upload the sub merchant information to the QR platform through the sub merchant
interface;
(5) QR platform creates sub merchants according to the uploaded sub merchant information,
and returns the result of creating sub merchants and QR code.

6.Interface Technical Specifications

6.1 Merchant Status Query Interface

6.1.1 Description

Query merchant status and according to the decrypted QR Code parameter information to
query the type of QR code.

6.1.2 Interface Address

http://10.77.75.118/api.php/Bank/query_mer

6.1.3 Merchant Status Query Request

6.1.3.1 Fixed QR Code (Custom Amount) Query Request


{
"institution_number":"I0000000001",
"qr_cate":"1",
"sub_no":"S0000000032",
"timestamp":"1581312432",
"sign":"DF4003ECA742CF5343E6593DEC033511"
}

6.1.3.2 Fixed QR Code (Fixed Amount) Query Request


{
"institution_number":"I0000000001",
"qr_cate":"1",
"sub_no":"S0000000027",
"timestamp":"1581312432",
"sign":"DF4003ECA742CF5343E6593DEC033511"
}

6.1.3.3 Dynamic QR Code Query Request


{
"institution_number":"I0000000001",
"qr_cate":"2",
"sub_no":"S0000000001",
"timestamp":"1581312432",
"sign":"DF4003ECA742CF5343E6593DEC033511"
}

Dynamic QR code generation tool: http://10.77.75.118/index.php/CodePay/code?sub_ id=1

6.1.4 Merchant Status Query Response

6.1.4.1 Fixed QR Code (Custom Amount) Query Response


Successful return:
{
"ReturnCode":"Success",
"QrType":"0",
"MerchantName":"Test merchant",
"SubMerchantName":"Test Sub Merch",
"Mch_no":"M0000000001",
"Sub_mch_no":"S0000000032"
}
Failure to return:
{
"ReturnCode":"Fail",
"ReturnMsg":"Merchant closed collection"
}

6.1.4.2 Fixed QR Code (Fixed Amount) Query Response


Successful return:
{
"ReturnCode":"Success",
"QrType":"1",
"Amount":"750.00",
"MerchantName":"Test merchant",
"SubMerchantName":"Ecobank QR Retail Collection1",
"Mch_no":"M0000000001",
"Sub_mch_no":"S0000000027"
}

Failure to return:
{
"ReturnCode":"Fail",
"ReturnMsg":"Merchant closed collection"
}

6.1.4.3 Dynamic QR Code Query Response


Successful return:
{
"ReturnCode":"Success",
"MerchantName":"Test merchant",
"SubMerchantName":"1-Cashier",
"Mch_no":"M0000000001",
"Sub_mch_no":"S0000000001"
}
Failure to return:
{
"ReturnCode":"Fail",
"ReturnMsg":"Merchant closed collection"
}

6.1.5 Request Field Descriptions

Whether
Fields Type Description Example
must

institution_n
string Institution number, obtained by email I0000000001 YES
umber

QR code type, obtained after app scanning.


qr_cate string "1" fixed QR code 1 YES
"2" dynamic QR code

Qr code number. Obtain after analyzing the


sub_no string S0000000032 YES
QR code information

timestamp string Time stamp 10 bits 1583131981 YES

A745DF45DE2475A5
sign string The signature. View signature rules YES
88C26FD2E34D5D93

6.1.6 Response Field Descriptions

Whether
Fields Type Description
must

Success: Query Success;


ReturnCode string YES
Fail: Query Fail;

Fixed QR code type:


QrType string "0" has no amount QR code; YES
"1" has the amount QR code;

MerchantName string Merchant name YES

SubMerchantName string QR Code name YES


Whether
Fields Type Description
must

Mch_no string Merchant Number YES

Sub_mch_no string QR Code Number YES

ReturnMsg string Fail information YES

6.2 Fixed QR Code Payment Interface

6.2.1 Description:

The App of the bank or the third-party institution scans the fixed QR Code of the merchant
for payment.

6.2.2 Interface Address

http://10.77.75.118/api.php/Bank/pay

6.2.3 Fixed QR Code Payment Request

{
"channel":"1",
"institution_number":"I0000000001",
"mch_no":"M0000000001",
"sub_mch_no":"S0000000001",
"user_bank_no":"999001",
"user_account_name":"WALIU A FALEYE",
"user_account_number":"1990008116",
"user_bank_verification_number":"22141742470",
"user_kyc_level":"1",
"user_gps":"9.55679,9.692809",
"amount":"12.00",
"order_no":"202002181138119382008332",
"timestamp":"1581997091",
"sign":"DF4003ECA742CF5343E6593DEC033511"
}
6.2.4 Fixed QR Code Payment Response

Successful return:
{
"ReturnCode":"Success",
"SessionID":"999166200521210807008930002836",
"NameEnquiryRef":"",
"DestinationInstitutionCode":"999058",
"ChannelCode":"12",
"BeneficiaryAccountName":"OGUNLANA TUNJI",
"BeneficiaryAccountNumber":"0122047425",
"BeneficiaryKYCLevel":"1",
"BeneficiaryBankVerificationNumber":"22141784665",
"OriginatorAccountName":"",
"OriginatorAccountNumber":"",
"OriginatorBankVerificationNumber":"",
"OriginatorKYCLevel":"1",
"TransactionLocation":"9.55679,9.692809",
"Narration":"mobile pay",
"PaymentReference":"20200726113811938200833807NIBSSQR"
"Amount":"12"
}

Failure to return:
{
"ReturnCode":"Fail",
"ReturnMsg":"Sign error"
}

6.2.5 Request Field Descriptions

Whether
Fields Type Description Example
must

institution_number string Institution number, obtained by email I0000000001 YES


Whether
Fields Type Description Example
must

Default value is 1.
Please note that this 'channel' is the
channel string 1 YES
payment channel ID number defined by
QR platform(Non-NIP 'ChannelCode' ).

Call merchant status query interface to


mch_no string M0000000001 YES
return

Call merchant status query interface to


sub_mch_no string S0000000001 YES
return

user_bank_no string Bank number 999001 YES

user_account_name string Name of bank card WALIU A FALEYE YES

user_account_numb
string Bank card number 1990008116 YES
er

Bank verification number, if not, it


user_bank_verificat
string needs to be obtained from the interface 22141742470 YES
ion_number
of "query bank card information"

Bank Card KYC, if not, it needs to be


user_kyc_level string obtained from the interface of "query 1 YES
bank card information"

user_gps string Payer GPS positioning 9.55679,9.692809 YES

amount string Payment amount 12.00 YES

Caller order number, Order no length


30, 1-6 bits for date YYYYMM, 7-30 2020021811381193820
order_no string NO
bits for Institution generation, system 08332
unique

timestamp string Time stamp 10 bits 1583131981 YES

sign string The signature. View signature rules A745DF45DE2475A58 YES


Whether
Fields Type Description Example
must

8C26FD2E34D5D93

6.2.6 Response Field Descriptions

Whether
Fields Type Description
must

Success: payment succeeded;


ReturnCode string Fail: payment failed. YES
Notice that the first letter is uppercase.

SessionID string transaction ID YES

'sessionid 'of Bank Information Query YES


NameEnquiryRef string
Interface

DestinationInstitutionCode string Bank Code YES

ChannelCode string NIP transaction channel code YES

BeneficiaryAccountName string Name of payee's account YES

BeneficiaryAccountNumber string Number of payee's account YES

BeneficiaryKYCLevel string Payee account level YES

BeneficiaryBankVerificationNumber string Payee BVN YES

OriginatorAccountName string Name of payer's account YES

OriginatorAccountNumber string Number of payer's account YES

OriginatorBankVerificationNumber string Payer BVN YES

OriginatorKYCLevel string Payer account level YES

TransactionLocation string GPS positioning YES

Narration string Payment instructions YES

PaymentReference string Bank payment voucher YES

Amount string Transaction amount YES

ReturnMsg string Reason for failure, return when payment YES


Whether
Fields Type Description
must

fails.

6.2.7 Test Code Of Fixed QR Code Payment Interface

Fixed QR code(custom amount) Fixed QR code(fixed amount)

6.3 Dynamic QR Code Payment Interface

6.3.1 Description:

The App of the bank or tripartite Institution scans the dynamic QR code for payment.

6.3.2 Interface Address:

http://10.77.75.118/api.php/Bank/codepay

6.3.3 Dynamic QR code payment interface Request

{
"institution_number":"I0000000001",
"order_sn":"999166210609091415047567988413",
"order_amount":"100.54",
"user_bank_no":"999070",
"user_account_name":"Saturnin",
"user_account_number":"5050104057",
"user_bank_verification_number":"22141742438",
"user_kyc_level":"3",
"user_gps":"9.55679,9.692809",
"timestamp":"1581997091",
"sign":"DF4003ECA742CF5343E6593DEC033511"
}

6.3.4 Dynamic QR code payment interface Response

Payment Successful return:


{
"ReturnCode": "Success",
"SessionID": "999166200521205642713176980643",
"NameEnquiryRef": "",
"DestinationInstitutionCode": "999058",
"ChannelCode": "7",
"BeneficiaryAccountName": "OGUNLANA TUNJI",
"BeneficiaryAccountNumber": "0122047425",
"BeneficiaryKYCLevel": "1",
"BeneficiaryBankVerificationNumber": "22141784665",
"OriginatorAccountName": "",
"OriginatorAccountNumber": "0",
"OriginatorBankVerificationNumber": "0",
"OriginatorKYCLevel": "1",
"TransactionLocation": "9.55679,9.692809",
"Narration": "mobile pay",
"PaymentReference": "NQR/200521205642713176980643",
"Amount": "10"
}

Payment Failure to return:


{
"ReturnCode":"Fail",
"ReturnMsg":"sign error"
}
6.3.5 Request Field Descriptions

Whether
Fields Type Description Example
must

Institution number, obtained by


institution_number string I0000000001 YES
email

order_sn comes from dynamic QR 999166200521205642


order_sn string YES
code content. 713176980643

order_amount string Merchant's actual transaction amount 100.51 YES

user_bank_no string Bank number 999001 YES

user_account_name string Bank account name WALIU A FALEYE YES

user_account_number string Bank account number 1990008116 YES

Bank verification number, if not, it


user_bank_verification needs to be obtained from the
string 22141742470 YES
_number interface of "query bank card
information"

Bank Card KYC, if not, it needs to


user_kyc_level string be obtained from the interface of 1 YES
"query bank card information"

user_gps string Payer GPS positioning 9.55679,9.692809 YES

timestamp string Time stamp 10 bits 1583131981 YES

A745DF45DE2475A5
sign string The signature. View signature rules YES
88C26FD2E34D5D93
6.3.6 Response Field Descriptions

Whether
Fields Type Description
must

Success: payment succeeded;


ReturnCode string Fail: payment failed. YES
Notice that the first letter is uppercase.

SessionID string transaction ID YES

'sessionid 'of Bank Information Query YES


NameEnquiryRef string
Interface

DestinationInstitutionCode string Bank Code YES

ChannelCode string NIP transaction channel code YES

BeneficiaryAccountName string Name of payee's account YES

BeneficiaryAccountNumber string Number of payee's account YES

BeneficiaryKYCLevel string Payee account level YES

BeneficiaryBankVerificationNumber string Payee BVN YES

OriginatorAccountName string Name of payer's account YES

OriginatorAccountNumber string Number of payer's account YES

OriginatorBankVerificationNumber string Payer BVN YES

OriginatorKYCLevel string Payer account level YES

TransactionLocation string GPS positioning YES

Narration string Payment instructions YES

PaymentReference string Bank payment voucher YES

Reason for failure, return when payment


ReturnMsg string YES
fails.

6.3.7 Dynamic QR Code Generation Tool

http://10.77.75.118/index.php/CodePay/code?sub_id=1
6.4 Order payment status Interface

6.4.1 Description:

Query order status. Dynamic QR code interface device or plug-in side needs to use.

6.4.2 Interface Address

http://10.77.75.118/api.php/Gateway/orderquery

6.4.3 Order Payment Status Request

order_no request
{
"institution_number":"I0000000001",
"order_no":"202004301144434947004595",
"timestamp":"1581312432",
"sign":"C23692948DDD86DA6D1DE89382B983DF"
}

order_sn request
{
"institution_number":"I0000000001",
"order_sn":"999166200430114443323564809423",
"timestamp":"1581312432",
"sign":"C23692948DDD86DA6D1DE89382B983DF"
}

6.4.4 Order Payment Status Response

Successful return:
{
"ReturnCode":"Success",
"order_sn":"999166200430114443323564809423",
"order_no":"202004301144434947004595"
}

Paying retrun:
{
"ReturnCode":"Paying",
"order_sn":"999166200430114443323564809423",
"order_no":"202004301144434947004595"
}

Failure to return:
{
"ReturnCode":"Fail",
"ReturnMsg":"sign error "
}

6.4.5 Request Field Descriptions

Fields Type Description Example Whether must

institution_number string Institution number I0000000001 YES

Caller order number, Order no


Conditional
length 30, 1-6 bits for date
20200430114443494700 selection, and
order_no string YYYYMM, 7-30 bits for
4595 order_ sn 2
Institution generation, system
choose 1
unique

Conditional
Order number from dynamic 99916620043011444332 selection, and
order_sn string
QR code content 3564809423 order_ no 2
choose 1

timestamp string Time stamp 10 bits 1581312432 YES

The signature. View signature A745DF45DE2475A588


sign string YES
rules C26FD2E34D5D93
6.4.6 Response Field Descriptions

Whether
Fields Type Description
must

‘Success’: payment succeeded;


‘Fail’: payment failed;
ReturnCode string 'Paying' is Paying (need to call query interface to query order YES
status)
Notice that the first letter is uppercase

ReturnMsg string Reason for failure, return when payment fails. YES

6.5 Bank Card Information Query Interface

6.5.1 Description:

The three-party institution needs to call this interface if it does not have the details of the
bank card.

6.5.2 Interface Address:

http://10.77.75.118/api.php/Bank/query_account

6.5.3 Bank Card Information Query Request

{
"institution_number":"I0000000001",
"channel":"1",
"bank_number":"999058",
"account_number":"0122047425",
"timestamp":"1581312432",
"sign":"DF4003ECA742CF5343E6593DEC033511"
}

6.5.4 Bank Card Information Query Response

Successful return:
{
"ReturnCode":"Success",
"SessionID":"999166200521203631869003676187",
"DestinationInstitutionCode":"999058",
"ChannelCode":"12",
"AccountNumber":"0122047425",
"AccountName":"OGUNLANA TUNJI",
"BankVerificationNumber":"22141784665",
"KYCLevel":"2"
}

Failure to return:
{
"ReturnCode":"Fail",
"ReturnMsg":"Beneficiary Bank not available"
}

6.5.5 Request Field Descriptions

Whether
Fields Type Description Example
must

institution_number string Institution number, obtained by email I0000000001 YES

Default value is 1.
Please note that this 'channel' is the
channel string payment channel ID number defined 1 YES
by QR platform (non NIP
'ChannelCode' ).

bank_number string Bank Number 999058 YES

account_number string Bank Account Number 0122047425 YES

timestamp string Time stamp 10 bits 1581312432 YES

A745DF45DE2475A5
sign string The signature. View signature rules YES
88C26FD2E34D5D93
6.5.6 Response Field Descriptions

Fields Type Description Whether must

‘Success’: payment succeeded; YES


ReturnCode string ‘Fail’: payment failed.
Notice that the first letter is uppercase.

SessionID string Order number YES

DestinationInstitutionCode string Bank number YES

AccountNumber string Name of bank card YES

AccountName string Bank card number YES

BankVerificationNumber string Bank verification number YES

KYCLevel string Bank card KYC YES

Reason for failure, return when payment YES


ReturnMsg string
fails.

6.6 Transfer transaction the interface

6.6.1 Description:

The bank Institution App realizes the transfer function to the third party bank account
through the transfer interface.

6.6.2 Interface Address:

http://10.77.75.118/api.php/Bank/transfer

6.6.3 Transfer transaction Request

{
"institution_number":"I0000000001",
"channel":"1",
"amount":"8.90",
"order_no":"2020053000000000002",
"order_type":"3",
"payee_bank_no":"999001",
"payee_account_name":"WALIU A FALEYE",
"payee_account_number":"1990008116",
"payee_bank_verification_number":"22141742470",
"payee_kyc_level":"1",
"payer_bank_no":"999058",
"payer_account_name":"OGUNLANA TUNJI",
"payer_account_number":"0122047425",
"payer_bank_verification_number":"22141784665",
"payer_kyc_level":"7",
"user_gps":"9.55679,9.692809",
"timestamp":"1581997091",
"sign":"DF4003ECA742CF5343E6593DEC033511"
}

6.6.4 Transfer transaction Response

Successful return:
{
"ReturnCode":"Success",
"SessionID":"999166200521213651088550087925",
"NameEnquiryRef":"",
"DestinationInstitutionCode":"999058",
"ChannelCode":"12",
"BeneficiaryAccountName":"OGUNLANA TUNJI",
"BeneficiaryAccountNumber":"0122047425",
"BeneficiaryKYCLevel":"1",
"BeneficiaryBankVerificationNumber":"22141784665",
"OriginatorAccountName":"WALIU A FALEYE",
"OriginatorAccountNumber":"1990008116",
"OriginatorBankVerificationNumber":"22141742470",
"OriginatorKYCLevel":"1",
"TransactionLocation":"9.55679,9.692809",
"Narration":"mobile payment",
"PaymentReference":"20200726113811938200833807NIBSSQR",
"Amount":"8.9"
}

Failure to return:
{
"ReturnCode":"Fail",
"ReturnMsg":"Ssign error"
}

6.6.5 Request Field Descriptions

Whether
Fields Type Description Example
must

Institution number, obtained by


institution_number string I0000000001 YES
email

Default value is 1.
Please note that this 'channel' is
channel string the payment channel ID number 1 YES
defined by QR platform (non
NIP 'ChannelCode' ).

payee_bank_no string Payer bank number 999001 YES

payee_account_name string WALIU A FALEYE YES


Payer account name

payee_account_number string Payer bank account number 1990008116 YES

payee_bank_verificatio
string Payer BVN 22141742470 YES
n_number

payee_kyc_level string Payer KYC 1 YES

payer_bank_no string Payee bank number 999058 YES

payer_account_name string Payee account name OGUNLANA TUNJI YES


Whether
Fields Type Description Example
must

payer_account_number string Payee bank account number 0122047425 YES

payer_bank_verificatio
string Payee BVN 22141784665 YES
n_number

payer_kyc_level string Payee KYC 7 YES

user_gps string Payer positioning 9.55679,9.692809 YES

amount string The payment amount 100.00 YES

Caller order number, Order no


length 30, 1-6 bits for date
20200530000000000
order_no string YYYYMM, 7-30 bits for NO
02
Institution generation, system
unique

order_type string Fixed:3 3 NO

timestamp string Time stamp 10 bits 1583131981 YES

A745DF45DE2475A
The signature. View signature
sign string 588C26FD2E34D5D YES
rules
93

6.6.6 Response Field Descriptions

Whether
Fields Type Description
must

‘Success’: success;
ReturnCode string ‘Fail’: failure YES
Notice that the first letter is uppercase

ReturnMsg string Reason for failure, return when payment fails. YES
6.7 Generate Dynamic QR Code Interface

6.7.1 Description

The dynamic QR code generated by the merchant equipment calling interface is used for
user scanning payment. The equipment generating QR code needs to call the order status query
interface every 3-5 seconds to query the order status.

6.7.2 Interface Address

http://10.77.75.118/api.php/Gateway/codepay

6.7.3 Generate Dynamic QR Code Request

{
"channel":"1",
"institution_number":"I0000000001",
"mch_no":"M0000000001",
"sub_mch_no":"S0000000002",
"code_type":"1",
"amount":"12.00",
"order_no":"202002181138119382008332",
"order_type":"4",
"unique_id":"kfc001",
"timestamp":"1581997091",
"sign":"DF4003ECA742CF5343E6593DEC033511"
}

6.7.4 Generate Dynamic QR Code Response

Examples of successful response:


{
"ReturnCode": "Success",
"OrderSn": "999166200602170906712766556083",
"CodeUrl":
"0002010102121531**999166**999166****M000000000126720019NG.COM.NIBSS-
PLC.QR0111S00000000010230999166200521092252016378356101520400005303566
5402105802NG5913Test Merchant6007Nigeria6304A54A"
}

Failure to return:
{
"ReturnCode":"Fail",
"ReturnMsg":"Sign error"
}

6.7.5 Request Field Descriptions

Whether
Fields Type Description Example
must

Institution number, obtained by YES


institution_number string I0000000001
email

Default value is 1. YES


Please note that this 'channel' is the
channel string payment channel ID number defined 1
by QR platform (non NIP
'ChannelCode' ).

Standard type of QR code, EMVCo


code_type string 1 YES
standard QR code

mch_no string Merchant number M0000000001 YES

sub_mch_no string Sub merchant number S0000000001 YES

timestamp string Time stamp 10 bits 1583131981 YES

amount string The payment amount 100.00 YES

Caller order number, Order no length YES


30, 1-6 bits for date YYYYMM, 7-
order_no string 202003124654646546
30 bits for Institution generation,
system unique
Whether
Fields Type Description Example
must

order_type string Default: 4 4 YES

Additional data fields uploaded by NO


unique_id string kfc001
merchants

A745DF45DE2475A5 YES
sign string The signature. View signature rules
88C26FD2E34D5D93

6.7.6 Request Field Descriptions

Whether
Fields Type Description
must

Success: payment succeeded;


ReturnCode string Fail: payment failed; YES
Notice that the first letter is uppercase.

CodeUrl string Code to generate QR code content. YES

ReturnMsg string Reason for failure, return when payment fails. YES

6.8 Create Merchant Interface

6.8.1 Description:

Create the first level merchant, and complete the creation of the first level merchant by
uploading the basic information and settlement information of the merchant.

6.8.2 Interface Address:

http://10.77.75.118/api.php/Gateway/create_merchant

6.8.3 Create Merchant Request

{
"institution_number":"I0000000001",
"name":"test merchant 001",
"tin":"999175001",
"contact":"somfy",
"phone":"8251359",
"email":"somfy@qq.com",
"address":"dalian kai fa qu",
"bank_no":"999024",
"account_name":"Rajkumar NA Pandey",
"account_number":"2348121522667",
"m_fee_bearer":"0",
"timestamp":"1581312432",
"sign":"DF4003ECA742CF5343E6593DEC033511"
}

6.8.4 Create Merchant Response

Successful return:
{
"ReturnCode": "Success",
"InstitutionNumber": "I0000000001",
"Mch_no": "M0000000061",
"MerchantName": "test merchant 001",
"MerchantTIN": "999175001",
"MerchantAddress": "dalian kai fa qu",
"MerchantContactName": "somfy",
"MerchantPhoneNumber": "8251359",
"MerchantEmail": "somfy@qq.com"
}

Failure to return:
{
"ReturnCode": "Fail",
"ReturnMsg": "Merchant closed collection"
}
6.8.5 Request Field Descriptions:

Whether
Fields Type Description Example
must

Institution number, obtained by YES


institution_number string I0000000001
email

name string Merchant name test merchant 001 YES

tin string Merchant identification number 999175001 NO

contact string Contacts name somfy YES

phone string Contact number 8251359 YES

email string Contact Email address somfy@qq.com YES

bank_no string Bank Code 999707 YES

account_name string Account Name Somfy YES

account_number string Account Number 12586321656 YES

fee borne party


0: Merchant;
m_fee_bearer string 0 YES
1: Acquirer;
2: Payer;

address string Merchant address Dalian kai fa qu YES

timestamp string Time stamp 10 bits 1583131981 YES

The signature. View signature A745DF45DE2475A588C


sign string YES
rules 26FD2E34D5D93

6.8.6 Response Field Descriptions

Fields Type Description Whether must

‘Success’: success; YES


ReturnCode string ‘Fail’: failure
Notice that the first letter is uppercase
Fields Type Description Whether must

InstitutionNumber string Institution number YES

Mch_no string Merchant number YES

MerchantName string Merchant name YES

MerchantTIN string Merchant identification number YES

MerchantAddress string Merchant address YES

MerchantContactName string Contacts YES

MerchantPhoneNumber string Contact number YES

MerchantEmail string Contact Email address YES

ReturnMsg string Reason for failure, return when payment fails. YES

6.9 Merchant Binding Collection Account Interface

6.9.1 Description:

Bind the bank account information used by the merchant for collection and settlement.

6.9.2 Interface Address:

http://10.77.75.118/api.php/Gateway/binding_collection_account

6.9.3 Binding Collection Account Request

{
"institution_number":"I0000000001",
"mch_no":"M0000000061",
"bank_no":"999024",
"account_name":"Rajkumar NA Pandey",
"account_number":"2348121522667",
"timestamp":"1581312432",
"sign":"DF4003ECA742CF5343E6593DEC033511"
}
6.9.4 Binding Collection Account Response

Successful return:
{
"ReturnCode": "Success",
"InstitutionNumber": "I0000000001",
"Mch_no": "M0000000061"
}

Failure to return:
{
"ReturnCode": "Fail",
"ReturnMsg": "Merchant closed collection"
}

6.9.5 Request Field Descriptions:

Whether
Fields Type Description Example
must

Institution number, obtained by


institution_number string I0000000001 YES
email

mch_no string Merchant number M0000000061 YES

Bank number, see attachment


bank_no string 999024 YES
<bank.xls>

account_name string Account Name Rajkumar NA Pandey YES

account_number string Account Number 2348121522667 YES

timestamp string Time stamp 10 bits 1583131981 YES

The signature. View signature A745DF45DE2475A58


sign string YES
rules 8C26FD2E34D5D93
6.9.6 Request Field Descriptions

Fields Type Description Whether must

‘Success’: success;
ReturnCode string ‘Fail’: failure YES
Notice that the first letter is uppercase

InstitutionNumber string Institution number YES

Mch_no string Merchant number YES

ReturnMsg string Reason for failure, return when payment fails. YES

6.10 Create Sub Merchant Interface

6.10.1 Description:

Merchant's secondary merchants can be used in different stores, cash register configurations,
etc.

6.10.2 Interface Address:

http://10.77.75.118/api.php/Gateway/create_sub_merchant

6.10.3 Create Sub Merchant Request:

{
"institution_number":"I0000000001",
"mch_no":"M0000000061",
"name":"Cashier002",
"email":"somfy@qq.com",
"phone_number":"0846546546546",
"sub_fixed":"1",
"sub_amount":"588",
"timestamp":"1581312432",
"sign":"DF4003ECA742CF5343E6593DEC033511"
}
6.10.4 Create Sub Merchant Response:

Successful return:
{
"ReturnCode": "Success",
"InstitutionNumber": "I0000000001",
"Mch_no": "M0000000061",
"Sub_name": "Cashier002",
"Sub_mch_no": "S0000000052",
"Emvco_code":
"0002010102111531**999166**999166****M000000013126380019NG.COM.NIB
SS-
PLC.QR0111S000000013152040000530356654035885802NG5906KFC0096007Nig
eria6304B18E"
}

Failure to return:
{
"ReturnCode": "Fail",
"ReturnMsg": "Merchant closed collection"
}

6.10.5 Request Field Descriptions:

Whether
Fields Type Description Example
must

Institution number, obtained by


institution_number string I0000000001 YES
email

mch_no string Merchant number M0000000061 YES

name string Sub Merchant name 999175001 YES

email string Sub merchant Email address somfy@qq.com YES

phone_number string Phone number 08456465465 YES


Whether
Fields Type Description Example
must

Fixed QR code type:


sub_fixed string "0" has no amount QR code; 0 YES
"1" has the amount QR code;

sub_amount string QR code amount 10.00 YES

timestamp string Time stamp 10 bits 1583131981 YES

The signature. View signature A745DF45DE2475A588C


sign string YES
rules 26FD2E34D5D93

6.10.6 Request Field Descriptions

Fields Type Description Whether must

‘Success’: success;
ReturnCode string ‘Fail’: failure YES
Notice that the first letter is uppercase

InstitutionNumber string Institution number YES

Mch_no string Merchant number YES

Sub_name string Sub Merchant name YES

Sub_mch_no string Sub Merchant number YES

Emvco_code string Sub merchant EMVCo standard QR code information YES

ReturnMsg string Reason for failure, return when payment fails. YES

6.11 Merchant Information Query Interface

6.11.1 Description:

Basic information inquiry of merchants.


6.11.2 Interface Address:

http://10.77.75.118/api.php/Gateway/query_mer_info

6.11.3 Merchant Information Query Request

{
"institution_number":"I0000000001",
"mch_no":"M0000000061",
"timestamp":"1581312432",
"sign":"DF4003ECA742CF5343E6593DEC033511"
}

6.11.4 Merchant Information Query Response

Successful return:
{
"ReturnCode": "Success",
"Mch_no": "M0000000061",
"MerchantName": "test merchant 001",
"MerchantTIN": "999175001",
"MerchantAddress": "dalian kai fa qu",
"MerchantContactName": "somfy",
"MerchantPhoneNumber": "8251359",
"MerchantEmail": "somfy@qq.com",
"MerchantAddTime": "2020-07-13 03:54:39",
"SubMerchantList": [
{
"Sub_name": "Cashier001",
"Sub_no": "S0000000051",
"Emvco_code":
"0002010102111531**999166**999166****M000000006126380019NG.COM.N
IBSS-PLC.QR0111S00000000515204000053035665802NG5917test merchant
0016007Nigeria63047E34"
},
{
"Sub_name": "Cashier002",
"Sub_no": "S0000000052",
"Emvco_code":
"0002010102111531**999166**999166****M000000006126380019NG.COM.N
IBSS-PLC.QR0111S00000000525204000053035665802NG5917test merchant
0016007Nigeria6304D7EF"
}
]
}

Failure to return:
{
"ReturnCode": "Fail",
"ReturnMsg": "Merchant closed collection"
}

6.11.5 Request Field Descriptions:

Whether
Fields Type Description Example
must

Institution number, obtained by


institution_number string I0000000001 YES
email.

mch_no string Merchant number M0000000061 YES

timestamp string Time stamp 10 bits 1583131981 YES

The signature. View signature A745DF45DE2475A588


sign string YES
rules C26FD2E34D5D93

6.11.6 Request Field Descriptions

Fields Type Description Whether must

‘Success’: success; YES


ReturnCode string ‘Fail’: failure
Notice that the first letter is uppercase
Fields Type Description Whether must

InstitutionNumber string Institution number YES

Mch_no string Merchant number YES

MerchantName string Merchant name YES

MerchantTIN string Merchant identification number YES

MerchantAddress string Merchant address YES

MerchantContactName string Contacts YES

MerchantPhoneNumber string Contact number YES

MerchantEmail string Contact Email Address YES

MerchantAddTime string Add the time YES

SubMerchantList object Sub merchant list YES

ReturnMsg string Reason for failure, return when payment fails. YES

6.11.7 SubMerchantList Data:

Fields Type Description Whether must

Sub_name string Sub Merchant name YES

Sub_no string Sub Merchant number YES

Emvco_code string Sub merchant Emvco standard QR code information YES

6.12 Merchant Transaction Record Query Interface

6.12.1 Description:

The query of merchant transaction record can query and return data according to conditions

6.12.2 Interface Address:

http://10.77.75.118/api.php/Gateway/query_mer_transaction
6.12.3 Merchant Transaction Record Query Request

{
"institution_number":"I0000000001",
"mch_no":"M0000000001",
"sub_mch_no":"S0000000002",
"start_time":"2020-07-01 00:00:00",
"end_time":"2020-07-31 23:59:59",
"order_type":"",
"page":"1",
"timestamp":"1581312432",
"sign":"DF4003ECA742CF5343E6593DEC033511"
}

6.12.4 Merchant Transaction Record Query Response

Successful return:
{
"ReturnCode": "Success",
"Page": "1",
"TotalRows": "5",
"TotalPages": "1",
"List": [
{
"InstitutionName": "Testing Institution",
"MerchantName": "Test merchant",
"SubMerchantName": "1-Cashier",
"Amount": "12.00",
"Time": "2020-07-10 13:07:14",
"OrderSn": "999166200710130713913047644681",
"OrderNo": "202007101138119382008338005",
"OrderType": "1"
},
{
"InstitutionName": "Testing Institution",
"MerchantName": "Test merchant",
"SubMerchantName": "1-Cashier",
"Amount": "12.00",
"Time": "2020-07-10 13:05:45",
"OrderSn": "999166200710130545225130427779",
"OrderNo": "202007101138119382008338005",
"OrderType": "1"
},
{
"InstitutionName": "Testing Institution",
"MerchantName": "Test merchant",
"SubMerchantName": "1-Cashier",
"Amount": "12.00",
"Time": "2020-07-10 12:57:07",
"OrderSn": "999166200710125706734698797739",
"OrderNo": "20200710113811938200833802",
"OrderType": "1"
},
{
"InstitutionName": "Testing Institution",
"MerchantName": "Test merchant",
"SubMerchantName": "1-Cashier",
"Amount": "10.00",
"Time": "2020-07-06 08:12:43",
"OrderSn": "999166200706081242156401093860",
"OrderNo": "202007061138119382008001",
"OrderType": "1"
},
{
"InstitutionName": "Testing Institution",
"MerchantName": "Test merchant",
"SubMerchantName": "1-Cashier",
"Amount": "100.00",
"Time": "2020-07-06 08:12:16",
"OrderSn": "999166200706081215886899078615",
"OrderNo": "202007061138119382008001",
"OrderType": "1"
}
]
}

Failure to return:
{
"ReturnCode": "Fail",
"ReturnMsg": "Merchant closed collection"
}

6.12.5 Request Field Descriptions:

Whether
Fields Type Description Example
must

Institution number, obtained by


institution_number string I0000000001 YES
email

mch_no string Merchant number M0000000001 YES

sub_mch_no string Sub-Merchant number S0000000002 NO

start_time string Start Time 2020-07-01 00:00:00 YES

end_time string End Time 2020-07-31 23:59:59 YES

1: Fixed QR code
order_type string 2: Payment code 1 NO
4: Dynamic QR code

The data list page number, the


page string default is "1", representing 1 YES
page 1.

timestamp string Time stamp 10 bits 1583131981 YES

The signature. View signature A745DF45DE2475A588


sign string YES
rules C26FD2E34D5D93
6.12.6 Response Field Descriptions

Fields Type Description Whether must

‘Success’: success; YES


ReturnCode string ‘Fail’: failure
Notice that the first letter is uppercase

Page string The data list page number returned YES

The total number of data returned, such as: return YES


TotalRows string
100 rows of data, is "100"

Returns the total number of pages of the data, with YES


TotalPages string
"20" rows of data per page by default

List object Data list YES

ReturnMsg string Reason for failure, return when payment fails. YES

6.12.7 List Data

Fields Type Description Whether must

InstitutionName string Name of Institution YES

MerchantName string Merchant name YES

SubMerchantNa
string Sub Merchant name YES
me

Amount string Transaction amount YES

Time string Transaction Time YES

OrderSn string QR order number YES

OrderNo string Institution order number YES

Transaction type. 1 Fixed QR code, 2 Payment code, 4


OrderType string YES
Dynamic QR code
6.13 Create Merchants In Batch Interface

6.13.1 Description:

Batch create a level one merchant.

6.13.2 Interface Address:

http://10.77.75.118/api.php/Gateway/batch_create_merchant

6.13.3 Batch Create Merchant Request

{
"institution_number":"I0000000001",
"timestamp":"1581997091",
"sign":"903B4A1EB3262AF1EAFF45E7BC75A896",
"list":[
{
"name":"KFC010",
"tin":"001002060",
"contact":"somfy",
"phone":"08176521062",
"email":"somfy@qq.com",
"bank_no":"999191",
"account_name":"Peter Mokalo - (2348059561196)",
"account_number":"08059561196",
"m_fee_bearer":"0"
},
{
"name":"KFC011",
"tin":"001002061",
"contact":"somfy",
"phone":"08176521062",
"email":"somfy@qq.com",
"bank_no":"999024",
"account_name":"Rajkumar NA Pandey",
"account_number":"2348121522667",
"m_fee_bearer":"1"
}
]
}

6.13.4 Batch Create Merchant Response

Successful return:
{
"ReturnCode": "Success",
"InstitutionNumber": "I0000000001",
"List": [
{
"Name": "KFC010",
"Mch_no": "M0000000141",
"M_tin": "001002060",
"State": "success",
"Remark": "Added successfully"
},
{
"Name": "KFC011",
"Mch_no": "",
"M_tin": "001002061",
"State": "fail",
"Remark": "97 Timeout waiting for response from destination"
}
]
}

Failure to return:
{
"ReturnCode": "Fail",
"ReturnMsg": "Merchant closed collection"
}
6.13.5 Request Field Descriptions:

Whether
Fields Type Description Example
must

Institution number, obtained by


institution_number string I0000000001 YES
email

timestamp string Time stamp 10 bits 1583131981 YES

The signature. View signature A745DF45DE2475A58


sign string YES
rules 8C26FD2E34D5D93

Merchant array. Note: ‘List’


list Array YES
does not participate in signing

List Merchant Array:

Whether
Fields Type Description Example
must

name string Merchant name test merchant 001 YES

tin string Merchant TIN 999175001 NO

contact string Merchant contact somfy YES

phone string Merchant contact phone number 8251359 YES

email string Contact email somfy@qq.com YES

bank_no string The bank number 999191 YES

account_name string The bank account name Peter Mokalo YES

account_number string The bank account number 08059561196 YES

fee borne party


0: Merchant;
m_fee_bearer string 0 YES
1: Acquirer;
2: Payer;
6.13.6 Request Field Descriptions

Whether
Fields Type Description
must

‘Success’: success; YES


ReturnCode string ‘Fail’: failure
Notice that the first letter is uppercase

InstitutionNumber string Institution number YES

ReturnMsg string Reason for failure, return when payment fails. YES

List Array Merchant array YES

List Response Data:

Whether
Fields Type Description
must

Name string Merchant name YES

Mch_no string Merchant number, returned when successfully added NO

M_tin string Merchant TIN YES

State string Add status; ‘success’: success; ‘fail’: failure YES

Remark string Reasons for failure YES

6.14 Create Sub Merchants in Batch Interface

6.14.1 Description:

Batch create merchant's sub-merchant.

6.14.2 Interface Address:

http://10.77.75.118/api.php/Gateway/batch_create_sub_merchant

6.14.3 Batch Create Sub-Merchant Request

{
"institution_number":"I0000000001",
"mch_no":"M0000000131",
"timestamp":"1581997091",
"sign":"903B4A1EB3262AF1EAFF45E7BC75A896",
"list":[
{
"sub_name":"KFC-00005",
"sub_email":"somfy@qq.com",
"sub_phone_number":"08176521062",
"sub_fixed":"0",
"sub_amount":""
},
{
"sub_name":"KFC-00006",
"sub_email":"somfy@qq.com",
"sub_phone_number":"08176521062",
"sub_fixed":"1",
"sub_amount":"588"
}
]
}

6.14.4 Batch Create Sub-Merchant Response

Successful return:
{
"ReturnCode": "Success",
"InstitutionNumber": "I0000000001",
"Mch_no": "M0000000131",
"List": [
{
"Sub_name": "KFC-00005",
"Sub_mch_no": "S0000000130",
"Emvco_code":
"0002010102111531**999166**999166****M000000013126380019NG.C
OM.NIBSS-
PLC.QR0111S00000001305204000053035665802NG5906KFC0096007Ni
geria6304C3AC"
},
{
"Sub_name": "KFC-00006",
"Sub_mch_no": "S0000000131",
"Emvco_code":
"0002010102111531**999166**999166****M000000013126380019NG.C
OM.NIBSS-
PLC.QR0111S000000013152040000530356654035885802NG5906KFC00
96007Nigeria6304B18E"
}
]
}

Failure to return:
{
"ReturnCode": "Fail",
"ReturnMsg": "Merchant closed collection"
}

6.14.5 Request Field Descriptions:

Whether
Fields Type Description Example
must

Institution number, obtained by


institution_number string I0000000001 YES
email

Merchant number. The 'Mch_no'


mch_no string parameter returned through the M0000000001 YES
'batch_create_merchant' interface.

timestamp string Time stamp 10 bits 1583131981 YES


Whether
Fields Type Description Example
must

A745DF45DE2475A5
sign string The signature. View signature rules YES
88C26FD2E34D5D93

Merchant array. Note: ‘List’ does


list Array YES
not participate in signing

List Merchant Array:

Whether
Fields Type Description Example
must

sub_name string Sub-merchant name test merchant 001 YES

sub_email string Sub-merchant Email address somfy@qq.com YES

Telephone number of sub


sub_phone_number string merchant for receiving SMS 08176521062 YES
reminder

Fixed QR code type:


sub_fixed string "0" has no amount QR code; 0 YES
"1" has the amount QR code;

sub_amount string Fixed amount 10.00 YES

6.14.6 Request Field Descriptions

Whether
Fields Type Description
must

‘Success’: success;
ReturnCode string ‘Fail’: failure YES
Notice that the first letter is uppercase

InstitutionNumber string Institution number YES

Mch_no string Merchant number YES

ReturnMsg string Failure reason, return on failure YES


Whether
Fields Type Description
must

List array Sub-merchant array YES

List Response Data:

Whether
Fields Type Description
must

Sub_name string Sub-merchant name YES

Sub_mch_no string Sub-merchant number YES

Emvco_code string EMVCo standard QR Code information YES

6.15 Transaction Fee Inquiry Interface

6.15.1 Description:

The bank calls payment interface to query transaction fee information before launching a
transaction.

6.15.2 Interface Address:

http://10.77.75.118/api.php/Bank/query_fee

6.15.3 Transaction Fee Inquiry Request

{
"institution_number":"I0000000001",
"mch_no":"M0000000001",
"sub_mch_no":"S0000001304",
"user_bank_no":"999070",
"amount":"100.00",
"timestamp":"1612874982",
"sign":"AA994A06E798DF8293398786C38A67BF"
}
6.15.4 Transaction Fee Inquiry Response

Successful return:
{
"ReturnCode": "Success",
"MerchantName": " ceo merchant",
"SubMerchantName": "TFCA-ISLAND",
"TransactionAmount": "100.00",
"Fee": "0.5",
"VAT": "0.0375",
"Borne": "Payer",
"PaymentAmount": "100.54",
}

Failure to return:
{
"ReturnCode":"Fail",
"ReturnMsg":"Sign Error"
}

6.16.5 Request Field Descriptions:

Whether
Fields Type Description Example
must

institution_number string Institution number I0000000001 YES

mch_no string Merchant number M0000000001 YES

sub_mch_no string Sub merchant number S0000001304 YES

Payer's Bank Code (6-digit code YES


user_bank_no string 999070
assigned by NIP)

amount string transaction amount 100.00 YES

timestamp string Time stamp 10 bits 1605764398 YES

The signature. View signature A745DF45DE2475A588 YES


sign string
rules C26FD2E34D5D93
6.16.6 Request Field Descriptions

Whether
Fields Type Description
must

‘Success’: success;
ReturnCode string ‘Fail’: failure. YES
Notice that the first letter is uppercase

MerchantName string Merchant name YES

SubMerchantName string Sub-Merchant name YES

TransactionAmount string transaction amount YES

Fee string Service charge YES

VAT string VAT amount YES

Borne string fee borne party: Merchant, Acquirer & Payer YES

PaymentAmount string payment amount YES

transaction type, ‘Inner’: Intra-bank transaction; ‘Outer’: YES


TransactionType string
Inter-Bank transaction.

ReturnMsg string Reason for failure, return when payment fails. YES

6.16 Cancel Dynamic QR Code Interface

6.16.1 Description

Cancel the dynamic QR code transaction. After cancellation, the original dynamic QR code
will become invalid.

6.16.2 Address Interface

http://10.77.75.118/api.php/Gateway/cancel

6.16.3 Request

{
"institution_number":"I0000000001",
"order_sn":"999166211012063138966779021312",
"timestamp":"1581997091",
"sign":"DF4003ECA742CF5343E6593DEC033512"
}
6.16.4 Response
Successful return:
{
"ReturnCode": "Success",
"OrderSn": "999166211012063138966779021312",
"OrderNo": "202110121138119382008342"
}

Failure to return:
{
"ReturnCode": "Fail",
"OrderSn": "999166211012063138966779021312",
"OrderNo": "202110121138119382008342",
"ReturnMsg": "The current transaction cannot be cancelled"
}

6.16.5 Request Field Descriptions

Whether
Fields Type Description Example
must

institution_number string Institution number I0000000001 YES

order_sn comes from the


999166200521205642713
order_sn string parameter content of dynamic YES
176980643
QR code

timestamp string Time stamp 10 bits 1583131981 YES

The signature. View signature A745DF45DE2475A588C


sign string YES
rules 26FD2E34D5D93

6.16.6 Response Field Descriptions

Whether
Fields Type Description
must

ReturnCode string ‘Success’: success; YES


Whether
Fields Type Description
must

‘Fail’: failure.
Notice that the first letter is uppercase

OrderSn string Transaction ID YES

OrderNo string Institution transaction ID YES

ReturnMsg string Reason for failure, return when payment fails. YES

You might also like