配置功能页函数支付功能页需要插件开发者在插件所有者小程序中提供一个函数来响应插件中的支付调用。即,在插件中跳转到支付功能页时,这个函数就会在合适的时机被调用,来帮助完成支付。如果不提供功能页函数,功能页调用将通过 fail 事件返回失败。 支付功能页函数应以导出函数的形式提供在插件所有者小程序的根目录下的 functional-pages/request-payment.js 文件中,名为 beforeRequestPayment。该函数应接收两个参数: 参数名 | 类型 | 说明 |
---|
paymentArgs | Object | 即通过 functional-page-navigator 的 arg 参数中的 paymentArgs 字段传递到功能页的自定义数据 | callback | Function | 回调函数,调用该函数后,小程序将发起支付(类似于 wx.requestPayment) |
callback函数的参数: 参数名 | 类型 | 说明 |
---|
error | Object | 失败信息,若无失败,应返回 null | requestPaymentArgs | Object | 支付参数,用于调用 wx.requestPayment,参数如下 |
reqeustPaymentArgs 的参数: 用于发起支付,和 wx.requestPayment 的参数相同,但没有回调函数(success, fail, complete): 参数 | 类型 | 必填 | 说明 |
---|
timeStamp | String | 是 | 时间戳从1970年1月1日00:00:00至今的秒数,即当前的时间 | nonceStr | String | 是 | 随机字符串,长度为32个字符以下。 | package | String | 是 | 统一下单接口返回的 prepay_id 参数值,提交格式如:prepay_id=*** | signType | String | 是 | 签名算法,暂支持 MD5 | paySign | String | 是 | 签名,具体签名方案参见小程序支付接口文档; | extraData | any | 否 | 由开发者决定的自定义数据段,该字段将被无修改地透传到支付成功的回调参数中,具体见代码示例中的使用方法。基础库 2.9.1 开始支持 |
了解更多信息,请查看微信支付接口文档 功能页函数代码示例:
exports.beforeRequestPayment = function (paymentArgs, callback) {
var getOpenIdURL = require('./URL').getOpenIdURL;
var paymentURL = require('./URL').paymentURL;
var customArgument = paymentArgs.customArgument;
wx.login({
success: function (data) {
wx.request({
url: getOpenIdURL,
data: { code: data.code },
success: function (res) {
wx.request({
url: paymentURL,
data: { openid: res.data.openid },
method: 'POST',
success: function (res) {
console.log('unified order success, response is:', res);
var payargs = res.data.payargs;
var error = null;
var requestPaymentArgs = {
timeStamp: payargs.timeStamp,
nonceStr: payargs.nonceStr,
package: payargs.package,
signType: payargs.signType,
paySign: payargs.paySign,
extraData: {
timeStamp: payargs.timeStamp
},
};
callback(error, requestPaymentArgs);
}
});
},
fail: function (res) {
console.log('拉取用户openid失败,将无法正常使用开放接口等服务', res);
callback(res);
}
});
},
fail: function (err) {
console.log('wx.login 接口调用失败,将无法正常使用开放接口等服务', err)
callback(err);
}
});
}
注意:功能页函数不应 require 其他非 functional-pages 目录中的文件,其他非 functional-pages 目录中的文件也不应 require 这个目录中的文件。这样的 require 调用在未来将不被支持。 这个目录和文件应当被放置在插件所有者小程序代码中(而非插件代码中),它是插件所有者小程序的一部分(而非插件的一部分)。 如果需要新增或更改这段代码,需要发布插件所有者小程序,才能在正式版中生效;需要重新预览插件所有者小程序,才能在开发版中生效。
收货地址功能页收货地址功能页用于展示用户的收货地址列表,用户可以选择其中的收货地址。自基础库版本 2.4.0 开始支持。 调用参数用户信息功能页使用 functional-page-navigator 进行跳转时,对应的参数 name 应为固定值 chooseAddress ,返回参数与 wx.chooseAddress 相同。 bindsuccess返回参数说明: 属性 | 类型 | 说明 | 最低版本 |
---|
userName | string | 收货人姓名 | | postalCode | string | 邮编 | | provinceName | string | 国标收货地址第一级地址 | | cityName | string | 国标收货地址第一级地址 | | countyName | string | 国标收货地址第一级地址 | | detailInfo | string | 详细收货地址信息 | | nationalCode | string | 收货地址国家码 | | telNumber | string | 收货人手机号码 | | errMsg | string | 错误信息 | |
代码示例:
<functional-page-navigator
name="chooseAddress"
version="develop"
bind:success="onSuccess"
bind:fail="onFail"
>
<button>选择收货地址</button>
</functional-page-navigator>
Component({
methods: {
onSuccess: function (res) {
console.log(res.detail);
},
onFail: function (res) {
console.log(res);
}
}
});
下节更精彩 |