聚合支付二维码如何实现自动识别扫码客户端跳转相应支付页面

前言

前面有一篇《聚 合 支 付之流程概述》和大家聊了一下关于聚 合 支 付的一个简单流程。很多小伙伴私信我,如何实现聚 合 支 付 码的自动跳转呢?

其实,刚开始接触的时候我也很迷茫,一个静态的二维码,如何去判断他是微信、支付宝、翼支付、云闪付亦或是其他银行的app扫码的动作?怎们进行页面的跳转就成了一个难题!!!

要实现的效果

先说说,要想实现的具体功能是如何的?

1、在我们预先生成的批量二维码,在没有绑定具体商户的情况下,扫描这个二维码,跳转到响应的宣传页面。

2、当我们预先生成的二维码绑定了具体商户的情况下,微信扫描二维码跳转到微信收银台页面,支付宝扫描二维码跳转支付宝收银台页面。其他的各款app如果做了相应的开发的,一样的逻辑,跳转相应的收银台支付页面。

3、当我们的没有对接过的app来扫码,则给他一个提示页面,告诉他请用我们对结果的,诸如微信、支付宝、翼支付、云闪付来扫一扫。

实现的过程逻辑

首先,我先告诉大家一个明确的结果,就是二维码的内容,其实很好理解,就是我们的请求接口域名+我们的二维码内容,如:"https://qr.xxx.abcpay.com/19090400655255256993"这么一个链接。

那么会有同学问了,这么一个链接如何实现跳转呢?

我来说一下我的思路,我们可以理解上面这个链接就是一个接口地址,19090400655255256993为此二维码的唯一标识,这个唯一标识可以理解为钱6位为当前日期,中间10位按照自己的规则,最后4位则为生成的顺序号。

根据唯一标识,查看是否绑定了商户,没有绑定商户则返回宣传页。

微信侧可以返回小程序的具体页面(或者也可以是固定的宣传页面),其他的客户端也可以跳转固定宣传页面。

当绑定了商户之后,则返回相对应的收银台,这里会给大家贴出代码!

实现代码

应该很简单,也很容易理解,就是判断u s e r A g e n t是ALIPAYCLIENT还是MICROMESSENGER 就可以了。

ALIPAYCLIENT:支 付 宝 支 付

MICROMESSENGER:微 信 支 付
 

前端页面的实现

前端扫描二维码显示了其对应的支付渠道,html的页面代码如下

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>支付方式的判断</title>
  <meta name="viewport" content="width=device-width; initial-scale=1.0">
</head>
<body>
<div id="pay-id" style="margin-top: 100px;
  font-weight: bold;
  text-align: center;
font-size: 20px;">
</div>
</body>
<script type="text/javascript" >
  function payType() {
    var userAgent = window.navigator.userAgent.toUpperCase();
    if (userAgent.indexOf('ALIPAYCLIENT') > 0) {
      return '支付宝支付';
    }
    if (userAgent.indexOf('MICROMESSENGER') > 0) {
      return '微信支付';
    }
    
    return '不明支付方式';
  }
  var info = payType();
  var div = document.getElementById("pay-id");
  div.innerHTML = info;
</script>
</html>

后端代码实现

java后端代码的其实原理是和前端一致的,也就是判断 u s e r A g e n t 是ALIPAYCLIENT还是MICROMESSENGER。

@RestController
public class InfoController {
    
    @RequestMapping("{id}")
    public String getPayType(@PathVariable("id") Long id,HttpServletRequest request) throws Exception {
        // TODO 具体的 业务逻辑这里省略。只保留了判断是微信还是支付宝的判断
        String userAgent = request.getHeader("User-Agent").toUpperCase();
        String payType = null;
        if (userAgent.indexOf("MICROMESSENGER") > 0) {
            payType = "微信支付";
        } else if (userAgent.indexOf("ALIPAYCLIENT") > 0) {
            payType = "支付宝支付";
        }
 
        //TODO 根据 payType 的支付方式生成相应支付订单
 
 
        return null;
    }
}

好了,今天关于聚 合 支 付二维码如何实现自动识别扫码客户端跳转相应支付页面就到这里。

欢迎大家点击下方卡片,关注《coder练习生》

有需要聚合支付源码,公众号私信。非诚勿扰

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ybb_ymm

你的鼓励会是对我最大的支持

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值