当前位置: 首页 > news >正文

微信支付开发避坑指南

1 微信支付的坑

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

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

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

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

1.3 二次签名

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

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

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

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

支付宝是元。

1.6 做避免重复消费的处理

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

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

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

1.7 支付结果验签

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

// 处理内部业务逻辑
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下单都可以调用。

关注我,紧跟本系列专栏文章,咱们下篇再续!

作者简介:魔都架构师,多家大厂后端一线研发经验,在分布式系统设计、数据平台架构和AI应用开发等领域都有丰富实践经验。

各大技术社区头部专家博主。具有丰富的引领团队经验,深厚业务架构和解决方案的积累。

负责:

  • 中央/分销预订系统性能优化

  • 活动&券等营销中台建设

  • 交易平台及数据中台等架构和开发设计

  • 车联网核心平台-物联网连接平台、大数据平台架构设计及优化

  • LLM Agent应用开发

  • 区块链应用开发

  • 大数据开发挖掘经验

  • 推荐系统项目

    目前主攻市级软件项目设计、构建服务全社会的应用系统。

参考:

  • 编程严选网

    本文由博客一文多发平台 OpenWrite 发布!

http://www.lryc.cn/news/433992.html

相关文章:

  • Qt5.4.1连接odbc驱动操作达梦数据库
  • 计算机组成原理(第一课)
  • 计算机网络练级第一级————认识网络
  • Java基于微信小程序的家庭财务管理系统,附源码
  • P2343 宝石管理系统
  • Spring6梳理6——依赖注入之Setter和构造器注入
  • 【C++】C++入门基础,详细介绍命名空间,缺省参数,函数重载,引用,内联函数等
  • Android使用Room后无法找到字符BR
  • 网络通讯安全基础知识(加密+解密+验签+证书)
  • [数据集][目标检测]石油泄漏检测数据集VOC+YOLO格式6633张1类别
  • 【Oracle篇】全面理解优化器和SQL语句的解析步骤(含执行计划的详细分析和四种查看方式)(第二篇,总共七篇)
  • 都2024年了还不明白Redis持久化?RDB文件、AOF文件、AOF重写
  • 浅谈Unity协程的工作机制
  • 数学建模_数据预处理流程(全)
  • 深入解析Flink SQL:基本概念与高级应用
  • 计算机的发展史和基本结构
  • VSTO常见的异常
  • 【H2O2|全栈】关于HTML(3)HTML基础(二)
  • 前端AST
  • 基于EPS32C3电脑远程开机模块设计
  • 深度解析 Netty 性能卓越的背后原因
  • 虚幻引擎(Unreal Engine)技术使得《黑神话悟空传》大火,现在重视C++的开始吃香了,JAVA,Go,Unity都不能和C++相媲美!
  • 华为-2022-测试面试题
  • Linux-(系统启动、用户管理)
  • 机器学习:opencv--图像形态学
  • 网络基础入门指南(一)
  • 【项目】云备份
  • WebGL系列教程二(环境搭建及初始化Shader)
  • keepalive和nginx高可用集群
  • 二分查找题总结