首页 > 其他分享 >微信支付开发避坑指南

微信支付开发避坑指南

时间:2024-09-09 22:26:56浏览次数:12  
标签:指南 事务性 处理 微信 避坑 订单 下单 支付

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 发布!

标签:指南,事务性,处理,微信,避坑,订单,下单,支付
From: https://www.cnblogs.com/JavaEdge/p/18405471

相关文章

  • 微信小程序开发系列5----页面配置--WXML列表渲染-wxkey详解
        下图本来选中Switch1更新后选中的是Switch5了  使用下图红色部分就能解决,id是data里定义的换name也可以,红色部分不能写item.Id 注:不给wx:key会给一个警告,给了性能会更高 源码获取方式(免费):(1)登录-注册:http://resources.kittytiger.cn/(2)签到获取积分(3)搜索......
  • 【干货】 计算机专业毕业设计选题攻略 100个高通过率计算机毕设题目推荐参考 教你如何
    注意:该项目只展示部分功能,如需了解,文末咨询即可。本文目录1、前言2、视频简介3、100个高通过率毕设选题参考4、更多推荐1、前言在毕业设计中,选题至关重要,一个好的题目不仅能提升项目完成的质量,还能在答辩时脱颖而出,增加高分通过的机会。然而,很多计算机专业的同......
  • 网络安全新挑战:通用人工智能(AGI)等级保护指南_人工智能等级保护
    通用人工智能(AGI)的发展现状及趋势随着2023年大语言模型应用的划时代突破,以ChatGPT为杰出代表的此类技术犹如一股洪流,彻底颠覆了人类与机器智能交互的疆界,引领通用人工智能(AGI)步入一个崭新的纪元。在此背景下,通用人工智能(AGI)以其颠覆性的创新力与无可估量的应用潜力,迅速......
  • 微信聊天记录导出教程
    微信作为现代人日常沟通的重要工具,承载了大量的信息和回忆。有时,我们可能需要将微信聊天记录导出,以便于保存、备份或分享。下面,就为大家详细介绍一种导出微信聊天记录的方法。通过下图软件,可以很方便的导出微信聊天记录。使用说明:1、将压缩文件解压到固定位置,不要随意移动......
  • 基于微信小程序与嵌入式系统的智能小车开发(详细流程)
    一、项目概述本项目旨在开发一款智能小车,结合微信小程序与嵌入式系统,提供实时图像处理与控制功能。用户可以通过微信小程序远程操控小车,并实时接收摄像头采集的图像。该项目解决了传统遥控小车在图像反馈和控制延迟方面的问题,提升了小车的智能化水平,适用于教育、科研和娱乐......
  • 国内AI 网站指南(一)
    本文汇总了我在日常工作生活中在浏览器收藏夹中收藏的国内AI网站。使用GPT帮助您高效工作,激发创意,了解AI前沿技术。1.快速生成代码片段编写代码时,如果有一个工具能够自动帮我们完成这部分工作,那该有多好呢?只需提供少量提示信息,它就能够为你生成完整的代码块,极大地提高了编码......
  • FastAPI 深度指南:使用依赖注入处理分页和过滤逻辑
    在FastAPI框架中,Depends是一个关键的功能,它允许开发者通过依赖注入来管理和重用代码。这在处理API的分页和过滤逻辑时尤其有用,因为它可以将这些逻辑抽象化,从而减少冗余代码并提高效率。通过Depends,我们可以定义一个函数,该函数负责获取和验证分页参数(如skip和limit)以及过滤参数(如基......
  • 避坑指南:Golang框架自动化测试中的常见问题与解决方案大全
    在使用Golang框架进行自动化测试的过程中,开发者常常会遇到各种各样的问题。为了帮助大家避免一些常见的坑,我整理了一份详细的避坑指南,希望能对大家的开发工作有所帮助。忽视测试用例的独立性在进行自动化测试时,很多人会犯的一个错误是让测试用例之间产生依赖。比如,测试用例A需......
  • 洛谷题单指南-常见优化技巧-P1886 滑动窗口 /【模板】单调队列
    原题链接:https://www.luogu.com.cn/problem/P1886题意解读:单调队列模版题。解题思路:采用双端队列维护单调的序列,单调队列三部曲:1、去头,当窗口内元素个数超过k,队头出队2、去尾,当要加入的元素会破坏单调性,队尾出队3、入队,将元素的下标存入队列每一次入队后,队头元素即为窗口最......
  • 小白学习微信小程序的开发团队协作和版本控制
    团队协作和版本控制是小白学习微信小程序开发中非常重要的部分。本文将详细介绍团队协作和版本控制的概念、常用工具和技术,并提供一些代码案例来帮助小白更好地理解和实践。一、团队协作团队协作是指多个开发者共同合作完成一个项目的过程,包括代码编写、问题协商、任务分配等......