订单创建
接口说明:商户发起创建订单并支付。
请求地址:https://host/checkout/trade/pay.html
业务请求参数:
参数 | 类型 | 必填 | 备注 |
---|---|---|---|
sappId | string | 是 | 商户在系统后台创建的sappId |
subMchid | string | 是 | 二级商户id,不同的支付类型,值不一样 |
outOrderId | string | 是 | 商户订单id,需保证商户下唯一,最大长度64 |
subject | string | 是 | 订单标题、描述 |
amount | int | 是 | 订单需支付金额,单位为:分 |
payType | string | 是 | 支付类型,目前仅支持: ALIPAY |
extInfo | string | 否 | 支付扩展参数,系统不做处理,回调通知时返回调用方 |
buyerId | string | 否 | 买家openid,JSAPI 必填 |
opappid | string | 否 | 小程序应用id,JSAPI 必填 |
notifyUrl | string | 否 | 通知回调地址 |
orderType | int | 是 | 订单类型, 目前仅支持普通订单: 0 |
prodType | string | 是 | 支付产品类型,native支付:NATIVE, app支付: APP,WAP 支付: WAP, PC电脑网站支付:PCSITE ,JSAPI: JSAPI ; 目前仅支持 WAP 、APP、PCSITE |
userIp | string | 是 | 订单用户ip |
dataType | string | 否 | 指定返回数据格式,支付url地址: URL 、 支付表单: FORM ,当prodType为PCSITE 或者 WAP, 且 payType为ALIPAY 时生效 ,默认 FORM |
successUrl | string | 否 | prodType 为WAP、PCSITE 时指定付款成功跳转地址,以https或http 开头的url地址,且长度不要超过200 |
cancelUrl | string | 否 | prodType 为WAP、PCSITE 时指定付款取消跳转地址,以https或http 开头的url地址,且长度不要超过200 |
expireTime | string | 是 | 订单支付过期时间,格式"yyyy-MM-dd HH:mm:ss" |
extParams | JSONObject | 否 | 扩展参数,按需传参,若为支付宝产品,当前则仅支持extUserInfo (对应支付宝外部指定买家参数)、goodsDetail(商品列表信息,格式为数组)、pcQrConfig(支付宝pc电脑网站支付二维码设置) 请参考扩展参数extUserInfo子属性 、goodsDetail子属性 、pcQrConfig子属性 |
扩展参数
extParams参数extUserInfo子属性(格式为JSONObject):
参数 | 类型 | 必填 | 备注 |
---|---|---|---|
certNo | string | 否 | 买家证件号。 最大长度64 |
certType | string | 否 | 指定买家证件类型,最大长度128 |
identityHash | string | 否 | 买家加密身份信息,最大长128 |
minAge | string | 否 | 允许的最小买家年龄,最大长3 |
mobile | string | 否 | 指定买家手机号,最大长20 |
name | string | 否 | 指定买家姓名,最大长16 |
needCheckInfo | string | 否 | 是否强制校验买家信息;可选值T/F,最大长度1 |
注: 按需传参,不需要校验的参数,请勿传空字符串,以免影响支付
支付宝订单 extParams参数goodsDetail 单元素子属性(格式为JSONArray):
参数 | 类型 | 必填 | 备注 |
---|---|---|---|
goodsId | string | 是 | 商品编号。 最大长度32 |
goodsName | string | 是 | 商品名称,最大长度128 |
quantity | int | 是 | 商品数量 |
price | string | 是 | 商品单价,单位为元 |
goodsCategory | string | 否 | 商品类目,最大长度24 |
body | string | 否 | 商品描述 |
showUrl | string | 否 | 展示地址 |
注: 按需传参,不需要校验的参数,请勿传空字符串,以免影响支付
支付宝订单PC电脑网站支付二维码配置 extParams参数pcQrConfig子属性(格式为JSONObject):
参数 | 类型 | 必填 | 备注 |
---|---|---|---|
mode | string | 否 | PC扫码支付的方式,订单码-简约前置模式: 0 ;订单码-前置模式: 1 ; 订单码-迷你前置模式: 3 ;订单码-可定义宽度的嵌入式二维码: 4 |
width | int | 否 | mode=4时该参数有效,商户自定义二维码宽度; 示例值】 100 |
注: 按需传参,不需要校验的参数,请勿传空字符串,以免影响支付
业务响应参数
业务响应参数(NATIVE):(暂不开放)
参数 | 类型 | 必填 | 备注 |
---|---|---|---|
orderId | string | 是 | 系统订单号,最大长度64 |
outOrderId | string | 是 | 商户系统订单号,最大长度64 |
orderStr | string | 是 | 支付二维码链接 |
业务响应参数(APP):
参数 | 类型 | 必填 | 备注 |
---|---|---|---|
orderId | string | 是 | 系统订单号,最大长度64 |
outOrderId | string | 是 | 商户系统订单号,最大长度64 |
orderStr | string | 是 | 拉起app支付的订单字符串 |
业务响应参数(WAP):
参数 | 类型 | 必填 | 备注 |
---|---|---|---|
orderId | string | 是 | 系统订单号,最大长度64 |
outOrderId | string | 是 | 商户系统订单号,最大长度64 |
orderStr | string | 是 | form表单字符串/或url地址 |
业务响应参数(PCSITE):
参数 | 类型 | 必填 | 备注 |
---|---|---|---|
orderId | string | 是 | 系统订单号,最大长度64 |
outOrderId | string | 是 | 商户系统订单号,最大长度64 |
orderStr | string | 是 | form表单字符串/或url地址 |
业务响应参数(JSAPI):(暂不开放)
参数 | 类型 | 必填 | 备注 |
---|---|---|---|
orderId | string | 是 | 系统订单号,最大长度64 |
outOrderId | string | 是 | 商户系统订单号,最大长度64 |
orderStr | string | 是 | 第三方支付订单号 |
示例伪代码
public void createOrder(){
// 业务参数
JSONObject bizObj =new JSONObject();
bizObj.put("sappId",sappid); // 设置sappid
bizObj.put("subMchid",subMchid); // 二级商户id,不同的支付类型,值不一样
bizObj.put("outOrderId","商户订单号"); // 设置商户订单号
bizObj.put("subject","2L大瓶可乐"); //订单主题
bizObj.put("amount",1); // 订单金额,单位:分
bizObj.put("payType","ALIPAY"); // 设置支付类型,支付宝订单
bizObj.put("buyerId","buyerId"); // 设置buyerId
bizObj.put("opappid","opappid"); // 设置opappid
// bizObj.put("extInfo","parama=xxx");
bizObj.put("notifyUrl","http://xxxx/notify.html"); // 订单状态通知地址
bizObj.put("orderType",0); //订单类型
bizObj.put("prodType","APP");//支付产品类型,App支付
bizObj.put("expireTime","yyyy-MM-dd HH:mm:ss"); // 设置订单过期时间
JSONObject extParams=new JSONObject(); // 扩展参数,若需要
JSONObject extUserInfo=new JSONObject();
extUserInfo.put("minAge","18"); // 设置最小年龄18
extParams.put("extUserInfo",extUserInfo);
bizObj.put("extParams",extParams);
//请求参数
JSONObject request=new JSONObject();
request.put("appSecKey","你的appSecKey"); // 应用的appSecKey
request.put("signType","RSA2"); // 签名算法
request.put("timestamp","2024-08-01 10:00:00"); // 当前你的服务器系统时间
request.put("version","1.0"); // 接口版本
request.put("bizStr",Base64.getEncoder().encodeToString(JSONObject.toJSONString(bizObj).getBytes(StandardCharsets.UTF_8)); // 设置业务参数
request.put("sign",RSA2Singer.doSign(request.getString("bizStr"),"utf-8",userPrivateKey)); //设置参数加签
// 发送http请求
HttpClient.post(request);
}