微信支付功能

调起微信支付

在之前完成的微信小程序中,微信支付功能用得比较多,做个笔记记录一下
微信支付可以通过前端拼接,也可以通过后端拼接,调取提交订单接口,获取对应参数

前端拼接, V2方式

微信支付所需要的的参数,先调统一下单接口获取参数

  1. appid , 微信开放平台申请的账号对应的appid也是小程序的appid

  2. timeStamp,时间(时间戳格式)

  3. package,支付ID(拼接格式'prepay_id=' + prepay_id,后面的为支付ID)

  4. signType,签名的加密方式(建议使用md5)

  5. nonceStr,随机数

  6. paySign,签名,(这个是最重要的)拼接方式

    let stringSignTemp = 'appId=' + myappid + '&nonceStr=' + myRanDomeStr + '&package=' + myprepay_id + '&signType=MD5&timeStamp=' + myTtate_Str + '&key=Ksv7jqvK3K7rB4mvOwWiqKwMuaaiSY66' let paySign = md5(stringSignTemp).toUpperCase()
    你注意到了没有,所有参数的属性名都是小写开头,这个一定要注意,不然你在调起支付的时候,会提示paySign字段错误。

    前端拼接源码

    WeiXinPay(appid, nonce_str, prepay_id, sign, order_sn) { //下单支付
    				this.getonav=1
    				let myappid = appid //openid
    				let myTtate_Str = String(Date.now()) //当前时间戳
    				let myRanDomeStr = this.randomString() //随机数
    				let myprepay_id = 'prepay_id=' + prepay_id //支付id
    				let stringSignTemp = 'appId=' + myappid + '&nonceStr=' + myRanDomeStr + '&package=' +
    					myprepay_id + '&signType=MD5&timeStamp=' + myTtate_Str + '&key=Ksv7jqvK3K7rB4mvOwWiqKwMuaaiSY66'
    				let paySign = md5(stringSignTemp).toUpperCase()
    				uni.requestPayment({
    					provider: 'wxpay',
    					timeStamp: myTtate_Str,
    					nonceStr: myRanDomeStr,
    					package: myprepay_id,
    					signType: 'MD5',
    					paySign: paySign,
    					success: function(res) {
    						console.log("成功")
    						console.log('success:' + JSON.stringify(res));
    						uni.redirectTo({
    							url: `/Tosubpages/pages/TheOrderDetails/TheOrderDetails?order_sn=${order_sn}&Order_static=2&getonav=1`
    						});
    					},
    					fail: function(err) {
    						console.error("失败")
    					}
    				});
    			},
    
后端返回, V3方式

这个对前端比较友好,只需要调取接口获取参数就好了

源码

WxAlipay(order_id, order_sn) {
				let that = this
				wxpay(order_id).then(res => {
					if (res.data.code == 0) {
						let OrderReference = order_sn //订单编号
						let OrderTime = that.formatDate(new Date(res.data.data.timeStamp*1000)) //下单时间
						uni.requestPayment({
							provider: 'wxpay',
							timeStamp: res.data.data.timeStamp, //时间
							nonceStr: res.data.data.nonceStr, //随机数
							package: res.data.data.package, //支付ID
							signType: res.data.data.signType, //加密方式
							paySign: res.data.data.paySign, //签名
							success: function(res) {
								console.log("成功")
								console.log('success:' + JSON.stringify(res));
								uni.redirectTo({
									url: `/Tosubpages/pages/PaymentSuccess?&OrderReference=${OrderReference}&OrderTime=${OrderTime}`
								});
							},
							fail: function(err) {
								uni.redirectTo({
									url: `/Tosubpages/pages/OrderDetails?&ordertype=0&order_id=${order_id}`
								});
							}
						});
					}
				}).catch(Error => {
					console.error(Error)
				})
			},

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值