支付宝小程序支付
在商家开发的小程序中,用户也可以唤起支付宝收银台进行支付。小程序支付和 APP 支付的支付流程与体验基本一致,小程序支付也支持核销口碑券和口碑商户优惠功能。已签约小程序支付或在口碑开店的商户建议接入小程序支付。
小程序支付在小程序内不能通过扫码、条码、声波付等方式支付,只能唤起收银台进行支付;目前小程序支付还不支持免密支付。
主要流程:
- 系统后台调用本 接口会返回一个支付宝订单号,用这个订单号在小程序里,使用小程序本地接口,就可以发起支付跳到支付宝的收银台了。
- 用户支付成功后, 系统会发起一个支付回调给系统。
1.请求参数:
请求URL:
POST https://kf.fw199.com/gateway/partner/pay/f2f/qrpay/trade/create
参数名 | 类型 | 必须 | 说明 |
---|---|---|---|
appid | String | 合作伙伴Id | |
timestamp | String | 必填 | 时间戳 请求时的时间,unixtime格式 |
mch_id | String | 必填 | 支付宝商户ID |
ext_trade_no | String | 必填 | 开发者传入的订单 , 比如1586420573605 不可传入重复的订单号,此订单号在付款完成后,推送回调时一同返回,开发者可以根据此订单号进行业务逻辑处理。 |
amount | int | 必填 | 付款金额,单位分比如 350, 表示3.5 元。 |
attach | String | 可选 | 附加参数,200字以内 ,支付完成回调时原样返回给开发者。 |
body | String | 必填 | 商品说明 |
notify_url | String | 必填 | 支付完成后的回调通知Url , 比如, http(s)://yoururl.com/paynotify |
agent_channel | int | 必填 | 支付渠道,填写 4 支付宝签约版 |
buyer_id | String | 必填 | 支付宝小程序里,可通过小程序授权接口,获取用户的Id |
sign | String | 必填 | 签名,对各参数使用提供的AppSecret进行签名,签名逻辑具体实现见示例代码 |
2. 请求示例代码(Java)
@Test
@Test
public void F2FQRPayTradeCreate() throws Exception {
//支付金额 (单位分)
String amount = "100";
String mchId = "2088341074631210"; //签约的支付宝商户号
// 确保传入的开发者订单号唯一, 订单号生成规则开发者可自定, 修改
String ext_trade_no =String.valueOf(System.currentTimeMillis());
// 扩展参数,付款成功时回调给开发者时会原样返回,根据自己需求填写或为空。
String attach ="";
// 订单标题
String body ="故宫3日游团票";
// 固定用4,请不要修改
String agentChannel = "4";
// 用户付款完成后,回调通知url,开发者自己的服务器Url
String notify_url = Config.PayNotifyUrl;
//业务参数
Map<String, String> data = new HashMap<String, String>();
data.put("appid", Config.AppId);
Long timestamp = System.currentTimeMillis() / 1000;
data.put("timestamp", timestamp.toString());
data.put("ext_trade_no",ext_trade_no );
data.put("mch_id",mchId );
data.put("amount",amount );
data.put("attach",attach );
data.put("body" , body );
data.put("notify_url",notify_url );
data.put("agent_channel",agentChannel );
data.put("buyer_id", "2088002269364279" );
// 参数签名
data.put("sign", Utils.Sign(data,Config.AppSecret));
String response = Utils.doHttpRequest(Config.F2FQRPayTradeCreateUrl, data);
System.out.println(response);
}
3. 返回结果
返回结果如下
{
"code":0,
"message":"ok",
"data":{
"ext_trade_no":"202112233844590979", // 开发者自己入参数时的订单号,原样返回
"quickpay_trade_no":"20211223384459222", // 蜂巢侧的订单号
"trade_no":"2021122322001464271449182010" // 支付宝订单号
},
"trace_id":""
}}
说明: code为0表示成功,非0为失败,message会包含失败原因。
文档更新时间: 2023-09-07 18:09 作者:admin