微信小程序支付(uni-app)

胡国兴
2023-12-01

以下4个步骤对应最下面“详细代码”的4个方法

第一步 :

先通过uni.login获取code

(如果是微信原生的小程序开发,应该是wx.login)

第二步:

将code传给后台接口,获取openid

第三步:

将openid传给后台接口,获取微信支付所需参数

最后:

通过uni.requestPayment这个api发起微信支付

(如果是微信原生的小程序开发,应该是wx.requestPayment)

详细代码如下

			//获取code
			getCode() {
				uni.login({
					provider: 'weixin',
					success: (res) => {
						if (res.code) { //微信登录成功 已拿到code	
							this.getOpenId(res)
						} else {
							console.log('登录失败!' + res.errMsg)
						}
					},
					fail: () => {

					}
				});
			},
			//获取openId
			getOpenId(res) {
				this.$http({ //请求后台接口获取openId
					url: '/api/grouppurchase/isAuth', //请以你的后端接口为准
					noToken: true,
					data: {
						code: res.code,
					},
				}).then(res => {
					if (res.code == 0) {
						uni.setStorageSync('openid', res.data.openid)
					} else {
						this.hasLogin = false
					}

				}).catch(() => {
					this.hasLogin = false
				})
			},
			//点击支付按钮
			//将openId传给后台接口,获取微信支付所需参数
			getPayParams() {
				let openId = uni.getStorageSync('openid')
				this.$http({
					url: '/api/order/createPayData',
					method: 'POST',
					data: {
						orderId: this.orderId,
						"client": "WX_MINI",
						"openId": openId,
						"payType": 2,
					}
				}).then(res => {
					if (res.code == 0) {
						this.wxpay(JSON.parse(res.data))
					} else {
						uni.showToast({
							title: res.msg,
							icon: "none"
						});
					}
				}).catch(res => {
					this.btnDisabled = false
				})
			},
			//调用支付api,发起支付
			wxpay(params) {
				uni.requestPayment({
					provider: 'wxpay',
					timeStamp: params.timeStamp,
					nonceStr: params.nonceStr,
					package: params.package,
					signType: params.signType,
					paySign: params.paySign,
					success: (res) => {
						uni.showToast({
							title: '支付成功'
						})

					},
					fail: (err) => {
						this.getSubscribe('0')
					},
					complete: (err) => {
						//this.getOrderStatus()
						this.btnDisabled = false
					}
				});
			},

 类似资料: