h5唤起微信支付

首先需要用户授权换取code,

login() {
				uni.setStorageSync('zhishiWxlogin',2)
				let appid = 'wx02f4a9300750aecb'
				let uri = 'http://amzygys.com/h5/'
					window.location.href =
						`https://open.weixin.qq.com/connect/oauth2/authorize?appid=${appid}&redirect_uri=${encodeURIComponent(uri)}&response_type=code&scope=snsapi_base&state=STATE#wechat_redirect`
},

根据跳转的目标页,获取url路径里面的code,拿到之后存储一下,我这里是存到了本地

GetRequest() {
				let url = window.location.search; //获取url中"?"符后的字串
				if (url.indexOf("?") != -1) { //判断是否有参数
					let str = url.substr(1); //从第一个字符开始 因为第0个是?号 获取所有除问号的所有符串
					let strs = str.split("="); //用等号进行分隔 (因为知道只有一个参数 所以直接用等号进分隔 如果有多个参数 要用&号分隔 再用等号进行分隔)
					// console.log(strs,'payWxCode');
					let arr = strs[1].split("&"); // 获取code
					uni.setStorageSync('payWxCode', arr[0].trim())
				}
				// console.log(uni.getStorageSync('payWxCode'),'payWxCode3');
				return uni.getStorageSync('payWxCode')
},

调用接口,用code换取openid

getCodeFun() {
				this.$http.post('/api/User/wechatLogin', {
					code: uni.getStorageSync('payWxCode')
				}).then(res => {
					// console.log(res, 'payWxCode');
					if (res.code == 1) {
						uni.setStorageSync('zhiShiToken', res.data.userinfo.token);
					}
				})
			},

在需要的页面进行微信支付

gopay() {
				let that = this
				let data = {
					paytype: 1,
					mid: 1
				}
				that.$http.post("/api/Pay/createorder", data).then(res => {
					if (res.code == 1) {
						WeixinJSBridge.invoke('getBrandWCPayRequest', {
							"appId": res.data.appId, //公众号名称,由商户传入
							"timeStamp": res.data.timeStamp, //时间戳
							"nonceStr": res.data.nonceStr, //随机串
							"package": res.data.package, //扩展包
							"signType": res.data.signType, //微信签名方式:MD5
							"paySign": res.data.paySign //微信签名
						}, function(respay) {
							if (respay.err_msg === "get_brand_wcpay_request:ok") {
								uni.showToast({
									title: '支付成功',
									icon: 'success',
									duration: 2000
								}); //定时器
								setTimeout(function() {
									uni.navigateBack()
								}, 2000);
							} 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
							})
						})
					}
				})
			}

  • 7
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值