zoukankan      html  css  js  c++  java
  • 微信小程序支付接入实战

    1. 微信小程序支付接入实战

    1.1. 需求

      最近接到一个小程序微信支付的需求,需要我写后台支持,本着能不自己写就不自己写的cv原则,在网上找到了些第三方程序,经过尝试后,最后决定了这不要脸作者的这款

    1.2. 使用第三方sdk

    https://github.com/Pay-Group/best-pay-sdk

    不要脸的作者,自称最好用的sdk,demo地址:

    https://github.com/Pay-Group/best-pay-demo

    1.3. 项目改造

    1. 通过查看该项目的readme,我们可以知道,这个项目表面上只支持微信公众号支付和h5支付,我下载demo体验了一下,发现封装的还是可以的。
    2. 通过查看微信支付官网 https://pay.weixin.qq.com/wiki/doc/api/wxa/wxa_api.php?chapter=7_4&index=3 ,我们知道小程序的支付流程,在后台执行过程上和上面两个都是类似的,只要小小的改动就可以支持小程序支付了
      小程序流程图
    3. 在demo中controller类实现了统一下单API,和回调支付结果API,小程序唯一的区别就是统一下单API直接由小程序调用返回预付单信息,再由小程序去调用

    1.4. 修改后代码

    /**
     * 发起支付
     */
    @GetMapping(value = "/pay")
    @ResponseBody
    public PayResponse pay(@RequestParam("openid") String openid,
                           @RequestParam("amount") Double amount,
                           Map<String, Object> map) {
        PayRequest request = new PayRequest();
        Random random = new Random();
    
        //支付请求参数
        request.setPayTypeEnum(BestPayTypeEnum.WXPAY_H5);
        request.setOrderId(String.valueOf(random.nextInt(1000000000)));
        request.setOrderAmount(amount);
        request.setOrderName("xxx费");
        request.setOpenid(openid);
        log.info("【发起支付】request={}", JsonUtil.toJson(request));
    
        PayResponse payResponse = bestPayService.pay(request);
        log.info("【发起支付】response={}", JsonUtil.toJson(payResponse));
        return payResponse;
    }
    
    1. 这里返回的信息都是签过名可以由微信小程序直接调用的,可以看到改动真的很小,只是把跳转网页改成了返回json数据
    2. 接下来就是微信小程序的事了,直接参考官网的就行
  • 相关阅读:
    java-日期转换
    java-Timestamp
    java-判断年份是不是闰年
    Java中Date与String的相互转换
    ORA-01830
    js数组合并
    js清空子节点
    私钥密码
    图片基本样式
    XMLHttpRequest: 网络错误 0x2ee4, 由于出现错误 00002ee4 而导致此项操作无法完成
  • 原文地址:https://www.cnblogs.com/sky-chen/p/10332731.html
Copyright © 2011-2022 走看看