支付参数
Method POSTURL
https://xxx.finexusgroup.com/api/submit
- 请求参数
- 响应参数
配置字段 paymentMethod
,用于卡支付和二维码支付选项。
Header
字段名 | 是否必需 | 类型 | 描述 |
---|---|---|---|
Signature | 是 | String | 包含消息的签名值。消息的发起者负责生成签名,而消息的接收者必须验证签名,以确保消息的完整性、真实性和不可否认性。 请参考 附录 1 |
sourceSystem | 是 | String | 消息发起者的系统 ID。 |
Body
请参考 嵌入代码对内容进行加密,并在正文前添加消息类型指示符0011
。
字段名 | 是否必需 | 类型 | 长度 | 描述 | 示例 |
---|---|---|---|---|---|
msgVer | 是 | String | 8 | 版本数字 | "1.0" |
billerType | 是 | String | 2 | 付款类型 | "PS" - POS 系统 |
callerDeviceType | 是 | String | 2 | 呼叫设备类型. | "02" - 安卓 EDC/卡支付终端 |
callerDeviceVer | 是 | String | 8 | 呼叫设备的应用版本数字。 | "1" |
sequenceNo | 是 | String | 16 | 在日历日内系统中唯一的运行消息序列数字,每天从 1 重新开始。 | "202409288868" |
sellerId | 是 | String | 6 | 由 FINEXUS 提供,用于识别卖方或纳税人(商户)以进行电子发票处理。 | "A123" |
mid | 是 | String | 15 | 商户 ID | "100000" |
isPaymentReq | 是 | String | 1 | 付款请求指示 | "Y" - 在 KPOS 触发付款。 "N" - 可选,付款处理将被启动。 |
payment | 条件的 | Object | 支付对象. | ||
isInvoiceReq | 是 | String | 1 | 发票请求指示 | "Y" - 此请求将向 LHDN 发送发票数据。 "N" - 此请求将不向 LHDN 发送发票数据。 |
invoice | 条件的 | Object | 用于向 LHDN 提交的发票对象,以用于电子发票。如果 isInvoiceReq 为“Y”,则为必需。 |
Object: payment
字段名 | 是否必需 | 类型 | 长度 | 描述 | 示例 |
---|---|---|---|---|---|
mrn | 是 | String | 40 | 由 POS 系统分配的唯一参考数字,用于识别原始支付交易。 | "8e8c6e61-f9e4-40f0-a4a5-9e561579c901" |
requiredPayment | 是 | String | 1 | 指示该请求是否需要付款。 | "Y" - 此请求将在 KPOS 触发付款。 "N" - 不会启动付款处理。 |
paymentMethod | 是 | Number | 2 | 首选支付方式将在 KPOS 触发。 | "00" - KPOS 将显示所有可用的支付方式,客户可以选择他们的首选方式进行支付。 "01" - 卡支付 "04" - Duitnow QR 支付(商户呈现) "08" - Alipay+ QR 支付(商户呈现) |
currency | 是 | Number | 3 | 此交易的 ISO 4217 数字货币代码。 | "458" |
amount | 是 | Number | 18 | 金额,交易。支持货币的购买交易金额。 | "1000" |
description | 可选 | String | 256 | 订单描述 | "Food order" |
paymentNotiUrl | 条件的 | String | 256 | 主要付款通知 URL。用于接收付款结果通知的 URL。出于安全原因,该 URL 必须为 HTTPS URL。仅适用于 HTTPS POST 集成。 | "https://xxx/xxx/xxx.paymentNotiUrl" |
paymentNotiUrl2 | 条件的 | String | 256 | 次要付款通知 URL。 | "https://xxx/xxx/xxx.paymentNotiUrl2" |
paymentTime | 是 | String | 25 | 付款时间。该值遵循 ISO 8601 标准格式。 | "2024-06-30T12:12:12+0800" |
email | 条件的 | String | 64 | KPOS 的电子邮件登录。如果通过 HTTPS POST 进行付款请求,则为必需。 | "customer123@gmail.com" |
deviceSN | 条件的 | String | 32 | 设备序列号。如果通过 HTTPS POST 进行付款请求,则为必需。 | "PPXXX72209005XXX" |
printPaymentReceipt | 是 | String | 1 | "Y" - 如果付款获得批准,KPOS 将显示电子收据并打印付款收据。 "N" - 如果付款获得批准,KPOS 将显示电子收据,但不打印付款收据。 | "Y" |
nonBlocking | 可选 | String | 1 | "Y" - KPOS 将在收到 PSP 请求后立即在提交响应中返回确认。 "N" - KPOS 将完全处理请求并将最终结果返回给 PSP。 默认值为 "Y"。 | "Y" |
必填/条件字段
字段名 | 是否必需 | 类型 | 长度 | 描述 | 示例 |
---|---|---|---|---|---|
sequenceNo | 是 | String | 16 | 从请求回显的序列数字。 | "1726817309256" |
resultCode | 是 | String | 5 | 结果代码 | "00000" |
advMsg | 可选 | String | 1000 | 来自 KPOS 的建议消息。 | "..." |
authIdResp | 条件的 | String | 16 | 仅用于已批准交易的发卡行/银行授权码。消费者应将此代码作为已批准支付交易的参考。 | "484684" |
paymentScheme | 条件的 | String | 2 | 交易的支付方案。 | "AF" - 蚂蚁金融(支付宝) "JC" - JCB "MC" - 万事达卡 "PN" - Paynet(DuitNow) "UP" - 银联(前称 CUP) "VS" - Visa |
maskedPAN | 条件的 | String | 4 | 返回的掩码 PAN | "443322XXX1234" |
htr | 条件的 | String | 20 | 主机交易参考 | |
paymentMethod | 条件的 | Number | 2 | 客户选择的最终支付方式,以完成付款。 | "00" - KPOS 将显示所有可用的支付方式,客户可以选择他们的首选方式进行支付。 "01" - 卡支付 "04" - Duitnow QR 支付(商户呈现) "08" - Alipay+ QR 支付(商户呈现) |
示例请求和响应主体
- 请求
- 响应
加密之前
{
"msgVer": "1.0",
"billerType": "PS",
"callerDeviceType": "02",
"callerDeviceVer": "1",
"sequenceNo": "2022091511262185",
"sellerId": "A123",
"mid": "000010000012XXX",
"isPaymentReq": "Y",
"payment": {
"mrn": "2021061414062021078",
"requiredPayment": "Y",
"paymentMethod": "01",
"currency": "458",
"amount": "1000",
"description": "test",
"paymentTime": "2024-09-23T10:30:29.249",
"email": "customer123@gmail.com",
"deviceSN": "PPXXX72209005XXX",
"printPaymentReceipt": "N",
"nonBlocking": "N"
},
"isInvoiceReq": "N"
}
加密之后并添加消息类型指示符
0011eyJlcGsiOnsia3R5IjoiRUMiLCJjcnYiOiJQLTI1NiIsImtpZCI6ImU4NmQ0Y2ZiLTFkNzMtNDJkNi05MGVlLWRlNWJlNjcwMjVlOSIsIngiOiI0UmxIeDAzX3ZlTURWaGFaTl91TVppZ2YzV1dPWGlveG52Zy1rRXhyMzFrIiwieSI6ImcyU1VqNkJnVHdYakxWYWlTRnVobGtSWklrMndaWlNaMWJEWG1DSTZSVXcifSwia2lkIjoiMTIzIiwiZW5jIjoiQTI1NkNCQy1IUzUxMiIsImFsZyI6ImRpciJ9..UIzHIjrFX8fPX91SEUzZpA.9hmtgLHx_UZjYTwduAtdruZB60QPRPjvczVeJwSI7tomXmEU720zuokvMdf9VxQqHOh2PHvtTtqW8OZQuIqYyDmss06ii-fy73a897AJv2KXPARY6DduoiLSJwDCJKhBiJlnZkAMyRZdB5xGzJwXL21QaXbO86EF6_d9qzrOhQvrNlfkTOBQYnv5Mhnnetda0_zm59HRMW2mg-rEOGj1W0Q4U0I8ZZrXQSxO3MnalxuzWQ4oTU2uHZrFnsyL93PeKiG_RmIszQGXqG0bN8WsoJfL0BTd20rnxldLQcSZYNdxGJw0EBGwlSp7DTpcmP1kzd1v2PzLGISZiPa9zadcVuLaODBZQ5GdHoPgIi76pTRwDJrv1CuD8ugfuuu_L5DxFIErnqs5cTONqxhCQ23ZeCSbnuDJDJju9yyr2wYoFFKQQciZmPddPgi2phew31DRjju4y4Ab6H7Vv01gqk6h2b9clR7v54wZSvR0CVROLZj79nKM1eLDhEo8JEv6T5APb2EHMTaU-sIlT-XqENbwV-A5HSEuEdvU7K3fsgioU5qJWwk9SS1WWmyqHnvCK1Rl5azJcKbfyN07a7znZD66IAoSUoCHjsqmFC4bd6ckdLA.Q3Ys35PhzHsnNnlJQ3rzwR-RsfEmYeDxXDsw9h97Azo
从主体中移除消息类型指示符 0012
并解密内容.
解密之前
0012eyJlcGsiOnsia3R5IjoiRUMiLCJjcnYiOiJQLTI1NiIsImtpZCI6ImI0YjIxMmM5LTIyNjMtNDAxYi1hZjdkLTMwOWI3MjRlOTEzOSIsIngiOiJvYmx1ZFdKRy1TTWJlakVqY1hlY3Q2dl9zY19ZZExyTzUtWEV2ZGFZQjdNIiwieSI6Il9MaFdTUDRrUUMwSkpWc09GMkJndWpfamc3dFZSMlRRcTctVExoUFZOeFUifSwia2lkIjoiOGM0MDFlYWMtYjM0OS00MDIyLWJhYTItZWNhMmQ3M2I4NTc5IiwiZW5jIjoiQTI1NkNCQy1IUzUxMiIsImFsZyI6ImRpciJ9..L2N0tzgQbvbbqjTa5XFCeA.TIgLgaNOwqFEchw3r0ls75zFL74mWBCJjuQFm7e7a2Ahk83m_xoS47g6m-Y7AewFcGFWBKbb4i0aGKW1moH70g.4JNcfZMyJqQKcadQIfxb224fqiM3MoUQ5ytA7lUQ4Bw
移除消息类型指示符并解密后
{
"sequenceNo": "2022091511262185",
"resultCode": "00000",
"htr": ""
}
示例消息
- 请求
- 响应
POST 请求
curl -X POST "https://xxx.finexusgroup.com/fnx-fintech/sandbox/mqpos-host/api/submit" \
-H "Accept: application/json" \
-H "Content-Type: text/plain" \
-H "Signature: ..." \
-H "sourceSystem: ..." \
-d '0011eyJlcGsiOnsia3R5IjoiRUMiLCJ...'
POST 响应
0011eyJlcGsiOnsia3R5IjoiRUMiLCJjcnYiOiJQLTI1NiIsImtpZCI6ImI0YjIxMmM5LTIyNjMtNDAxYi1hZjdkLTMwOWI3MjRlOTEzOSIsIngiOiJvYmx1ZFdKRy1TTWJlakVqY1hlY3Q2dl9zY19ZZExyTzUtWEV2ZGFZQjdNIiwieSI6Il9MaFdTUDRrUUMwSkpWc09GMkJndWpfamc3dFZSMlRRcTctVExoUFZOeFUifSwia2lkIjoiOGM0MDFlYWMtYjM0OS00MDIyLWJhYTItZWNhMmQ3M2I4NTc5IiwiZW5jIjoiQTI1NkNCQy1IUzUxMiIsImFsZyI6ImRpciJ9..L2N0tzgQbvbbqjTa5XFCeA.TIgLgaNOwqFEchw3r0ls75zFL74mWBCJjuQFm7e7a2Ahk83m_xoS47g6m-Y7AewFcGFWBKbb4i0aGKW1moH70g.4JNcfZMyJqQKcadQIfxb224fqiM3MoUQ5ytA7lUQ4Bw