该功能依赖第三方SDK提供服务,第三方SDK可能会收集用户的个人数据。应用中请务必在使用该功能前,告知用户将搜集个人数据,并引导用户阅读相应的隐私政策。
该功能依赖第三方SDK提供服务,第三方SDK可能会收集用户的个人数据。应用中请务必在使用该功能前,告知用户将搜集个人数据,并引导用户阅读相应的隐私政策。
微信支付支持两种接入支付方式:app支付接入和网页支付接入。
从 1040 版本开始,网页支付将支持设置referer方式,此方式不再需要实现中间页,但原先需要实现中间页跳转的方式还会继续支持。设置referer方式需要在pay接口中设置referer参数,pay接口的extra参数中必须配置mweb_url,详见下述参数说明。
app支付接入
华为手机目前不支持app支付,如果您的快应用仅在华为推广,请勿接入app支付。
{"name": "service.wxpay", "params": {"package": "com.your.package", "sign": "abcdefg", "url": "https://your.domain/page"}} import wxpay from '@service.wxpay'
var wxpay = require("@service.wxpay") 网页支付接入
{"name": "service.wxpay", "params": {"package": "com.your.package", "sign": "abcdefg", "url": "https://your.domain/page"}} import wxpay from '@service.wxpay'
var wxpay = require("@service.wxpay") 限制条件 | 说明 |
|---|---|
适用终端 | 手机、平板 |
适用区域 | 中国大陆 |
接口 | 定义 |
|---|---|
获取当前可用的微信支付调用方式。 | |
发起微信支付。 | |
开通微信支付分(华为手机暂不支持)。 |
描述
获取当前可用的微信支付调用方式。
返回值
描述
发起微信支付。
OBJECT参数
参数 | 类型 | 是否必填 | 说明 |
|---|---|---|---|
prepayid | string | 是 | |
referer(1040+) | string | 否 | 在微信支付后台配置的域名。从 1040 版本开始,在使用微信网页方式调用时,若该参数不为空,将通过设置referer的方式拉起微信客户端。 |
extra | object | 是 | 当前支付方式下,需要填入的额外订单信息,具体参见“app方式extra参数说明”和“网页方式extra参数说明”。 |
success | function | 否 | 成功后的回调函数:
|
fail | function | 否 | 失败回调。 |
cancel | function | 否 | 取消回调。 |
app方式extra参数说明:
字段名 | 是否必选 | 说明 |
|---|---|---|
app_id | 是 | 微信支付订单中的app_id。 |
partner_id | 是 | 微信支付订单中的partner_id。 |
package_value | 是 | 微信支付订单中的package_value。 |
nonce_str | 是 | 微信支付订单中的nonce_str。 |
time_stamp | 是 | 微信支付订单中的time_stamp。 |
order_sign | 是 | 微信支付订单中的order_sign。 |
网页方式extra参数说明:
字段名 | 是否必选 | 说明 |
|---|---|---|
mweb_url | 否 | 在微信的支付服务器下单以后,微信返回的MWEB_URL,在开发者用于微信支付的h5页面中,直接将mweb_url取出后跳转过去即可,但这个做法并不是强制的,您也可以通过其他自定义键值向您自己的服务器换取MWEB_URL。 从 1040 版本开始,若使用设置referer的方式拉起微信客户端支付,则此参数必选。 |
custome_key | 否 | 其他的自定义键值,开发者可以根据需要增加其他自己认为需要的键名和键值。 |
success返回值:
参数名 | 类型 | 说明 |
|---|---|---|
prepayid | string | 只在App支付方式下会出现,微信支付订单的prepayId。 |
final_url | string | 只在网页方式下会出现,拼接参数之后,最终用于打开网页的url。 |
fail返回错误码:
错误码 | 说明 |
|---|---|
900 | 在manifest.json中配置的应用签名有误,无法解析。 |
901 | 在manifest.json中配置的应用包名有误。 |
1000 | 微信未安装。 |
1001 | 用于微信网页支付的url配置找不到。 |
2001 | 订单已经提交给微信,但是微信返回错误, 可能的原因:签名错误、未注册APPID、项目设置APPID不正确、注册的APPID与设置的不匹配、其他异常等。 |
示例代码
useWxpay: function() {
var payType = wxpay.getType();
if (payType == 'APP') {
wxpay.pay({
//微信 app支付的prepayId
prepayid: 'your order prepayid,eg: wx20170101abcdef1234567890',
extra: {
app_id: 'your app_id',
partner_id: 'your partner_id',
package_value: 'your package_value',
nonce_str: 'your nonce_str',
time_stamp: 'your time_stamp',
order_sign: 'your order sign'
},
fail: function(data, code) {
console.log("WX PAY failed, code=" + code);
},
cancel: function(data) {
console.log("WX PAY cancelled by user");
},
success: function(data) {
console.log("WX PAY success");
}
})
} else if (payType == 'MWEB') {
wxpay.pay({
//微信网页支付的prepayId
prepayid: 'your order prepayid,eg: wx20170101abcdef1234567890',
extra: {
//传递给支付页面的自定义参数, 根据需要进行设置, 会被urlEncode之后拼接在配置的url尾部
mweb_url: 'https://wx.tenpay.com/cgi-bin/mmpayweb-bin',
customeKey1: 'customeValue1',
customeKey2: 'customeValue2'
},
fail: function(data, code) {
console.log("WX H5 PAY handling fail, code=" + code);
},
cancel: function(data) {
console.log("WX H5 PAY handling cancel");
},
success: function(data) {
//H5方式下,支付成功的回调仅仅只是指将订单递交给微信,并不意味着支付已经成功完成
console.log("WX H5 PAY handling success");
}
})
} else {
console.log("wx pay not available.");
}
} 1040 版本开始,微信网页支付支持设置referer方式的示例代码:
<template>
<div class="container">
<div class="page-title-wrap">
<text class="page-title">{{componentName}}</text>
</div>
<input class="btn" type="button" value="微信支付类型" onclick="payType" />
<input class="btn" type="button" value="微信app支付" onclick="appPay"/>
<input class="btn" type="button" value="微信web支付" onclick="webPay"/>
</div>
</template>
<style>
@import '../Common/css/common.css';
</style>
<script>
import pay from '@service.wxpay'
import prompt from '@system.prompt'
import device from '@system.device'
export default {
data: {
componentName: 'wxpay'
},
onInit: function () {
this.$page.setTitleBar({ text: 'wxpay' })
console.info('page init ing')
console.info('platform VersionCode ' + device.platform.versionCode)
console.info('page name ' + this.$page.name + " page component " + this.$page.component + " page path " + this.$page.path)
},
payType: function () {
var payType = pay.getType()
console.info(' wxpay call function getType')
prompt.showToast({
message: 'pay type is ' + payType
})
},
appPay: function () {
console.info('wxpay call function appPay')
pay.pay({
prepayid: 'wx31144125075572856c06803c3317399963', // your order prepayid,eg: wx20170101abcdef1234567890
extra: {
app_id: 'wxf2d0692792ceed2e', // your app_id
partner_id: '1217180501', // your partner_id
package_value: 'Sign=WXPay', // your package_value
nonce_str: '6f65bd777a1e4b5f9cab39223f8311ae', // your nonce_str
time_stamp: '1533019285', // your time_stamp
order_sign: 'AA7AFB31EAA6881ED23C1D71A38AE95D' // your order sign
},
fail: function (data, code) {
console.log('WX PAY ' + pay.getType() + 'failed, code = ' + code);
prompt.showToast({
message: 'WX PAY ' + pay.getType() + ' failed, code = ' + code
})
},
cancel: function (data) {
console.log('WX PAY ' + pay.getType() + ' cancelled by user');
prompt.showToast({
message: 'WX PAY ' + pay.getType() + ' cancelled by user'
})
},
success: function (data) {
console.log('WX PAY ' + pay.getType() + ' success');
prompt.showToast({
message: 'WX PAY ' + pay.getType() + ' success'
})
}
})
},
webPay: function () {
console.info('wxpay call function webPay')
pay.pay({
prepayid: 'wx09113246667953cfb8d067ad1892777375', // your order prepayid,eg: wx20170101abcdef1234567890
referer: 'https://www.huawei.cn', //your host name configured in wechat
extra: {
mweb_url: 'https%3A%2F%2Fwx.tenpay.com%2Fcgi-bin%2Fmmpayweb-bin%2Fcheckmweb%3Fprepay_id%3Dwx09113246667953cfb8d067ad1892777375%26package%3D299247950%26redirect_url%3Dhttps%3A%2F%2Fm.vip.com%2Fuser-order-detail-list-0.html',
prepayid: 'wx09113246667953cfb8d067ad1892777375'
},
fail: function (data, code) {
console.log('WX PAY ' + pay.getType() + ' failed, code = ' + code);
prompt.showToast({
message: 'WX PAY ' + pay.getType() + ' failed, code = ' + code
})
},
cancel: function (data) {
console.log('WX PAY ' + pay.getType() + ' cancelled by user');
prompt.showToast({
message: 'WX PAY ' + pay.getType() + ' cancelled by user'
})
},
success: function (data) {
console.log('WX PAY ' + pay.getType() + ' success');
prompt.showToast({
message: 'WX PAY ' + pay.getType() + ' success'
})
}
})
}
}
</script> 描述
开通微信支付分。
华为手机暂不支持该功能。
OBJECT参数
参数 | 类型 | 是否必填 | 说明 |
|---|---|---|---|
success | function | 否 | 成功回调。 |
fail | function | 否 | 失败回调。 |
complete | function | 否 | 执行结束后的回调。 |
fail返回错误码:
错误码 | 说明 |
|---|---|
1002 | 不支持微信支付分。 |
示例代码
pay.payScoreEnable({
success: function (data) {
console.log('WX payScoreEnable success');
prompt.showToast({
message: 'WX payScoreEnable success'
})
},
fail: function (data, code) {
console.log('WX payScoreEnable failed, message = ' + data.content + ' code = ' + code);
prompt.showToast({
message: 'WX payScoreEnable failed, message = ' + data.content + ' code = ' + code
})
}
})