uniapp之微信公众号支付
简介近来用uniapp开发H5的时候,需要接入支付,原来都是基于后端框架来做的,所以可谓是一路坑中过,今天整理下大致流程分享给大家。
近来用uniapp开发H5的时候,需要接入支付,原来都是基于后端框架来做的,所以可谓是一路坑中过,今天整理下大致流程分享给大家。
1.先封装util.js,便于后面调用
const isWechat =function(){ return String(navigator.userAgent.toLowerCase().match(/MicroMessenger/i)) === 'micromessenger'; } const wechatAppid = function() { return '你的appid'; } const payed = function(data){ WeixinJSBridge.invoke('getBrandWCPayRequest', data, function(respay) { if (respay.err_msg === "get_brand_wcpay_request:ok") { uni.showToast({ title:'支付成功', icon:"none" }) } else if (respay.err_msg === "get_brand_wcpay_request:cancel") { uni.showToast({ title:"取消支付", icon:"none", duration:2000 }) } else if (respay.err_msg === "get_brand_wcpay_request:fail") { uni.showToast({ title:"支付失败", icon:"none", duration:2000 }) } }, function(err) { uni.showToast({ title:err, icon:"none", duration:2000 }) }) } /** * http请求 * action 方法名 * data 传输数据 * Method 请求方式 GET POST */ const Requests = function (action,data,Method='GET',event) { var headers = { 'content-type': 'application/json' // 默认值 } if (Method == 'POST') { headers = { 'content-type': 'application/x-www-form-urlencoded' // 默认值 } } uni.request({ url: config.requestUrl + action, method:Method, header:headers, data: data, success(res) { if (res.data.status == 100) { return event(res.data); }else { uni.showToast({ title: res.data.msg, icon:'none' }) } },fail() { uni.showToast({ title: '网络异常', icon: 'none', duration: 2000 }) } }) } export default { isWechat, wechatAppid, payed, Requests }
2.在需要调用支付的页面判断环境跳转获取code
先在页面加载util.js
import util from 'common/util.js'
再在onload里判断获取code
if(!options.code === false){ this.code =options.code }else{ if(util.isWechat()){ let appid = util.wechatAppid(); let local = window.location.href; window.location.href = 'https://open.weixin.qq.com/connect/oauth2/authorize?appid='+appid+'&redirect_uri='+encodeURIComponent(local)+'&response_type=code&scope=snsapi_base&state=1#wechat_redirect' return; } }
最后再需要支付的地方进行调用
var that = this //先创建订单 util.Requests('order/createOrder',{id:that.id},'POST', function(eve) { var eves = eve.result //再从后台获取统一下单支付参数 util.Requests('pay/pay',{order_id:eves,code:that.code},'POST', function(event) { util.payed(event.result) }) })
ok,至此,就结束了,喵~
很赞哦! (0)
赏
上一篇: 微信小程序之HTML富文本解析