订单支付
参数
serviceId
HROrderPay
sign
生成sign步骤:
1.拼接字符串(除了random
和key
以外的其他参数按照字段名的首字母排序,再拼接上random
和key
):
appID=bc3a54eb-92ab-4cce-ba90-4dbf1183b3fd&body=这是一个商品&mchID=SYT002&outTradeNo=0932409876361760&totalFee=88&random=123456&key=a3ac6835-29e9-4326-804a-5664238362d7
2.使用MD5签名(所有字母为大写字母,32位,如有中文则使用UTF8编码),最终生成字段:
675A8455357E6AC355CAC5AD3E968C61
random
参与签名的随机数
tranDetail
支付信息
String *attach;//附加数据(非必须)
String *body;//商品描述(小于等于128位字节)
String *confirmOrder;//是否需要确认支付(暂不支持需要确认模式)
String *detail;//商品详情(非必须,小于等于512位字节)
String *goodsTag;//商品标记(预留非必须)
String *limitPay;//指定支付方式(非必须)
String *mchID;//商户号
String *outTradeNo;//商户订单号(小于等于32位)
String *timeValid;//交易有效时间
String *totalFee;//总金额
String *deviceInfo;//设备号
String *paidAmount;//已付金额
String *unpaidAmount;//未付金额
String *mchName;//商户名字(小于等于128位字节)
String *feeType;// 货币类型
String *spu;// 商品大类
String *sku;//商品小类,如sku不为空,则必传spu,即sku依赖spu
autoFillData
可包含预填表信息
是否开启极时花支付
speedPay
若商户开通并欲直接调用极时花支付,则speedPay为"true",若不调则不需传:
speedPay:"true"
返回
callBackResult
此返回对象为id
类型的对象,以JSON格式说明:
{
mchID: "", //商户号
openID:"",//用户在华瑞平台此应用中的id
outTradeNo: "", //商户订单号
payID: "", //支付流水号
totalFee: "", //总金额
tradeType: "", //交易类型
peronUnionID: "", // 弱实名用户personUnionID
returnCode: "", // 结果代码
returnMsg: "" // 结果信息
openAccountCurrentAppID:"false",//用户是否在此应用下首次开户,是为true,否为false
"isFirstPay":"True"//用户是否首次支付,是为True,否为False
}
示例代码
SHRB.Api({
serviceId:"HROrderPay",
data:{
speedPay:"true",//是否用极时花支付
tranDetail:{
"attach":"最好的",
"timeValid" : "120",
"outTradeNo" : "1231123123",
"backUrl" : "http://abc.com",
"body" : "天天水果",
"totalFee" :"88",
"detail" : "水蜜桃",
"goodsTag" : "WXG",
"mchName":"最好吃的水蜜桃",
"mchID":"SYT002",
"spbillCreateIp" : "10.125.22.33",
"feeType" : "CNY",
"limitPay" : "01",
"confirmOrder" :"N",
"unpaidAmount":"44",
"paidAmount":"44",
"spu":"",
"sku":""
},
random:"123456",
sign:"AFF38BC65C02F08DDE9CA12EEB2FB2CC",
autoFillData: {
checkData: {//开户时比对用户信息姓名手机号字段,传空则不校验,不为空则检验
userName: "张三",
mobile: "18888888888"
},
"cardNo": "",//银行卡号
"mobile": "",//开户预填手机号
"revmobile": ""//银行卡号对应银行预留手机号
}
}
},function (callBackResult) {
console.log(callBackResult);
})