跳转到内容
返回官网

支付宝小程序支付

在商家开发的小程序中,用户也可以唤起支付宝收银台进行支付。小程序支付和 APP 支付的支付流程与体验基本一致,小程序支付也支持核销口碑券和口碑商户优惠功能。已签约小程序支付或在口碑开店的商户建议接入小程序支付。 小程序支付在小程序内不能通过扫码、条码、声波付等方式支付,只能唤起收银台进行支付;目前小程序支付还不支持免密支付。

主要流程:

  1. 系统后台调用本 接口会返回一个支付宝订单号,用这个订单号在小程序里,使用小程序本地接口,就可以发起支付跳到支付宝的收银台了。

  2. 用户支付成功后, 系统会发起一个支付回调给系统。

m_8c8096d2e846f16a35564cf79d762791_r_2490467

一、请求参数

请求URL:

POST https://kf.fw199.com/gateway/partner/pay/f2f/qrpay/trade/create

参数名类型必须说明
appidString合作伙伴Id
timestampString必填时间戳 请求时的时间,unixtime格式
mch_idString必填支付宝商户ID
ext_trade_noString必填开发者传入的订单 , 比如1586420573605 不可传入重复的订单号,此订单号在付款完成后,推送回调时一同返回,开发者可以根据此订单号进行业务逻辑处理。
amountint必填付款金额,单位分比如 350, 表示3.5 元。
attachString可选附加参数,200字以内 ,支付完成回调时原样返回给开发者。
bodyString必填商品说明
notify_urlString必填支付完成后的回调通知Url , 比如, http(s)://yoururl.com/paynotify
agent_channelint必填支付渠道,填写 4 支付宝签约版
buyer_idString必填支付宝小程序里,可通过小程序授权接口,获取用户的Id
signString必填签名,对各参数使用提供的AppSecret进行签名,签名逻辑具体实现见示例代码

二、请求示例代码

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);
}

三、返回结果

返回结果如下

{
"code":0,
"message":"ok",
"data":{
"ext_trade_no":"202112233844590979", // 开发者自己入参数时的订单号,原样返回
"quickpay_trade_no":"20211223384459222", // 蜂巢侧的订单号
"trade_no":"2021122322001464271449182010" // 支付宝订单号
},
"trace_id":""
}}

说明: code为0表示成功,非0为失败,message会包含失败原因。