微信小程序支付
HTTP请求
POST ../trade/v1/payment PayType: 800213
Step 1: 微信实名认证 业务人员必须在微信官方平台进行身份验证后才能使用微信支付功能。
Step 2: 获取 openid 完成实名认证后,通过商户实名小程序获取openid参数。 具体获取方法详见 微信文档.
Step 3: 发送付款请求 使用以下参数发起付款请求。
商户可选择开通微信实名认证。 目前实名认证仅适用于中国大陆公民,包括真实姓名和身份证号码。 如果提供身份证明,付款人的钱包信息(例如连接的银行卡)必须与商家提供的数据相同。 如果客户尚未将微信账户绑定银行卡,仍可进行付款。
有关代码说明,请选择带有以下选项卡的 Node.js。
qfPayOpenAPI: function () {
let app_code = 'A2BE4E015A8A4B0A8E9D88**********';
let client_key = '498717301B0846D1992B6F**********';
let environment = 'https://test-openapi-hk.qfapi.com/trade/v1/payment';
let openid = this.data.openid;
let amount = this.data.amount * 100;
let random_number = String(Math.round(Math.random() * 1000000000));
let datetime = new Date().toISOString().replace(/T/, ' ').replace(/\..+/, '');
let payload = {
txamt: 100,
txcurrcd: 'SGD',
pay_type: '800213',
out_trade_no: '0123456789',
txdtm: '2020-07-03 03:14:29',
sub_openid: 'oS80_5dxekECAOlVBeQFk34q123s'
};
var ordered = {};
Object.keys(payload).sort().forEach(function(key) {
ordered[key] = payload[key] });
console.log(ordered)
var str = [];
for (var p in ordered)
if (ordered.hasOwnProperty(p)) {
str.push((p) + "=" + (ordered[p]));
}
var string = str.join("&")+client_key;
console.log(string)
var signature = utilMd5.hexMD5(string).toUpperCase()
console.log(signature)
wx.request({
url: environment,
data: payload,
method: 'POST',
header: {
'X-QF-APPCODE': app_code,
'X-QF-SIGN': signature,
'content-Type': 'application/x-www-form-urlencoded'
},
success: (res) => {
if (res.statusCode == 200) {
console.log(res)
console.log(res.data)
this.weChatPayment(res);
}
},
fail: (err) => {
console.log(err);
},
complete: (res) => {
wx.hideLoading();
console.log("API request completed")
}
})
},
请求参数
| 参数名称 | 参数编码 | 是否必填 | 参数类型 | 描述 |
|---|---|---|---|---|
| 公共支付参数 | — | — | — | 请参阅有关交易的公共支付参数 |
| 微信授权码 | sub_openid | 是 | String(128) | |
| 订单到期时间 | expired_time | 否 | String(3) | QRC 过期时间(以分钟为单位)。 微信小程序默认QRC过期时间为30分钟。 该参数可手动调整,最小为 5 分钟,最大为 120 分钟。 |
| Designated payment method | limit_pay | 否 | String | 参数值指定为“no_credit”, 禁止信用卡支付。 此设置仅对中国大陆有效。 |
| Extended Customer Info | extend_info | 否 | Object | 实名客户身份识别。 该参数目前仅适用于中国大陆公民,并且需要针对所选的PayType使用微信显式激活。 参数“user_creid”中包含消费者的身份证号码,“user_truename”中必须提供编码形式或汉字书写的付款人真实姓名。 一个例子如下所示; extend_info = '{"user_creid":"430067798868676871","user_truename":"\\u5c0f\\u6797"}' |
响应参数
| 参数编码 | 二级参数编码 | 参数类型 | 参数名称 | 描述 |
|---|---|---|---|---|
pay_params | appId | String(16) | 公共WMP ID | 开发者在微信注册小程序后,即可获取appId。 |
| — | timeStamp | String(32) | 时间戳 | 当前时间 |
| — | nonceStr | String(32) | 随机字符串 | 随机字符串,长度不超过32位 |
| — | package | String(128) |