随笔集:微信小程序的微信支付

微信小程序的微信支付

简单来说一下微信支付的开发流程:

在这里插入图片描述
大概来说就是两步:

1.客户端请求后端生成订单,后端生成商户订单后调用统一下单API,微信方会生成一个预付单,并返回预付单信息(prepay_id),后端接收到后生成JSAPI页面调用的支付参数并签名,后传给客户端(prepay_id、paySign等)
2.客户端调用api使用返回过来的参数主动调起支付,微信方检查参数合法性,返回验证结果给客户端并要求支付授权,授权后输入密码,微信方验证成功后将结果异步发送给后端,后端在接收到微信方的结果后发送通知给微信方,微信方最后把结果发给客户端

下面是我在小程序里面的一个支付代码片段

		pay(){
				var _this = this
				let params={
					addressId: _this.addressInfo.id,
					appointmentTime: _this.serviceTime,
					couponId: '',
					num: _this.serviceInfo.serviceNum,
					remarks: _this.remark,
					serviceParameterId: _this.serviceInfo.serviceParamId
				}
				console.log(params,'params');
				this.$api.addOrder(params).then(res=>{//生成订单
					console.log(res.data.data)
					// uni.hideLoading()
					var param={
						orderId: res.data.data.orderId,
						orderNum: res.data.data.orderNum,
						openId: this.openId,
					}
					this.$api.orderPay(param).then(re=>{ //获取调起支付所需参数
						uni.requestPayment({     //调起支付
							provider: 'wxpay',
							timeStamp: re.data.data.timeStamp,
							nonceStr: re.data.data.nonceStr,
							package: re.data.data.package,
							signType: 'MD5',
							paySign: re.data.data.paySign,
							success: function (ress) {
								uni.hideLoading()
								_this.getOrderRemark('')
								console.log('success:' + JSON.stringify(ress));
								uni.showToast({
									title: '支付成功',
									icon: 'success',
									duration: 2000
								});	
								uni.redirectTo({
									url: `/pages/orderPay/paySuccess?serviceTime=${_this.serviceTime}&serviceId=${_this.serviceInfo.id}`
								});
							},
							fail: function (err) {
								uni.hideLoading()
								uni.showToast({
									title: '支付失败',
									icon: 'none',
									duration: 2000
								});	
								console.log('fail:' + JSON.stringify(err));
								setTimeout(function(){
									uni.redirectTo({
										url: `/pages/orderPay/payError?serviceTime=${_this.serviceTime}&serviceId=${_this.serviceInfo.id}`
									})
								},1000)
							}
						})
					}).catch(er => {
						uni.hideLoading();
						uni.showToast({
							title: '支付失败',
							icon: 'none',
							duration: 2000
						});
						uni.redirectTo({
							url: `/pages/orderPay/payError?serviceTime=${_this.serviceTime}&serviceId=${_this.serviceInfo.id}`
						});
					})
					
					
				}).catch(err => {
					uni.hideLoading();
				})
			},

H5微信支付文档

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值