Native Pay
API method
URL |
|
Method |
POST |
Parameter organization format |
application/x-www-form-urlencoded |
Native pay Request Parameters
| Parameter | Type | Required | Example | Description |
|---|---|---|---|---|
appid |
String(32) |
YES |
mch12345 |
Your Merchant Number. Check on merchant ksher. The format is mch{Merchant No}. |
nonce_str |
String(32) |
YES |
ae0e6jm55qlq1o7 |
Random string, must be unique for signature. |
sign |
String(256) |
YES |
b000e9b6ec3fbda482d96a3d7c75c6956a5864336c3098462525e7229e8e046e490939a3e8b320a6c68eb63795a25b79d8c74f042f0972039bb5fe9b861cefb4 |
To verify the accuracy of the request message, please refer to the signature creation method in the section Signature Creation. |
channel |
String(32) |
YES |
Payment want to request to pay. Value range: wechat: Wechat Wallet. alipay: Alipay Wallet. alipayplus: Alipay+ Wallet. Country support Japan and Thailand. promptpay: PromptPay QR code (Thailand standard bank transfer QR code). Country support only Thailand. truemoney: TrueMoney Wallet. Country support only Thailand. airpay: Shopeepay Wallet. Country support only Thailand. scb_qrcard: QR Card Country support only Thailand. |
|
sign |
String(256) |
YES |
b000e9b6ec3fbda482d96a3d7c75c6956a5864336c3098462525e7229e8e046e490939a3e8b320a6c68eb63795a25b79d8c74f042f0972039bb5fe9b861cefb4 |
To verify the accuracy of the request message, please refer to the signature creation method in the section Signature Creation. |
mch_order_no |
String(32) |
YES |
123456acb |
Merchant order number, generated by merchant self. It must be unique on the merchant side. |
total_fee |
Integer |
YES |
100 |
total amount of the order and it must be an integer, add 00 for decimal.Example 150.50 THB total_fee = 15050 |
fee_type |
String(16) |
YES |
THB |
Currency code for total_fee. refer to with ISO 4217. Value range: THB: Thai Baht use for Thailand. MYR: Malaysia JPY: Japan AED: United Arab Emirates dirham use for UAE. |
notify_url |
String(256) |
NO |
the url to receive the asynchronous notification about the status of the payment from Ksher; If merchant leaves this field blank, then there will be no notification to send back to merchant. |
|
img_type |
String(3) |
No |
"png" |
Ksher system can generate two types of the qrcode image: png, svg, the default is png |
product |
String(512) |
NO |
Name or description of your product info. |
|
attach |
String(Eng ≤ 2048 characters, Thai/CN ≤ 682 characters) |
NO |
any extra information can be added here. |
|
device_id |
String(Eng ≤ 64 characters, Thai/CN ≤ 21 characters) |
NO |
POS001 |
terminal id from which the request is sent, assigned by merchant. |
operator_id |
String(32) |
NO |
41234 |
operator_id number at cashier, using for merchant have Multi level account or Cashier. For more information please check at Multi level account or Cashier |
version |
String(32) |
NO |
3.0.0 |
version api |
tmn_expire_time |
Int |
NO |
60 |
QR time available in second (support Truemoney only) Example 60 is mean QR can use in 60 second after generate. |
expire_time |
Int |
NO |
60 |
QR time available in second. channel support: promptpay, scb_qrcard. If merchant leave this blank, expire time will be default on wallet. Example 60 is mean QR can use in 60 second after generate. Please see QR Expiration Time for more detail. |
{
"appid": "mch20163",
"channel": "wechat",
"fee_type": "THB",
"img_type": "svg",
"mch_order_no": "1495773587",
"nonce_str": "sQ8gfSpeeV5Ld8ulW9q7JxUnXSOiZ90Y",
"notify_url": "http://www.yoursweb.com/notify",
"sign": "4b609e384500ba8b2ed5eddbcc3aab5c7325c45a13bb531655ac459022da0d15ead7e6ab8d73f6d1182117547a6e53871c8da44d99cf02e9d8420c9b20130a2c",
"time_stamp": "20170526113947",
"total_fee": 10,
"version": "1.0.0"
}
curl --location 'https://api.mch.ksher.net/KsherPay/native_pay?appid=mch35005&channel=promptpay&fee_type=THB&mch_order_no=20230711163201&nonce_str=90c8d5ad3d4aa1a538f610d259c35c97¬ify_url=https%3A%2F%2F6b2f-171-103-29-30.ngrok-free.app%2Fapi%2Fgateway_pay%2Fnotify_url%2F&sign=95c905ba7670591e9cbf0f062c7adccec034f077f023c3f6d8325b55ca672d58d9787af8b0319f6808ea81aa96b575e2f17c1a22d3b8106336b63c2921cec37ecd02ef5481ec9dd9165f44fd376f34cc8f77948c8683445b692f23eb629f11dc82cddd636e0cdb71b8f07b1c7ce21e4ec124449aae40797aacaa05758c36822d&time_stamp=2023071717532828S&total_fee=100' \
--header 'Content-Type: application/x-www-form-urlencoded' \
--data-urlencode 'appid=mch35005' \
--data-urlencode 'channel=promptpay' \
--data-urlencode 'fee_type=THB' \
--data-urlencode 'mch_order_no=20230711163201' \
--data-urlencode 'nonce_str=90c8d5ad3d4aa1a538f610d259c35c97' \
--data-urlencode 'notify_url=https://6b2f-171-103-29-30.ngrok-free.app/api/gateway_pay/notify_url/' \
--data-urlencode 'sign=95c905ba7670591e9cbf0f062c7adccec034f077f023c3f6d8325b55ca672d58d9787af8b0319f6808ea81aa96b575e2f17c1a22d3b8106336b63c2921cec37ecd02ef5481ec9dd9165f44fd376f34cc8f77948c8683445b692f23eb629f11dc82cddd636e0cdb71b8f07b1c7ce21e4ec124449aae40797aacaa05758c36822d' \
--data-urlencode 'time_stamp=2023071717532828S' \
--data-urlencode 'total_fee=100'
Native pay SUCCESS Response Parameters
| Parameter | Type | Required | Example | Description |
|---|---|---|---|---|
code |
int |
YES |
0 |
Value Range:
|
sign |
String(256) |
YES |
b000e9b6ec3fbda482d96a3d7c75c6956a5864336c3098462525e7229e8e046e490939a3e8b320a6c68eb63795a25b79d8c74f042f0972039bb5fe9b861cefb4 |
To verify the accuracy of this response, please refer to the method outlined in the section Verify Signature. |
data Parameters (JSON ) |
||||
result |
string(16) |
YES |
SUCCESS |
SUCCESS |
appid |
String(32) |
YES |
mch12345 |
Your Merchant Number. Check on merchant ksher. The format is mch{Merchant No}. |
device_id |
String(Eng ≤ 64 characters, Thai/CN ≤ 21 characters) |
NO |
POS001 |
terminal id from which the request is sent, assigned by merchant. |
nonce_str |
String(32) |
YES |
ae0e6jm55qlq1o7 |
Random string, must be unique for signature. |
mch_order_no |
String(32) |
YES |
123456acb |
Merchant order number, generated by merchant self. It must be unique on the merchant side. |
ksher_order_no |
String(32) |
YES |
generated by Ksher |
|
code_url |
String(64) |
NO |
weixin://wxpay/s/An4baqw |
merchant can use this url to generate a qrcode and show it to the consumer to scan On shopeepay can’t using encode QR code_url text. have to use this value by add <img src=code_url> on HTML side |
imgdat |
string(1024) |
YES |
the png format image data will be returned to the API caller unless "svg" is requested explicitly, the png data is base64 encoded and can be assigned directly to the "src" field of img object in the html page. shopeepay not support imgdat, if scan by using this value will error display. |
|
trade_type |
string(8) |
NO |
NATIVE |
value range: JSAP, NATIVE, APP, it should be "NATIVE" for native pay |
{
"code": 0,
"data": {
"appid": "mch20163",
"code_url": "weixin://wxpay/bizpayurl?pr=n8F22H4",
"device_id": "",
"imgdat": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAXIAAAFyAQAAAADAX2ykAAACoElEQVR4nO2aTWrkMBBGX40FWaohB+ijqG82zJFyA/soOcCAtWyQ+WYhqdOdMJMOOKY9VC0MRm/xQVE/KpWJr9j040s4OO+8884777zzf+OtWaB/zJgOALmfnTbU4/zKfJIkzbdn2QwYJEm65b9bj/Mr87lHaJqX6lXSDHaCGtMb63F+HT68+9d0LIH0cjCIAvK2epxfl3/vX0szYjqWILLx4Xb8aPqd/7d1//ZYbQ7NTzKisPTCjZMfTb/zd/GTmZkdwE45YD9nIL0GgKW2z9vqcX4lvsbvW4RqOhZEXkzkpRfh7fQ4vy5Pvfwklfaf+l1II4MgqnbS9Qo1Ppp+5+/hNeYnaYwS5ABpHgTxbNK8GMSCxg31OL8ub3Y8Wx1oTMcCsFh1chtiPfl8Y8+8RsBOsSC9tl7K7AA1nKfj2eeT++Rr/dUYr+eTNRcnlZqpNcbSuUfT7/wn1vwGtDIbJUmlN1T1QPL+apf8pX+WaqxqBtIM0kx1dzt1/+6Qb/ffyUBwNhFL0HQASy9DMQhFk134R9Pv/CfW629BmodLai43hfliHr8746/yc7dy5fM+7hjcv/vkm3/fxlTE3lVdTa28v9or39+PcihMRwEsQcTfQeShWCu9lwL8aPqdv4+PZ4McMDsMshOX+Qb0ceWmepxfk79qrcgBYJDGeLZWf+PZfP68Y/5tf7K2ziNLz8jd3ZvqcX4tvtXfNALkZ4AlQBxkRIBYnxuCttHj/Pfwl/3J9la0tIQ89U3odvqo+p2/l4/lspozqM6k5f3V/8Lr1wHaI3DuL4Wn7PtXO+Xf709WS+OCpfm5QA7Um/A2epxfl2/+bWOMAUuvobRkHM8GDKUm6W30OL8u/2F/Egq0C9HwYb394fQ777zzzjvv/B75P230m3hnLMGVAAAAAElFTkSuQmCC",
"ksher_order_no": "60020170526123947574894",
"mch_order_no": "1495773587",
"nonce_str": "sQ8gfSpeeV5Ld8ulW9q7JxUnXSOiZ90Y",
"result": "SUCCESS",
"trade_type": "NATIVE"
},
"msg": "ok",
"sign": "65126acc40a48761751eb9fbabf41ca6d08a44be2a175edcaa95cc7e119c224d76d82d5776be6f80ce9a4e535469a7514d318faf5619151266532557ac0f8bd2",
"status_code": "",
"status_msg": "",
"time_stamp": "",
"version": "2.0.0"
}
{
"code": 0,
"status_code": "",
"status_msg": "",
"sign": "b853c6a62164abad9f2ac8d73e5c3d502966ca8b68d3058e855482c5aec5f498c3629d053749a2685ecd08a7ed7570f7db93b82893115f7d7c9228ff6957bcd6",
"version": "3.0.0",
"msg": "ok",
"time_stamp": "2023-09-11T17:59:00.645805+08:00",
"data": {
"trade_type": "NATIVE",
"ksher_order_no": "90020230717185354750819",
"mch_order_no": "20230711163201",
"nonce_str": "90c8d5ad3d4aa1a538f610d259c35c97",
"fee_type": "THB",
"imgdat": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAZgAAAGYCAYAAAB/O/RVAAAYnElEQVR4nO3da4xtZ3kf8Odde/bMmXN87EOCG9s4JBAKJgk01DSlbZwYKCmoFzVpqKpEaovapooSPkClCkVNP7RRRVvUSCVKVCWtoqQoalNVVdIqlCrEgEuh4tZACJdgGWODAYON8bl4Zu/19sOeORefc7xsLz9+197z+0kjDp697pf/vGu9z35LrbUGADzNutYrAMBmEjAApBAwAKQQMACkEDAApBAwAKQQMACk2Br6QCnlmViPZobKgIa2f+z0rWWvf/b+HZI9/+zlt94/Q6Z+/bQ+f6Z+/Y81tP1aMACkEDAApBAwAKQQMACkEDAApBAwAKQQMACkGKyDGTL14WSy+6Fnz3/qdRpjta4jaF2nMnb7jvr5NzT91OtQNv3+qQUDQAoBA0AKAQNACgEDQAoBA0AKAQNACgEDQIrRdTBD1r2ffmvrXmcx9TqaseuXPX3r8Vqmvv/Gzn/qdTLrfv/UggEghYABIIWAASCFgAEghYABIIWAASCFgAEgRXodzLprPR7GWOu+/utubB1J6zqWqY+30rqOhsenBQNACgEDQAoBA0AKAQNACgEDQAoBA0AKAQNACnUwI2WPl5Etu45h6vundR3Huo+3kr387PFwWu+fTacFA0AKAQNACgEDQAoBA0AKAQNACgEDQAoBA0CK9DqYde9nPrYffus6kyFjxwPJrnNY9/E+pl7n0nq8mHXf/9mmvn5DtGAASCFgAEghYABIIWAASCFgAEghYABIIWAASDG6Dqb1eBqtZdeRZE+frfX2j7Xuy5/69GNlL791Hdi604IBIIWAASCFgAEghYABIIWAASCFgAEghYABIMVgHcy6j0cwda376U99+VOvs1h3R/34tV7+ptOCASCFgAEghYABIIWAASCFgAEghYABIIWAASBFqckdtVv3M2/dT3/q452Mlb1/spc/deu+f7LXf933z5Cpb9/Q+mnBAJBCwACQQsAAkELAAJBCwACQQsAAkELAAJBicDyY1v3EW9eRTL0f/1it61iGtB6vZEjr62NI6+OTPf1Yra+/sVrvvyFaMACkEDAApBAwAKQQMACkEDAApBAwAKQQMACkGD0eTOs6g02vg2i9fUNaL3/qpn7+ZY+HlL1859e064i0YABIIWAASCFgAEghYABI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AEghYABIMTgezLr3029dx9J6+8dqvf7ZdRStp8/Wus6o9fkxpPX1O/X1H7t+WjAApBAwAKQQMACkEDAApBAwAKQQMACkEDAApBgcD2ZsP+rWdTTZ/bw3vZ98ttbj2QyZep1B6+O76df3WK3Pj9a0YABIIWAASCFgAEghYABIIWAASCFgAEghYABIMVgH03q8kqnXkWQvP1vr4zvWUV//1nU0m17HMiS7Dq71eDpjj48WDAApBAwAKQQMACkEDAApBAwAKQQMACkEDAApSh3Z0bx1P/bWdRCt62yGtB6vJns8ldZa16GYf9vzr/X9rfX+HaIFA0AKAQNACgEDQAoBA0AKAQNACgEDQAoBA0CKwfFgxsqus5j6eBFHXes6nLGyx/PIXv+jfn1Mvc5lSPb6Gw8GgLUkYABIIWAASCFgAEghYABIIWAASCFgAEgxOB5M6/FKxmo9Hknr7Rty1MfTmLrWdRitj9+Q1td3a62vH3UwADQhYABIIWAASCFgAEghYABIIWAASCFgAEgxWAdz1E29DiZb6zoBdUrrXWc0dvmbvn1jlz+k9f7XggEghYABIIWAASCFgAEghYABIIWAASCFgAEgxdbQB1rXQWQb6se97uNJZPfjb12nkX181n39h4zdvtZ1XlMfD2bq50/28dOCASCFgAEghYABIIWAASCFgAEghYABIIWAASDFYB3MkNb94Iese53KWNn97LOnb631+rcez+Oon5+tx2MZ0rrOZYgWDAApBAwAKQQMACkEDAApBAwAKQQMACkEDAApRtfBDJl6P/ohR308h3WvA8iefqypH9/W52fr7c+ePlvr9dOCASCFgAEghYABIIWAASCFgAEghYABIIWAASBFeh0MuVrXGQ0tv3UdTevxToYc9TqT1ssf0vr4rPv+04IBIIWAASCFgAEghYABIIWAASCFgAEghYABIIU6mJFa11EMaV3HMiS7zmDd6yDGar38scbu36nXoUz9/jGWFgwAKQQMACkEDAApBAwAKQQMACkEDAApBAwAKUod6Mg99X7+Q1r3Y596P/mp15GMddSPb2ut7w+t92/r86P19a0FA0AKAQNACgEDQAoBA0AKAQNACgEDQAoBA0CK0XUw6+6o91Of+ngrQzZ9+eteJ5Qtu84m+/povf+z118LBoAUAgaAFAIGgBQCBoAUAgaAFAIGgBQCBoAUg3UwAPBUaMEAkELAAJBCwACQQsAAkELAAJBCwACQQsAAkOL/A4g4s3paEfAWAAAAAElFTkSuQmCC",
"result": "SUCCESS",
"total_fee": 100,
"appid": "mch35005",
"PaymentID": "90020230717185354750819",
"PaymentCode": "00020101021230750016A0000006770101120115010556019950701022020230717185354750819030890035005530376454041.005802TH630427F2",
"code_url": "00020101021230750016A0000006770101120115010556019950701022020230717185354750819030890035005530376454041.005802TH630427F2",
"stalls_name": "90035005",
"device_id": ""
}
}
Native pay Fail Response Parameters
| Parameter | Type | Required | Example | Description |
|---|---|---|---|---|
code |
int |
YES |
0 |
Value Range:
|
sign |
String(256) |
YES |
b000e9b6ec3fbda482d96a3d7c75c6956a5864336c3098462525e7229e8e046e490939a3e8b320a6c68eb63795a25b79d8c74f042f0972039bb5fe9b861cefb4 |
To verify the accuracy of this response, please refer to the method outlined in the section Verify Signature. |
msg |
String(32) |
YES |
the response message. |
|
status_code |
int |
YES |
|
|
status_msg |
String(256) |
NO |
the status message |
|
time_stamp |
String(256) |
YES |
"20190622131804" |
time stamp |
version |
String(32) |
YES |
"3.0.0" |
API version |
data Parameters (JSON ) |
||||
result |
string(16) |
YES |
FAIL |
Value range: FAIL, NOTSURE |
err_code |
String(32) |
YES |
SYSTEMERROR |
Refer to the error list for the details |
err_msg |
String(128) |
YES |
system error |
the detailed description of the error |
nonce_str |
String(32) |
YES |
Random string |
|
{
"code": 0,
"status_code": "",
"status_msg": "",
"sign": "02635a1a60cfcaf461c6b860ac7ffd967c98c19803ddc4b698d2279502451f837d225fe38810357dc5e50c9de114bb40ad3513dd972f2e7db8ff08a09240c604",
"version": "2.0.0",
"msg": "ok",
"time_stamp": "",
"data": {
"result": "FAIL",
"err_code": "KSHER_INVALID_MCHINFO",
"err_msg": "merchant not exist.",
"nonce_str": ""
}
}
Expire time QR
API Request Examples
The QR expiry time can be specified through the expire_time field. The value is specified in second. The following example sets the QR code to expire after 30 minutes.
{
"appid": "mch35005",
"mch_order_no": 1789011926,
"total_fee": "100",
"fee_type": "THB",
"channel": "promptpay",
"product": "1789011926",
"device_id": "test",
"attach": "payer_name expire_time30",
"notify_url": "https://notify_url/api/notify_url",
"expire_time": 1800,
"nonce_str": "fagfsere",
"time_stamp": "1789011926",
"sign": "4b609e384500ba8b2ed5eddbcc3aab5c7325c45"
}
PromptPay
-
If
expire_timeis not specified, the QR code will remain without an expiry time, as per the existing behavior. -
If the payer attempts to make a payment after the time specified in
expire_time, the QR code will be displayed as invalid, and the payer will not be able to complete the payment using the expired QR code. A new QR code must be created to make the payment.
PromptPay Type Support
Ksher’s PromptPay services currently support expiry time as follows:
-
PromptPay / PromptPay2: The expiry time can be specified through the expire_time field.
-
PromptPay3: The expiry time is fixed at 10 minutes according to the partner bank’s conditions.
Conditions and Limitations
-
For some transactions where the payer is a foreign customer, the expiry time may not be supported because the relevant overseas bank does not yet support this functionality.
-
If the transaction status update from the bank is delayed, a payment may be received after the QR code has already reached its expiry time.
-
order_closecurrently not support cancelling a QR code that has already been created. -
For an expired QR code, the transaction status in the system will remain IN_PROCESS, as per the existing behavior.
Truemoney
-
can setup time wallet → Yes, at tmn_expire_time
-
expire_time min → 0
-
expire_time max → unlimited depend on customer
-
default time expire_time, If merchant leave value tmn_expire_time → 1 day
Alipay
-
can setup time wallet → No
-
expire_time min → can’t setup
-
expire_time max → can’t setup
-
default time expire_time, If merchant leave value expire_time → 3 hours
Alipay+
-
can setup time wallet → No
-
expire_time min → can’t setup
-
expire_time max → can’t setup
-
default time expire_time, If merchant leave value expire_time → 10 minutes
-
can setup time wallet → No
-
expire_time min → can’t setup
-
expire_time max → can’t setup
-
default time expire_time, If merchant leave value expire_time → 2 hours