震精:小程序中居然可以使用支付宝支付

前言:

微信小程序正常来说只能使用微信支付,但是因为微信支付目前无法使用,所以产生了此需求。

1、我们需要一个正常使用的微信小程序
2、把小程序的主要功能页面复制一套H5页面,并单独写一个支付页面
3、在支付宝开放平台注册支付宝商家商户并配置信息(配置信息这一步一般由后端来做,因为他要根据官方API来写回调接口)
4、H5系统使用和小程序一样的接口API,确保两边的token是一致的可以通用
5、在小程序后台配置webview域名,确保小程序可以跳转到H5页面
6、小程序产生支付行为,把订单预支付接口返回的订单ID传递到webview页面
ini 复制代码
const orderId = res.data.orderId;
        // wx.setStorageSync('payFromId',orderId)
        /* 订单跳转h5支付 */
        wx.navigateTo({
          url: `/pages/payWebview/index?id=${orderId}`,
        })

orderId为预支付接口返回的订单id,将他拼接到小程序中的webview页面

javascript 复制代码
onLoad(options) {
      // let cartId =encodeURIComponent(wx.getStorageSync('payFrom')) 
      // console.log(decodeURIComponent(cartId));
      if(options.id){
        let token = wx.getStorageSync('token')//获取token
        console.log('orderid',options.id); //打印传递的订单id
        console.log('token',token);
        //将订单id和token一块拼接到H5页面的支付页面
        this.setData({
          payUrl:`https://lgtesth5.qtxxkx.com/#/pages/Payment/Payment?id=${options.id}&token=${token}`
        })
      }
    },

以上代码是小程序内的webview页面逻辑

7、H5页面解析网址携带的参数,并发起支付。

H5网页要做以下操作

首先获取当前页面的url路径,并将路径携带的参数解析出来,存token的操作是因为支付完成后要查看订单,这个接口需要验证token。

之后是发起支付宝H5支付 代码如下

因为支付宝网页支付返回的字段是一个html标签。所以我们需要在下个页面进行操作

javascript 复制代码
	onLoad(options) {
		if (options.url) {
			// console.log(options.url);
			// const Form = JSON.parse(decodeURIComponent(options.url));
			const Form = options.url;
			console.log(Form);
			this.formUrl = Form;
			//将接口返回的Form表单显示到页面
			document.querySelector('body').innerHTML = this.formUrl; // body对应上面的class
			this.$nextTick(() => {
				console.log(document.forms, 'form'); //跳转之前,可以先打印看看forms,确保后台数据和forms正确,否则,可能会出现一些奇奇怪怪的问题 ╮(╯▽╰)╭
				document.forms['0'].submit(); //重点--这个才是跳转页面的核心,获取第一个表单并提交
			});
		} else {
			const Form = uni.getStorageSync('Form'); //获取你本地存储的form表单渲染成页面
			console.log(Form);
			this.formUrl = Form;
			//将接口返回的Form表单显示到页面
			document.querySelector('body').innerHTML = this.formUrl; // body对应上面的class
			this.$nextTick(() => {
				console.log(document.forms, 'form'); //跳转之前,可以先打印看看forms,确保后台数据和forms正确,否则,可能会出现一些奇奇怪怪的问题 ╮(╯▽╰)╭
				document.forms['0'].submit(); //重点--这个才是跳转页面的核心,获取第一个表单并提交
			});
		}
	},

结尾:使用此方法的话有一个弊端,小程序端接收不到H5的回调信息,需要刷新页面重新获取数据才可以看到支付结果,而且返回小程序查看小程序页面还是会停留在订单提交页。

相关推荐
斯班奇的好朋友阿法法5 小时前
鸿蒙 vs iOS vs 微信小程序:开发平台全面对比
ios·微信小程序·harmonyos
Greg_Zhong2 天前
微信小程序如何关闭:当前渲染模式为webview?
微信小程序·微信小程序渲染引擎·渲染引擎需搭配更高基础库
橘子海全栈攻城狮2 天前
【最新源码】养老院系统管理A013
java·spring boot·后端·web安全·微信小程序
计算机学姐2 天前
基于微信小程序的校园失物招领管理系统【uniapp+springboot+vue】
java·vue.js·spring boot·mysql·信息可视化·微信小程序·uni-app
SkyWalking中文站2 天前
用 SkyWalking 监控微信和支付宝小程序
微信·微信小程序·支付宝
计算机学姐2 天前
基于微信小程序的宠物服务系统【uniapp+springboot+vue】
java·vue.js·spring boot·mysql·微信小程序·uni-app·宠物
Greg_Zhong2 天前
微信小程序中实现自定义多选效果(完整实现及问题记录)
微信小程序·自定义多选控件
独角鲸网络安全实验室3 天前
2026微信小程序抓包全解析:从实操落地到合规风控,解锁前端调试新范式
前端·微信小程序·小程序·抓包·系统代理绕过·https证书严格校验·进程隔离
fix一个write十个3 天前
【uniApp开发】微信小程序 web-view 内嵌 H5 跳转支付踩坑实录
微信小程序·uni-app
棋宣3 天前
微信小程序onShareAppMessage 分享-生命周期函数 在vue3中 组合式函数 hooks中不生效
微信小程序·小程序