创建插件
微信开放文档:开发插件篇
已创建插件可直接跳到第二节
支付功能页(wx.requestPluginPayment)
注意步骤!!
- 插件的代码
- 使用者的小程序调起插件
- 配置线上测试
1、插件代码:plugin文件
关于参数说明:
以下是代码片段,handlePay是主要“调起”支付的函数,写在plugin插件目录的index.js文件内
handlePay(fee,paymentArgs,currencyType,version) { //参数是从小程序进来的
console.log('下单事件,promise')
return new Promise((resolve,reject) => {
wx.requestPluginPayment({
fee,
paymentArgs,
currencyType,
version,
success(r) { //wx.requestPluginPayment方法必须使用callback回调
resolve(r)
},
fail(e) {
reject(e)
},
})
})
},
2、使用者小程序:在“插件中”是miniprogram文件中的代码
1、配置
2、调用函数(使用插件的页面中调用,俺是goods.js)
//在文件顶部声明插件
const plugin = requirePlugin('tx-plugin')
wx.request({
url: 下单接口地址,
method:'POST',
header: {
'content-type': 'application/x-www-form-urlencoded',
'token': token,
},
data:obj,//下单参数
success: function(res) {
let fee = 0.01 //下单价格,仅用于展示
let paymentArgs = res.data.data //后端返回的下单参数
let currencyType = 'CNY'
let version = 'trial' //版本号
//handlePay是在插件中定义的函数
plugin.handlePay(fee,paymentArgs,currencyType,version).then(res=>{
console.log(res)
}).catch(err=>{
console.log(err)
})
},
fail: function (err) {
console.log(err)
}
})
3、调起
配置功能页函数,注意文件的位置!!
前面有提到,miniprogram是模拟调用插件的小程序文件。这个配置功能页是需要在miniprogram的根目录下创建functional-pages文件夹,在此文件夹下创建request-payment.js文件。
该文件的目的是将微信支付的下单参数返回给wx.requestPluginPayment方法(仅个人用法)
exports.beforeRequestPayment = function (paymentArgs, callback) {
console.log(paymentArgs)
// 自定义的参数,此处应为从插件传递过来的 paymentArgs
var customArgument = paymentArgs.customArgument;
console.log(paymentArgs)
var error = null;
var requestPaymentArgs = { //该对象为下单所需参数,以后端接口返回的为准!!
timeStamp: paymentArgs.timeStamp,
nonceStr: paymentArgs.nonce,
package: paymentArgs.prepay_id,
signType: 'MD5',
paySign: paymentArgs.sign,
};
callback(error, requestPaymentArgs); //重点:返回requestPaymentArgs
console.log(requestPaymentArgs)
}
注意
插件同appid的小程序必须在根目录下创建functional-pages文件(跟上述插件中的miniprogram的一样),上传代码并发布!
插件成功调起,无法调起支付的解决方案:
1、确认一下宿主小程序的代码是否已发布
2、插件的支付商户号是否绑定(已绑定的最好在插件发布后重新绑定)