# 多码合一单笔交易接口
最新更新时间:2023.06.13
使用多码合一功能,实现单笔订单缴费# 接口说明
请求URL: https://{domain}/os-base/trade/multiQR/v2/open
请求方式: POST
公共请求参数
参数名 | 必填 | 类型 | 说明 |
---|---|---|---|
access_id | 是 | string | 开发者唯一标识 |
sign_type | 是 | string | 固定传RSA2 |
time_stamp | 是 | long | 请求时间,Linux时间戳,单位毫秒 |
sign | 是 | string | 签名结果 |
data | 是 | string | 将业务参数转为JSON字符串,然后使用BASE64编码的数据 |
详细签名方法请阅读接口加密方案
业务请求参数
名称 | 必填 | 类型 | 说明 |
---|---|---|---|
osMerchantCode | 是 | string | 开放平台为商户生成的唯一编号 |
osStoreCode | 是 | string | 开放平台为门店(停车场)生成的唯一编号 |
ownerTradeNo | 是 | string | 商户交易订单号,要求唯一 |
payBusiness | 否 | string | 支付业务,该参数传值必须提前在开放平台登记过,否则会导致交易失败,传入此值校验是否在平台开通,未指定时,不传 |
title | 是 | string | 单标题 最长256 |
remark | 否 | string | 给支付平台的附加信息,支付平台会原封回调给对用方 |
orderFee | 是 | int | 订单总金额 单位分 范围 1 ~ 1000000000 |
notifyUrl | 否 | string | 通知地址 通知URL必须为直接可访问的URL,不允许携带查询串,要求必须为https地址。 |
timeExpire | 是 | long | 绝对超时时间,时间戳,标准北京时间,超出该时间则支付失效 |
ownerBusinessNo | 否 | string | 商户维护:商户创建的订单业务号,商户自传,支付回调原封返回 |
ownerPayTerminal | 否 | string | 商户支付终端,商户自传,支付回调原封返回 |
公共响应参数
名称 | 必传 | 类型 | 说明 |
---|---|---|---|
code | 是 | int | 请求结果code,详细请参考错误码说明) |
msg | 是 | string | 请求结果描述,失败时会返回错误原因 |
data | 否 | Object | 请求结果返回的业务响应参数,若无业务参数则返回空 |
业务响应参数
名称 | 必传 | 类型 | 说明 |
---|---|---|---|
osTradeNo | 是 | string | 开放平台交易记录唯一订单号 |
ownerTradeNo | 是 | string | 第三方商户创建的唯一订单号 |
orderFee | 是 | int | 该笔订单的资金总金额 单位为分 |
timestamp | 是 | long | 时间戳,标准北京时间 |
sign | 是 | string | 调起支付的签名信息 用户扫码支付:统一返回url链接 支付宝:返回的String可直接调用支付宝sdk拉起支付 微信支付:返回Json字符串 |
SDK方法
// 创建上传数据client
TyhPaymentClient client = TyhPaymentClient.create(TyhOptions.builder()
.accessId(ACCESS_ID)
.secretKey(SECRET_KEY)
.allowUpload(Boolean.TRUE)
.build());
// 构造单笔交易参数
TradeCmd tradeCmd = TradeCmd.builder()
.osMerchantCode("2163737276721967L")
.osStoreCode("3163757684139653L")
.ownerTradeNo("owner_trade_118888806")
.title("支付标题")
.remark("给支付平台的附加信息,支付平台会原封回调给对用方")
.orderFee(1) //订单金额,最小单位分
.timeExpire(System.currentTimeMillis() + 1000 * 60 * 10)
.notifyUrl("https开头的回调地址")
.build();
// 发起交易请求,result.ifSuccess()表示请求成功
try {
Results<TradePayDto> results = client.multiQRTrade(tradeCmd);
TradePayDto dto = results != null && results.ifSuccess() ? results.getData() : null;
} catch (Exception e) {
e.printStackTrace();
}
入参格式
{
"osMerchantCode" : "2293839381",
"osStoreCode" : "39819018",
"ownerTradeNo" : "owner_trade_32192182",
"payChannel": "ALI_PAY",
"payProduct": "MINI_APP",
"payBusiness": "Parking",
"title": "测试支付停车费",
"remark" : "这是remark",
"orderFee" :1,
"timeExpire" : 1637914727314,
"notifyUrl" : "https://www.hfcsbc.com/callback"
}
出参格式:
{
"code": 8888,
"msg": "处理成功",
"data": {
"osTradeNo": "trade_25409336886366208",
"ownerTradeNo": "owner_trade_32192182",
"orderFee": 1,
"timestamp": 1637914727200,
"sign": "https://qr.alipay.com/bax06361xdt8egkw3lh73203"
}
}
code 为 8888 表示操作成功,其它值则为失败,具体内容参见错误码说明)。
← 合并订单交易关闭 多码合一订单交易查询 →