微信小程序支付开发及问题

一.前期准备

微信后台申请微信支付:微信支付-商务号关联(个人信息 填写,操作密码)-》api密钥设置

得到appid AppSecret  商户号  api密钥等

微信支付接口签名校验工具

二大概流程

1)登录,获取code(一个code只能用一次)
2)通过code获取openid(通过请求服务器,由服务器请求微信获取并返回小程序)。微信登录+获取openid接口

wx.login({
	success: function(res) {
		if (res.code) {
			let params={
				code:res.code,
			}
			Api.getWxUserInfo(params).then(res => {
				if(res.success==true){
					let userOpen={
						openId:res.data.openId,
						userId:res.data.userId
					}
					wx.setStorageSync('userOpenInfo',userOpen);
				}
			});
		}else {
			wx.showToast({
				title: '获取用户登录失败请重新关注',
				icon: 'none',
				duration: 5000
			});
		}
	}
});
注意这边openid 是后端加密后的,

3)前端把openid,订单数据(支付金额等)的传给服务端
4)服务端根据请求订单数据、生成第三方订单号,调用微信的统一下单接口 、第一次签名、第一次签名成功后返回再一次签名,最后后端这些参数('timeStamp','nonceStr','package','signType','paySign')返回给前端,

5)前端发起支付(wx.requestPayment),并支付完成 
6)服务器收到回调

let payParams = {
	tempId:wx.getStorageSync('tempId'),
	totalMoney:mythis.data.totalMoney,//总金额
	openId:wx.getStorageSync('userOpenInfo').openId
}
Api.pay(payParams).then(datas => {

	if(datas.success == true){
		 console.log('获取参数', datas.data);
		let dataInfo = JSON.parse(datas.data);
		wx.requestPayment({
			'timeStamp': dataInfo.timeStamp,//时间戳,从 1970 年 1 月 1 日 00:00:00 至今的秒数,即当前的时间
			'nonceStr': dataInfo.nonceStr,//随机字符串,长度为32个字符以下
			'package':dataInfo.package,//统一下单接口返回的 prepay_id 参数值,提交格式如:prepay_id=***
			'signType': dataInfo.signType,//MD5	签名算法
			'paySign': dataInfo.sign,//签名
			'success': function (data) {
				console.log('成功',data)
			},
			'fail': function (data) {
				console.log('失败',data)
			}
		})
	}
}).catch((err) => {
				    console.log('异常',err)
				wx.hideLoading();
				wx.showToast({
					title: '数据支付有异常',
					icon: 'none',
					duration: 5000
				});
			});

注意服务端返回的数据要注意大小写 

二.遇到问题

1.微信支付遇到调用支付JSAPI缺少参数:total_fee(高效精准解决方法)

2. errMsg: "requestPayment:fail 支付验证签名失败"

这个是签名paySign 获取失败 有可能是后端返回的字段大小有关

3.小程序发起支付请求,在未到达支付商户时,将金额拆分两部分,分别到两个不同的商户号进行入账。

这样是不行的。分账必须走服务商

4.小程序可以绑定多个商户号,同时调起多个支付 (验证成功,都是同主题的)

比如:a按钮可以把钱支付给A商户号 b按钮可以把钱支付给B商户号

5.小程序主体市医院与商户号主体是企业,这个前提下,医院的小程序关联了企业的商户号支付能成功

6.小程序主体与商户号主体不一致可以绑定吗?如果不能有什么解决方案?

不可以绑定,但是可以用不同的主体收款,但是需要做联合运营,可以参考https://pay.weixin.qq.com/index.php/public/cms/content_detail?platformType=0&lang=zh&id=35001

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值