API 收款
大约 10 分钟
请求
收款API使商户能够发起向客户收取付款的交易。
支持的支付方式包括:
银行转账
QRIS(印尼快速响应标准)
数字钱包
信用卡/借记卡
其他数字支付渠道
请求路径:
沙盒:
https://sandbox-gateway.smilepayz.com/v2.0/transaction/pay-in
生产:https://gateway.smilepayz.com/v2.0/transaction/pay-in
请求头参数
字段 | 必填 | 类型 | 描述 |
---|---|---|---|
Content-Type | M | String | HTTP内容类型规范 固定值:application/json 正确解析请求所必需 |
X-TIMESTAMP | M | String | ISO 8601日期时间格式,带时区偏移 格式:yyyy-MM-ddTHH:mm:ss±HH:mm 示例:2020-12-17T10:55:00+07:00 注意:必须是当前服务器时间,误差在±5分钟内 |
X-SIGNATURE | M | String | 请求认证的数字签名。参见签名生成 |
X-PARTNER-ID | M | String | 平台分配的唯一商户标识符 格式:字母数字字符串 用于商户认证和交易路由 请输入merchantID |
请求体参数
字段 | 必填 | 类型 | 描述 |
---|---|---|---|
orderNo | M | String(32) | 商户跟踪的唯一交易标识符 格式:仅字母数字字符 长度:6-32个字符 在商户范围内必须是唯一的 |
purpose | M | String(64) | 人类可读的交易描述 格式:UTF-8编码字符串 长度:1-64个字符 用于交易历史和报告 |
merchant | M | Object | 商户识别和业务信息容器 包含主要和子商户详情 交易路由和结算所必需 |
merchantId | M | String | 平台分配的主要商户标识符 格式:字母数字字符串 用于交易路由和结算处理 |
merchantName | O | String | 商户的注册业务名称 格式:UTF-8编码字符串 在支付界面和交易记录中显示 |
subMerchantId | O | String | 多级商户结构的子商户标识符 格式:字母数字字符串 子商户交易处理所必需 |
subMerchantName | O | String | 用于显示的子商户业务名称 格式:UTF-8编码字符串 在支付界面和交易记录中显示 |
money | M | Object | 交易金额和货币规格容器 定义支付价值和货币单位 支付处理和结算所必需 |
currency | M | String | ISO 4217货币代码规范 固定值:IDR(印尼盾) 确定支付处理规则和结算货币 |
amount | M | Number | 最小货币单位的交易金额 格式:整数值 示例:20000表示IDR 20000 范围:10000-999999999 |
payer | C | Object | 客户支付信息容器 特定支付方式所必需(例如,OVO) 用于支付验证和客户通信 |
phone | C | String | 用于支付验证的客户手机号码 格式:带国家代码的国际格式 示例:+6281234567890 OVO钱包支付所必需 |
paymentMethod | O | String | 首选支付方式规范 格式:预定义支付方式代码 示例:QRIS、W_DANA、CIMB、BCA 如果省略,将显示支付方式选择页面 |
expiryPeriod | O | Number | 支付会话超时持续时间(秒) 格式:整数值 默认:3600秒(1小时) 范围:300-86400秒(5分钟到24小时) |
redirectUrl | O | String(256) | 支付后重定向目标URL 格式:有效的HTTP/HTTPS URL 最大长度:256个字符 客户在支付完成后重定向到这里 |
callbackUrl | O | String(256) | Webhook通知端点URL 格式:有效的HTTP/HTTPS URL 最大长度:256个字符 接收实时交易状态更新 |
重要说明
1. 支付方式选择: 如果未指定paymentMethod
,将返回结账页面供客户选择其首选支付方式
2. OVO支付要求: 当paymentMethod
设置为OVO时,payer.phone
字段是支付验证和处理所必需的
请求体示例 – 交易请求:
Content-type: application/json
X-TIMESTAMP: 2020-12-17T10:55:00+07:00
X-SIGNATURE: 7MHd9v5/m9JeqmDZVwWBZUZ5J5...7120QnFEny7Qm7uQR1G0TWCh10fsU6nVxiRoeoQ==
X-PARTNER-ID: 20001
{
"orderNo": "2000102900000000000001", // 注意!格式
"purpose": "业务交易等等",
"paymentMethod": "QRIS",
"money": {
"currency": "IDR",
"amount": 10000
},
"merchant": {
"merchantId": "20001"
}
}
响应
HTTP响应
字段 | 必填 | 类型 | 描述 |
---|---|---|---|
Content-Type | M | String | HTTP响应内容类型规范 固定值:application/json 指示JSON响应格式 |
X-TIMESTAMP | M | String | ISO 8601日期时间格式,带时区偏移 格式:yyyy-MM-ddTHH:mm:ss±HH:mm 示例:2020-12-17T10:55:00+07:00 |
响应体参数
字段 | 必填 | 类型 | 描述 |
---|---|---|---|
code | M | String | API响应状态码,指示操作结果 格式:两位数字字符串 成功:"00",错误:其他代码 用于程序化响应处理 |
message | M | String | 人类可读的响应状态描述 格式:UTF-8编码字符串 提供操作结果的详细信息 根据请求语言本地化 |
orderNo | M | String | 用于参考的原始商户交易标识符 格式:与请求orderNo相同 用于交易跟踪和对账 |
tradeNo | O | String | 系统跟踪的内部交易参考号 格式:系统生成的字母数字字符串 用于内部交易管理和支持 |
merchant | M | Object | 包含账户详情的商户信息容器 包含商户识别和账户信息 参见商户模型 |
merchantId | M | String | 平台分配的主要商户标识符 格式:字母数字字符串 用于交易路由和结算处理 |
merchantName | O | String | 商户的注册业务名称 格式:UTF-8编码字符串 在支付界面和交易记录中显示 |
subMerchantId | O | String | 多级商户结构的子商户标识符 格式:字母数字字符串 子商户交易处理所必需 |
subMerchantName | O | String | 用于显示的子商户业务名称 格式:UTF-8编码字符串 在支付界面和交易记录中显示 |
money | M | Object | 交易金额详情,带货币规格 包含确认的支付金额和货币 参见货币模型 |
currency | M | String | ISO 4217货币代码规范 固定值:IDR(印尼盾) 确定支付处理规则和结算货币 |
amount | M | Number | 最小货币单位的交易金额 格式:整数值 示例:20000表示IDR 20000 范围:10000-999999999 |
transactionTime | M | String | ISO 8601日期时间格式(yyyy-MM-ddTHH:mm:ss±HH:mm) 示例:2020-12-17T10:55:00+07:00 系统处理交易的时间戳 |
channel | M | Object | 支付处理渠道详情和说明 包含支付方式、URL和额外数据 参见渠道模型 |
paymentMethod | O | String | 首选支付方式规范 格式:预定义支付方式代码 示例:QRIS、W_DANA、CIMB、BCA 如果省略,将显示支付方式选择页面 |
vaNumber | O | String | 银行转账支付的虚拟账户号码 格式:字母数字字符串 用于虚拟账户支付处理 示例:1419001332911089 |
qrString | O | String | QRIS支付的二维码字符串或图片URL 格式:二维码字符串或图片URL 用于二维码生成和显示 示例:00020101021226570011ID.DANA.WWW... 或 https://gateway.smilepayz.com/imge/xxx.img |
paymentUrl | O | String | 用于重定向客户的支付网关URL 格式:有效的HTTP/HTTPS URL 用于客户支付重定向 示例:https://gateway.smilepayz.com/cashier/#/loading?tradeNo=xxx |
status | O | String | 当前交易处理状态 格式:预定义状态代码 示例:PROCESSING、SUCCESS、FAILED 参见状态模型 |
Content-type: application/json
X-TIMESTAMP: 2020-12-17T10:55:00+07:00
{
"channel": {
"additionalInfo": {},
"paymentMethod": "QRIS",
"paymentUrl": "https://gateway.smilepayz.com/cashier/#/loading?tradeNo=101200112410241325417215",
"qrString": "00020101021226570011ID.DANA.WWW011893600915069533479502096953347950303UME51440014ID.CO.QRIS.WWW0215ID20243302250440303UME5204739953033605405100005802ID5919DP Mega Jaya Makmur6015Kota Jakarta Se61051221062750118pay_JXlS1MtBUk931660490011ID.DANA.WWW0425MER202110293394047135422905011630451D5"
},
"code": "00",
"merchant": {
"accountNo": "1102000000000000",
"merchantId": "20001",
"merchantName": "test"
},
"message": "成功",
"money": {
"amount": 10000,
"currency": "IDR"
},
"orderNo": "2000102900000000000001",
"status": "PROCESSING",
"tradeNo": "101200012410241325417215",
"transactionTime": "2020-12-17T10:55:00+07:00"
}
{
"channel": {
"additionalInfo": {},
"paymentMethod": "QRIS",
"paymentUrl": "https://gateway.smilepayz.com/cashier/#/loading?tradeNo=101200112410241325417215",
"qrString": "https://gatatway.smilepayz.com/imge/MER202110293394047135422905011630451D5.img"
},
"code": "00",
"merchant": {
"accountNo": "1102000000000000",
"merchantId": "20001",
"merchantName": "test"
},
"message": "成功",
"money": {
"amount": 10000,
"currency": "IDR"
},
"orderNo": "2000102900000000000001",
"status": "PROCESSING",
"tradeNo": "101200012410241325417215",
"transactionTime": "2020-12-17T10:55:00+07:00"
}
{
"channel": {
"additionalInfo": {
"paymentUrl": "https://link.dana.id/pay?bizNo=20250102111212800110166129632333240×tamp=1735797716250&originSourcePlatform=IPG&mid=216620000383553341323&did=216650001014253563327&sid=216660001014426055320&sign=rzccMXnlSPX6WAyJRC1kAjSPOphhnctVDAIN5zSSn9ByT9cEuiYNZFhDhbHSfPjFq9NqeMURMk5xc%2F8W8zC4BDk1L5dm6QkXs3kDg5HFBtgOtgHmXesxhcRYPUXNwiLff6zuDpjVSi1jNXGoMR82S4l6KKpJIKKvsLXgHET%2B66Dxy%2FGQlH5tAKX5KXVqfMC%2FELRGOLq3WWToId%2B2ayYgnjBpOxCUF%2Fm%2FL9Nn8L%2BdUEPWpLTD%2FwBMN1tRrrsiIvOyHjl7AK3MB3zE7WrDfdHhq9s1z7cgoHpJkjnMXjGoMpMm0AD9IU2qoxkqQhGJQfCYcn4tA8930VR%2BggxOHPDhZg%3D%3D&forceToH5=false"
},
"paymentMethod": "W_DANA",
"paymentUrl": "https://gateway.smilepayz.com/cashier/#/loading?tradeNo=101200192501021315010115"
},
"code": "00",
"merchant": {
"accountNo": "1102000000000000",
"merchantId": "20001",
"merchantName": "test"
},
"message": "成功",
"money": {
"amount": 10000,
"currency": "IDR"
},
"orderNo": "2000102900000000000001",
"status": "PROCESSING",
"tradeNo": "101200012410241325417215",
"transactionTime": "2020-12-17T10:55:00+07:00"
}
{
"channel": {
"additionalInfo": {},
"paymentMethod": "CIMB",
"paymentUrl": "https://gateway.smilepayz.com/cashier/#/loading?tradeNo=101200112501021320331776",
"vaNumber": "1419001332911089"
},
"code": "00",
"merchant": {
"accountNo": "11020011202402290943",
"merchantId": "20011",
"merchantName": "bradytest123www"
},
"message": "成功",
"money": {
"amount": 20000,
"currency": "IDR"
},
"orderNo": "200110437c4152cbe45cebcacd25",
"status": "PROCESSING",
"tradeNo": "101200112501021320331776",
"transactionTime": "2025-01-02T13:20:34+07:00"
}
通知/回调
HTTP请求
字段 | 必填 | 类型 | 描述 |
---|---|---|---|
Content-Type | M | String | HTTP通知内容类型规范 固定值:application/json 指示JSON负载格式 |
X-TIMESTAMP | M | String | ISO 8601日期时间格式,带时区偏移 格式:yyyy-MM-ddTHH:mm:ss±HH:mm 示例:2020-12-17T10:55:00+07:00 |
X-SIGNATURE | M | String | 通知验证的数字签名 格式:Base64编码签名 用于验证通知真实性 参见如何检查此值 |
通知体参数
字段 | 必填 | 类型 | 描述 |
---|---|---|---|
orderNo | M | String | 用于参考的原始商户交易标识符 格式:与请求orderNo相同 用于交易对账和跟踪 |
tradeNo | M | String | 系统跟踪的内部交易参考号 格式:系统生成的字母数字字符串 用于内部交易管理和支持 |
merchantId | M | String | 交易路由的主要商户标识符 格式:字母数字字符串 用于商户识别和结算处理 |
merchantName | M | String | 用于显示的注册商户业务名称 格式:UTF-8编码字符串 在交易记录和报告中显示 |
subMerchantId | O | String | 多级结构的子商户标识符 格式:字母数字字符串 当子商户参与交易时包含 |
subMerchantName | O | String | 用于显示的子商户业务名称 格式:UTF-8编码字符串 当子商户参与交易时包含 |
paymentMethod | M | String | 用于交易处理的支付方式 格式:预定义支付方式代码 示例:BCA、QRIS、DANA、CIMB 指示实际使用的支付渠道 |
transactionTime | M | String | ISO 8601日期时间格式(yyyy-MM-ddTHH:mm:ss±HH:mm) 支付提供商完成交易的时间戳 |
status | M | String | 最终交易处理状态 格式:预定义状态代码 示例:SUCCESS、FAILED 指示交易的最终结果 参见状态模型 |
money | M | Object | 最终交易金额详情,带货币 包含确认的支付金额和货币 可能因费用或调整而与请求金额不同 参见货币模型 |
currency | M | String | ISO 4217货币代码规范 固定值:IDR(印尼盾) 确定支付处理规则和结算货币 |
amount | M | Number | 最小货币单位的交易金额 格式:整数值 示例:20000表示IDR 20000 范围:10000-999999999 |
payer | O | String | 支付期间提供的客户信息 格式:客户数据对象 包含可用的付款人详情 参见付款人模型 |
返回
重要
通知请仅返回字符串SUCCESS
{
"merchantId": "20001",
"merchantName": "test",
"money": {
"amount": 100000,
"currency": "IDR"
},
"orderNo": "2000102900000000000001",
"paymentMethod": "QRIS",
"status": "SUCCESS",
"tradeNo": "101200012410241325417215",
"transactionTime": "2020-12-17T10:55:00+07:00"
}