# 多码合一单笔交易接口

最新更新时间: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 表示操作成功,其它值则为失败,具体内容参见错误码说明)。