微信公众号JSAPI支付-多公众号向同一商户号支付的问题解决
一、背景
项目提供公众号商城集成,在公众号里进行商品的购买,并与多家公众号合作增加渠道流量。
。
二、实现
有关微信公众号、商户号的开通与支付绑定不细说
从背景里可知,我们需要实现多个公众号购买向同一个公众号付钱的功能,微信api地址: https://pay.weixin.qq.com/wiki/doc/api/index.html
看api中的业务流程实现起来也是比较简单,商户下订单--微信下预支付订单--商户拉起JSAPI微信支付--微信支付回调商户进行后处理。
但是由于我们使用的是JSAPI支付,在JSAPI下预支付订单的时候有点很容易忽视,那就是openid参数。

其他支付方式(二维码、付款码等)都不需要传openid,只有JSAPI支付的时候必须传openid,而且这个openid是微信用户在商户号下的openid,
在我这个场景中,是多个公众号向一个商户号支付,所以openid是对应商户号的,商城所在公众号的openid是不成功的。
通过看api知道微信提供获取对应公众号的openId的接口:https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=4_4
那接下去我们首先要做的事情就是先获得 微信用户在商户号的openid。又翻阅了许多前辈们的资料,https://blog.csdn.net/yusewuhen/article/details/51774010,,https://blog.csdn.net/abcde474524573/article/details/53123641
都是把 获得的openId存储在cookie里回传页面,其中都用了resbonse.sendRedirect(微信授权URL),这种只有action请求的方式能用,我们用的h5所以都是使用的ajax方式,而ajax不支持sendRedirect,这如何解决呢?
后来又查了很多资料发现ajax不能直接使用sendRedirect,但是可以把微信授权url返回再用window.location.href去实现重定向。
后台服务

前台调用

因为微信授权url中有一个redirect_uri是获取授权code后回调我们服务的地址,所以在回调地址里再重定向到商城页面即可

三、总结
所以我们的解决办法是在加载商城的时候先获取用户对应商户号的openId存储在store中,在下订单时从store中拿这个openId进行下单。
不管是微信支付还是支付宝,总有复杂的支付场景存在,但是复杂的场景都有技术手段去实现,实在是实现不了的就联系官方共同研讨解决方案。
微信公众号JSAPI支付-多公众号向同一商户号支付的问题解决的更多相关文章
- 微信App支付:微信支付的appid,appsecret,商户号mch_id,微信交易支付密钥(mch_key)在哪里查看
1-1) 查看微信支付 appid 的方法 微信支付使用的 appid, 是微信服务号的 appid, 需要你登录微信服务号后台, 在 开发-基本配置/开发者ID(AppID) 中查看微信支付 app ...
- java微信公众号JSAPI支付以及所遇到的坑
上周做了个支付宝微信扫码支付,今天总结一下.微信相比支付宝要麻烦许多 由于涉及到代理商,没办法,让我写个详细的申请流程,懵逼啊. 笔记地址 http://note.youdao.com/notesha ...
- 【微信支付】公众号 JSAPI支付 HTML5(使用MUI前端框架)+WebApi 实现流程
必要参数: 1) AppID,AppSecret : 在微信公众号后台管理—>(菜单栏)开发 —> 基本设置 2)商户号 :在微信公众号后台管理—>(菜单栏)微信支 ...
- 亲历H5移动端游戏微信支付接入及那些坑(三)——支付接入
终于到接入支付了,小小的一个微信支付,居然也写了3篇,好长,好累. 接入环境 对接入环境,前端的话,应该是以js为主吧,也有可能是,PHP,Java,C++,或者C#都可以.为什么在此特意提一下接入环 ...
- 小程序webview涉及的支付能力、选用绑定多商户支付
小程序webview涉及的支付能力.选用绑定多商户支付 webview承接页面涉及的支付能力: 仅支持小程序本身支付能力,不支持承接页面内的原支付功能(譬如,webview中嵌入了h5官方商城,经过配 ...
- PHP微信公众号JSAPI网页支付(下)
上一篇PHP微信公众号JSAPI网页支付(上)中讲到了公众号平台的相关设置以及支付的大致流程. 这一篇重点讲支付后,异步接受回调通知,以及处理后同步通知微信服务器. 首先梳理下整个jsapi支付的流程 ...
- PHP微信公众号JSAPI网页支付(上)
一.使用场景以及说明 使用场景:商户已有H5商城网站,用户通过消息或扫描二维码在微信内打开网页时,可以调用微信支付完成下单购买的流程. 说明:1.用户打开图文消息或者扫描二维码,在微信内置浏览器打开网 ...
- 微信公众号JSAPI支付
微信公众号JSAPI支付 一:配置参数 申请成功后,获取接口文件, 将所有文件放入项目根目录weixin下,在WxPay.ub.config.php中填入配置账户信息; 二:设置授权 开发者中心-&g ...
- PHP应用如何对接微信公众号JSAPI支付
微信支付的产品有很多,1. JSAPI支付 2. APP支付 3. Native支付 4.付款码支付 5. H5支付. 其中基于微信公众号开发的应用选择“JSAPI支付“产品,其他APP支付需 ...
随机推荐
- Chrome disable cache & clear memory cache
Chrome disable cache & clear memory cache disable cache
- 从网上整理的一些delphi字符串加密解密方法
function Encode(Str: string): string; var //加密 TmpChr: AnsiChar; i, Len: integer; begin Result := St ...
- 一本通1619【例 1】Prime Distance
1619: [例 1]Prime Distance 题目描述 原题来自:Waterloo local,题面详见 POJ 2689 给定两个整数 L,R,求闭区间 [L,R] 中相邻两个质数差值最小的数 ...
- [代码]--C#action和func的使用
以前我都是通过定义一个delegate来写委托的,但是最近看一些外国人写的源码都是用action和func方式来写,当时感觉对这很陌生所以看起源码也觉得陌生,所以我就花费时间来学习下这两种方式,然后发 ...
- BZOJ4569 SCOI2016萌萌哒(倍增+并查集)
一个显然的暴力是用并查集记录哪些位之间是相等的.但是这样需要连nm条边,而实际上至多只有n条边是有用的,冗余过多. 于是考虑优化.使用类似st表的东西,f[i][j]表示i~i+2^j-1与f[i][ ...
- java项目http变更https
1. 创建 keystore 文件 执行keytool -genkey -v -alias tomcat -keyalg RSA -validity 3650 -keystore c:\tomc ...
- 【POJ 2251】Dungeon Master(bfs)
BUPT2017 wintertraining(16) #5 B POJ - 2251 题意 3维的地图,求从S到E的最短路径长度 题解 bfs 代码 #include <cstdio> ...
- 洛谷P3085 [USACO13OPEN]阴和阳Yin and Yang(点分治,树上差分)
洛谷题目传送门 闲话 偶然翻到一道没有题解的淀粉质,想证明一下自己是真的弱 然而ZSYC(字符串组合)早就切了 然后证明成功了,WA到怀疑人生,只好借着ZSY的代码拍,拍了几万组就出来了... 思路 ...
- Python解惑:整数比较
在 Python 中一切都是对象,毫无例外整数也是对象,对象之间比较是否相等可以用==,也可以用is.==和is操作的区别是: is比较的是两个对象的id值是否相等,也就是比较俩对象是否为同一个实例对 ...
- jar的打包与共享
做成jar包的,有个弊处,打包apk时会暴露源码,当然也有解决方案,放在最后讲. 先来解释如何生成jar: 新建工程,将工程编译至无错,右键工程Export... 在弹出的提示框中选择Java文件夹下 ...