前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >微信支付开发避坑指南

微信支付开发避坑指南

原创
作者头像
JavaEdge
发布2024-09-09 22:06:56
970
发布2024-09-09 22:06:56
举报
文章被收录于专栏:Java

1 微信支付的坑

1.1 不能用前端传递过来的金额

订单的商品金额要从数据库获取,前端只传商品 id。

1.2 交易类型trade type字段不要传错

v2版API,不同交易类型,要调用的支付方式也不同。

1.3 二次签名

下单时,在拿到预支付交易会话标识时,要进行二次签名操作。二次签名后的值,才能返回给前端使用。

1.4 小程序可绑定到其它公司的商户下

可同时关联到多个商户号:

1.5 微信支付的单位是分,最小金额是0.01元

支付宝是元。

1.6 做避免重复消费的处理

处理成功之后不要再进行二次处理了,那首先是有事务操作。

第一次处理成功后,需要更新对应订单的状态。更新完成后,下次再处理时,直接返回成功,不再进行实际业务处理。

也可以拿这个订单号加分布式锁,保证对同一个用户,同时只能处理一个订单。

1.7 支付结果验签

对支付结果通知,一定要拿配置的私钥进行验签处理。

代码语言:java
复制
// 处理内部业务逻辑
try {
    // 支付结果验签
    boolean valid = WXPayUtil.isSignatureValid(map1, weixinpaypartner);
    if (valid == false) {
        log.info("签名不一致" + outTradeNo);
        return "ERROR";
    } else {
        //1、更新订单状态
        dealAfterSuccess(basOrder, time_end, transaction_id, result_code);
        log.info("验签成功" + outTradeNo);
        result = CommUtils.setXml("SUCCESS", "OK");
        log.info("收到异步通知返回微信的内容--" + result);
        return result;
    }
} catch (Exception e) {
    e.printStackTrace();
    return "ERROR";
}

不验签也可以继续执行,但支付结果页容易被伪造哦!

1.8 对支付结果通知处理逻辑中的非事务性操作做操作记录

可能在支付通知后,通过小程序给用户发送模板消息通知或公众号消息通知触达。若这时事务处理失败,但结果发送成功了,会造成啥结果?那你下次是否要重新处理这个订单流程,在重新处理订单时难道再发一次推送吗?肯定不可以。

所以最好拿订单号作为标识,判断记录这个订单是否已经有过啥事务性、非事务性操作,下次或者是订单补偿时,就只处理事务性操作,不再处理非事务性操作。

1.9 v2的统一下单的接口

服务号、H5下单和小程序下单都可调用,甚至app下单都可以调用。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1 微信支付的坑
    • 1.1 不能用前端传递过来的金额
      • 1.2 交易类型trade type字段不要传错
        • 1.3 二次签名
          • 1.4 小程序可绑定到其它公司的商户下
            • 1.5 微信支付的单位是分,最小金额是0.01元
              • 1.6 做避免重复消费的处理
                • 1.7 支付结果验签
                  • 1.8 对支付结果通知处理逻辑中的非事务性操作做操作记录
                    • 1.9 v2的统一下单的接口
                    相关产品与服务
                    云开发 CloudBase
                    云开发(Tencent CloudBase,TCB)是腾讯云提供的云原生一体化开发环境和工具平台,为200万+企业和开发者提供高可用、自动弹性扩缩的后端云服务,可用于云端一体化开发多种端应用(小程序、公众号、Web 应用等),避免了应用开发过程中繁琐的服务器搭建及运维,开发者可以专注于业务逻辑的实现,开发门槛更低,效率更高。
                    领券
                    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档