跳转到内容
返回官网

微信小程序

商户系统先调用该接口在微信支付服务后台生成预支付交易单,返回正确的预支付交易会话标识后再按Native、JSAPI、App等不同场景生成交易串调起支付。

 

请求地址:

https://kf.fw199.com/gateway/partner/pay/wx/personal/jsapi

二、请求地址

参数名类型说明示例
appidString合作伙伴Id
timestampString时间戳请求时的时间,unixtime格式
mch_idString商户ID向蜂巢客服咨询获取
ext_trade_noString开发者传入的订单 , 比如1586420573605不可传入重复的订单号,此订单号在付款完成后,推送回调时一同返回,开发者可以根据此订单号进行业务逻辑处理。
ext_buyerString开发者传入的下单购买者标识手机号,邮箱,用户ID等任意用户标识。
amountint付款金额,单位分比如 350, 表示3.5 元。
attachString附加参数,200字以内支付完成回调时原样返回给开发者。
bodyString商品说明
notify_urlString支付完成后的异步回调通知Url比如, http(s)://yoururl.com/paynotify ,确保公网可访问
sub_appidString必填, 用户在子商户AppID下的唯一标识商户自己的微信小程序appId
sub_openidString必填, 用户在子商户AppID下的唯一标识买家在商户微信小程序里的openid
signString签名对各参数使用提供的AppSecret进行签名,签名逻辑具体实现见示例代码

请求示例

@Test
public void PayWXCreateH5Pay() throws Exception {
//支付金额 (单位分)
String amount ="1000";
String mchId ="163588 "; //由蜂巢提供的微信商户号,向客服咨询
// 确保传入的开发者订单号唯一, 订单号生成规则开发者可自定, 修改
String ext_trade_no =String.valueOf(System.currentTimeMillis());
// 扩展参数,付款成功时回调给开发者时会原样返回,根据自己需求填写或为空。
String attach ="";
// 订单标题
String body ="支付测试商品08";
// 回调通知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("sub_appid","wx168f3faec71f8488" );
data.put("sub_openid","oR-0h4_3s-sBC9zs1go4xg81yWJh" );
data.put("sign", Utils.Sign(data, Config.AppSecret ));
String result = doHttpRequest(Config.PayWXPersonalCreateH5PayUrl,data);
System.out.println("result:"+result);
JSONObject rsp = JSON.parseObject(result);
if (rsp.getInteger("code") == 0){
JSONObject rspData = rsp.getJSONObject("data");
String payUrl = URLDecoder.decode(rspData.getString("h5pay_url"),"utf-8");
System.out.println("请在手机浏览器点击此Url跳去支付:"+payUrl);
} else {
System.out.println("返回错误:" + rsp.getString("message"));
}
}

三、接口返回结果

{
"code": 0,
"message": "ok",
"data": {
"appId": "wx168f3faec71f846a",
"nonceStr": "40D082E2C6AC528A730B85911DACC54D",
"package": "prepay_id=wx151958164112143d8faf3c56da61a40000",
"paySign": "oGrG3lP+8nfif41mffYDvA7np6Z7Mfz/PULBMURh9vwszCymlNAajPP/GEaEJ2d1J689WSa6I8C/TrVHCOnFj5RTh2/0WmBLdFkC7jfm28K33LqTUbs9dOUSBSoaUYu/YC9iI4YXgo41Mqav9KrhqnJam+qVz/lsv00tNf3OZZf9GC9ceT70JqK+3iZguOBX/4EcSJqMFX4CuV8YVSk/kyzv+RgD47HX8k4ZC+cAGGPrkGwUDse6QRz+/dkcrvccJZ0tMglwT1ZtWGIH2kpkXvL6SvtPeqXh6EEl8GLU91/ELu+H8DIp+yUdwQipWCujWpS4bDu6G+3JlD2q3w4leg==",
"prepayId": "wx151958164112143d8faf3c56da61a40000",
"signType": "RSA",
"timeStamp": "1784116696"
},
"trace_id": "03ae9774-90d1-4773-a5d7-ca1914e57e62"
}

返回参数说明

字段类型说明
`code`int业务状态码。`0` 表示成功,非 `0` 表示失败
`message`string结果描述。成功时为 `ok`,失败时为具体错误信息
`data`object成功时返回调起支付参数;失败时通常为空或不存在
`trace_id`string本次请求追踪 ID,排查问题时提供给蜂巢客服

data 字段

调起微信支付

字段类型说明
`appId`string调起支付使用的小程序 AppID。
`timeStamp`string时间戳(秒,字符串)。用于签名,须原样传给 `wx.requestPayment`
`nonceStr`string随机字符串。用于签名,须原样传给 `wx.requestPayment`
`package`string预支付交易会话标识,固定格式:`prepay_id={prepayId}`
`signType`string签名类型,固定为 `RSA`
`paySign`string支付签名。由蜂巢按微信支付 V3 规则生成,小程序端直接透传,勿自行重算
`prepayId`string微信预支付交易会话 ID,有效期 2 小时。`package` 字段中已包含,也可单独读取

 

四、小程序调起示例

收到接口返回的支付所要的数据,在小程序里调用wx.requestPayment方法,传入参数,唤起微信收银台。   

wx.request({
url: 'https://your-api.com/pay/wx/jsapi', //这是你自己业务系统提供api,按实修改。
method: 'POST',
data: { orderId: '20260715001' }, // 必要入参传入自己的业务系统,按实修改。
success(res) {
if (res.data.code !== 0) {
wx.showToast({ title: res.data.message, icon: 'none' });
return;
}
const d = res.data; // 蜂巢网关返回的 data
wx.requestPayment({
timeStamp: d.timeStamp,
nonceStr: d.nonceStr,
package: d.package,
signType: d.signType,
paySign: d.paySign,
success() {
// 仅表示调起成功,最终以 notify_url 异步通知为准
wx.showToast({ title: '支付成功', icon: 'success' });
},
fail(err) {
if (err.errMsg.indexOf('cancel') !== -1) {
wx.showToast({ title: '已取消支付', icon: 'none' });
} else {
wx.showToast({ title: '支付失败', icon: 'none' });
}
}
});
}
});

上述 5 个字段(timeStamp、nonceStr、package、signType、paySign)须与接口返回完全一致,不可修改或重新签名。 支付结果以微信异步通知 + 商户侧查单为准;wx.requestPayment 的 success 仅表示调起成功,不代表资金已到账。建议小程序里弹出支付成功以后,跳到订单状态页面轮询订单支付状态是否真正成功。