因为公司刚刚重新做了网站,所以也吧公众号和小程序提上了日程,在公众号里面没有什么问题,直接按照官方文档进行代码编写、调试,然后就解决了公众号内支付的问题。
因为小程序提供了<webview>组件,所以把网站直接扔进去就方便多了,但是坑爹的是在网页内进行的下单怎么调起微信支付呢,它并不像公众号能在网页内直接调起,小程序需要在前端进行API的调用。
明白了这个道理下面就有努力的方向了,我们看官方文档,依靠着官方提供的文档才能写出相应功能(小声BB:腾讯的文档真的是坑爹,看了几种开发文档,非就把你绕的难受)
获得用户的openid在这里就不说了,直接调用wx.login就可以,网上也一堆教程。前端页面我写的是
新建wxpay的目录,只是单纯的为了接收后台传过来的参数,以方Page({
onLoad: function (options) { console.log(options) var that = this; //页面加载调取微信支付(原则上应该对options的携带的参数进行校验) that.requestPayment(options); }, //根据 obj 的参数请求wx 支付 requestPayment:function (obj) { //获取options的订单Id var orderId = obj.orderId; //调起微信支付 wx.requestPayment({ //相关支付参数 ‘timeStamp‘: obj.timestamp, ‘nonceStr‘: obj.nonceStr, ‘package‘: ‘prepay_id=‘+obj.prepay_id, ‘signType‘: obj.signType, ‘paySign‘: obj.paySign, //小程序微信支付成功的回调通知 ‘success‘: function (res) { //定义小程序页面集合 var pages = getCurrentPages(); //当前页面 (wxpay page) var currPage = pages[pages.length - 1]; //上一个页面 (index page) var prevPage = pages[pages.length - 2]; console.log(‘支付成功‘) //小程序主动返回到上一个页面。即从wxpay page到index page。此时index page的webview已经重新加载了url 了 //微信小程序的page 也有栈的概念navigateBack 相当于页面出栈的操作 wx.navigateBack(); wx.showModal({ title: ‘支付结果‘, content: ‘支付成功,请到我的->我的订单查看‘, cancelText: "我已了解",//默认是“取消” cancelColor: ‘skyblue‘,//取消文字的颜色 confirmText: "确定",//默认是“确定” confirmColor: ‘skyblue‘,//确定文字的颜色 }) }, //小程序支付失败的回调通知 ‘fail‘: function (res) { console.log(res) var pages = getCurrentPages(); var currPage = pages[pages.length - 1]; var prevPage = pages[pages.length - 2]; console.log("准备修改数据") console.log("准备结束页面") wx.navigateBack(); wx.showToast({ title: ‘支付失败‘, }) } }) }, })