微信公众号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支付需 ...
随机推荐
- WPF将数据库和GridView绑定并更改GridView模板
首先来看一下如何使用GridView,在前台的话代码如下:这里仅仅举出一个例子,GridView是作为子项嵌套在ListView中的,这里的数据源是通过绑定的方式来绑定到GridView中的. < ...
- HTML5 & how to download SVG in js
HTML5 & how to download SVG in js how to download SVG in js http://dinbror.dk/blog/how-to-downlo ...
- python自然语言处理函数库nltk从入门到精通
1. 关于Python安装的补充 若在ubuntu系统中同时安装了Python2和python3,则输入python或python2命令打开python2.x版本的控制台:输入python3命令打开p ...
- 二本毕业,我是如何逆袭成为BAT年薪40W的Java工程师的?
身边的师弟师妹经常问到:非计算机专业出身,你是在2年内如何逆袭成BAT年薪40W的资深开发工程师的.其实很简单——努力! 我16年毕业于普通的二本学校,非计算机专业出身,只因为对软件开发感兴趣,所以找 ...
- Bootstrap辅助类
前面的话 Bootstrap提供了一组工具类,用于辅助项目的开发.本文将详细介绍Bootstrap辅助类 文本色 通过颜色来展示意图,Bootstrap 提供了一组工具类.这些类可以应用于链接,并且在 ...
- maven 引用另一个jar包 需要先打包在仓库里面 并在pom里面配置 才可以引用
maven 引用另一个jar包 需要先打包在仓库里面 并在pom里面配置 才可以引用
- BZOJ3569 DZY Loves Chinese II(随机化+树上差分+线性基)
上一题的强制在线版.对图跑出一个dfs树,给非树边赋上随机权值,树边的权值为覆盖他的非树边权值的异或.这样如果某条树边和覆盖他的非树边都被割掉(即图不连通),他们的异或值就为0.每次对询问看有没有子集 ...
- C# == 和 Equals
先看一下解释 msdn对于 == 的解释: 对于预定义的值类型,如果操作数的值相等,则相等运算符 (==) 返回 true,否则返回 false. 对于 string 以外的引用类型,如果两个操作数引 ...
- ef 仓储模式
构建一个仓储模式. Model 大家自己创建就行了,上个图,就不多说了(我是code first) IDAL namespace IDAL { public interface IBaseReposi ...
- MessageBox函数第一个参数hwnd的作用
MessageBox 函数用于创建.显示并操作一个消息对话框.该对话框包含由调用程序定义的信息和标题,以及预先定义的图标和按钮. 这个方法的第一个参数hWnd,代表消息框拥有的窗口.这个参数到底有什么 ...