# 单笔订单交易接口

最新更新时间:2023.06.13

发起单笔订单交易。

# 接口说明

请求URL: https://{domain}/os-base/trade/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 商户交易订单号,要求唯一
payChannel 条件必传 string 支付渠道
ALI_PAY:支付宝;
WX_PAY:微信;
CMB:招行一网通;
payProduct 是 string 支付产品类型
APP:手机App客户端;
MINI_APP:小程序;
M_WEB:手机网页支付;
PC_WEB:电脑网页支付;
USER_QR:用户扫描商家二维码支付;
MCH_QR:商家扫描用户付款码支付;
FACE:刷脸付
payBusiness 否 string 支付业务,该参数传值必须提前在开放平台登记过,否则会导致交易失败,传入此值校验是否在平台开通,未指定时,不传
title 是 string 单标题 最长256
remark 否 string 给支付平台的附加信息,支付平台会原封回调给对用方
orderFee 是 int 订单总金额 单位分 范围 1 ~ 1000000000
notifyUrl 否 string 通知地址 通知URL必须为直接可访问的URL,不允许携带查询串,要求必须为https地址。
timeExpire 是 long 绝对超时时间,时间戳,标准北京时间,超时失效
quitUrl 条件必传 string 支付宝手机网页支付必传,用户付款中途退出返回商户网站的地址
ownerBusinessNo 否 string 商户维护:商户创建的订单业务号,商户自传,支付回调原封返回
ownerPayTerminal 否 string 商户支付终端,商户自传,支付回调原封返回
ownerAppId 否 string 商户独立应用的appId, 若没有可不传
ownerAppBuyerId 条件必传 string 支付宝或微信应用的买家id,小程序必传 (若商户有独立的小程序应用,则传商户小程序的用户id)

公共响应参数

名称 必传 类型 说明
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")
                .payChannel(PayConstant.PayChannel.ALI_PAY)
                .payProduct(PayConstant.PayProduct.USER_QR)
                .title("支付标题")
                .remark("给支付平台的附加信息,支付平台会原封回调给对用方")
                .orderFee(1) //订单金额,最小单位分
                .timeExpire(System.currentTimeMillis() + 1000 * 60 * 10)
                .notifyUrl("https开头的回调地址")
                .build();

// 发起交易请求,result.ifSuccess()表示请求成功
try {
     Results<TradePayDto> results = client.trade(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 表示操作成功,其它值则为失败,具体内容参见错误码说明)。