聚合支付之一个二维码同时支持微信和支付宝

首先这个二维码并不是直接将微信和支付宝的二维码合并,而是一个假的二维码,下面说一下思路。
1.页面加载时服务器生成一个供用户扫描的二维码。内容类似 https://pay.wps.cn/api/pay/qrcodepay?order_id=20181109f75bac7c, 后台主要是生成一个预订单。
在这里插入图片描述
2.用户扫描提供的二维码,服务器通过请求ua判定扫描客户端类型分别向微信(MicroMessenger)或支付宝(AlipayClient)提供订单,同时展示二维码的页面轮询向后台查询订单状态供支付完成后页面后期处理准备。
3.服务器端进行处理,如果是通过微信扫描的,通过公众号支付方式提交订单返回拉起支付的信息,微信内嵌浏览器收到信息,调起公众号支付窗口,完成支付;如果是通过支付宝扫描的,通过支付宝移动端支付方式提交订单返回对应form信息,渲染到支付宝浏览器上,调起支付。
4.向微信和支付宝提交订单时会加上回调地址,这样支付完成后,第三方可以通过回调提醒服务器完成"发货"操作。

相关demo之后有时间整理一下再分享。
https://github.com/yulele166/qr_pay.git

### 实现微信支付宝小程序二维码聚合的方法 #### 解析现有方法 对于微信支付宝的小程序二维码聚合,一种可行的办法是在两者均采用关联普通链接二维码的方式。通过这种方式,可以确保同一链接生成的二维码能够在不同平台间正常工作[^2]。 具体来说,在地址设置时需要注意细节,比如在微信小程序控制台中的开发>开发设置部分,需特别关注路径结尾处斜杠的存在与否。这一步骤至关重要,因为不正确的路径格式可能会导致跳转失败。当一切准备就绪后,可以通过特定模式下的URL(如`xxx.com/xxx/*`),其中星号位置可被替换为具体的请求名称,例如`test.do`,用于触发服务器端逻辑处理并最终重定向至目标页面——即由另一方(如支付宝)解析出的目标URL[^1]。 #### 技术实现要点 为了使上述流程顺利运作,还需要考虑如下几个方面: - **域名一致性**:保证微信支付宝所使用的域名一致是非常重要的前提条件之一。 - **后台接口设计**:需要构建一个中间层服务来接收来自扫描二维码后的HTTP请求,并依据请求源判断应转向哪个应用的小程序入口。此过程可能涉及到跨域资源共享(CORS)政策调整以及安全验证机制的设计。 ```java // Java Servlet 示例代码片段展示如何根据不同参数决定转发目的地 protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String sourceApp = request.getParameter("source"); // 假设传递了一个表示来源app的参数 if ("wechat".equals(sourceApp)) { // 转向微信小程序对应的URL response.sendRedirect(WECHAT_MINI_PROGRAM_URL); } else if ("alipay".equals(sourceApp)) { // 或者是支付宝小程序的URL response.sendRedirect(ALIPAY_MINI_PROGRAM_URL); } } ``` 此外,值得注意的是,支付宝小程序必须已经正式上线才能够配置与其相关的普通链接规则,这对于前期测试阶段会带来一定的不便之处。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值