热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

微信商户扫码支付java开发[从零开发]

这个教程可以用作了解扫码支付的整体运行过程,已经实现了前端扫码,记录订单,回调等一套完整的微信扫码支付。相关链接:微信支

这个教程可以用作了解扫码支付的整体运行过程,已经实现了前端扫码,记录订单,回调等一套完整的微信扫码支付。

相关链接:

微信支付开发:https://pay.weixin.qq.com/index.php/core/home/login?return_url=%2F

微信扫码支付开发文档: https://pay.weixin.qq.com/wiki/doc/api/native.php?chapter=6_1

微信支付java Sdk:https://pay.weixin.qq.com/wiki/doc/api/native.php?chapter=11_1

微信支付相比支付宝而言。是比较多坑的。文档也没有很详细,但是 其实所有东西微信都已经给了,就是组件都给了,但是没有说明使用方式。网上的教程有新也有旧,其实核心代码已经不需要自己实现了。

前期准备:

1.先申请商户号,以下是必要参数

2.下载SDK https://pay.weixin.qq.com/wiki/doc/api/native.php?chapter=11_1

虽然官网有写包含demo 其实只有sdk,是不能直接运行的,代码不算太难,稍微看一下,也大概知道sdk写的是什么了

如果要测试回调,请自行准备一个可以连接外网的服务器,或者使用花生壳(这个还没测试过)

 

主要流程

用户->点击商品->后端生成二维码地址返回给前端->用户支付->微信通知用户支付成功(调用我们写的回调地址)->通知后端支付成功

比较坑的地方

1.sdk中需要自己实现 WXPayConfig 类,而WXPayConfig 类有一个getWXPayDomain方法需要这样实现

2.回调不成功的情况

这是因为回调的时候编码是MD5,但是sdk里面默认是HMACSHA256,所以会出现一直验证不对的情况

改成这样即可

回调相关文档:

https://pay.weixin.qq.com/wiki/doc/api/native.php?chapter=9_7&index=8

回调接口开发要注意两点

1、商户系统对于支付结果通知的内容一定要做签名验证,并校验返回的订单金额是否与商户侧的订单金额一致,防止数据泄漏导致出现“假通知”,造成资金损失。

2、当收到通知进行处理时,首先检查对应业务数据的状态,判断该通知是否已经处理过,如果没有处理过再进行处理,如果处理过直接返回结果成功。在对业务数据进行状态检查和处理之前,要采用数据锁进行并发控制,以避免函数重入造成的数据混乱。

这两点一定要做到,不然会出现数据问题,相关实现demo代码可作参考

----------------------------------------------------------------------------------------------------------------------------------------------------------------------

其实微信支付不算太难,文档比较散乱,第一次可能会比较混乱,但是逻辑理清楚就比较简单了。自己需要的实现的只是业务相关逻辑,和相关订单数据保存

以下是我的demo文档可以作为参考。

码云地址:https://gitee.com/minstrel01/wxpay_demo.git

如果只是想单纯的看微信支付的代码,不管相关业务逻辑

只需要看WXPayServiceImpl 这个类,只要有这个类就可以实现支付,查询和回调

从码云下载好代码后,只需要执行sql文件和写入wxpay-dev.properties相关参数就可以运行了。

因为微信支付没有扫码回调相关功能。所以前端是用了定时调用查询订单是否成功支付(感觉有点蠢),但是看其他网站(例如花生壳微信支付页也是用前端定时器) 如果有更好的方法请告诉我。


推荐阅读
  • 调试利器SSH隧道
    在开发微信公众号或小程序的时候,由于微信平台规则的限制,部分接口需要通过线上域名才能正常访问。但我们一般都会在本地开发,因为这能快速的看到 ... [详细]
  • 实践指南:使用Express、Create React App与MongoDB搭建React开发环境
    本文详细介绍了如何利用Express、Create React App和MongoDB构建一个高效的React应用开发环境,旨在为开发者提供一套完整的解决方案,包括环境搭建、数据模拟及前后端交互。 ... [详细]
  • PHP面试题精选及答案解析
    本文精选了新浪PHP笔试题及最新的PHP面试题,并提供了详细的答案解析,帮助求职者更好地准备PHP相关的面试。 ... [详细]
  • 软件测试行业深度解析:迈向高薪的必经之路
    本文深入探讨了软件测试行业的发展现状及未来趋势,旨在帮助有志于在该领域取得高薪的技术人员明确职业方向和发展路径。 ... [详细]
  • 从CodeIgniter中提取图像处理组件
    本指南旨在帮助开发者在未使用CodeIgniter框架的情况下,如何独立使用其强大的图像处理功能,包括图像尺寸调整、创建缩略图、裁剪、旋转及添加水印等。 ... [详细]
  • 深入理解:AJAX学习指南
    本文详细探讨了AJAX的基本概念、工作原理及其在现代Web开发中的应用,旨在为初学者提供全面的学习资料。 ... [详细]
  • 本文介绍了GitHub上的一些Python开源项目,特别是IM(即时通讯)技术的应用。通过Sealtalk项目,探讨了如何利用开源SDK提升开发效率。 ... [详细]
  • 二维码的实现与应用
    本文介绍了二维码的基本概念、分类及其优缺点,并详细描述了如何使用Java编程语言结合第三方库(如ZXing和qrcode.jar)来实现二维码的生成与解析。 ... [详细]
  • 我的读书清单(持续更新)201705311.《一千零一夜》2006(四五年级)2.《中华上下五千年》2008(初一)3.《鲁滨孙漂流记》2008(初二)4.《钢铁是怎样炼成的》20 ... [详细]
  • 本文介绍了如何通过命令行有效地终止所有 Node.js 进程实例,以解决因端口冲突或其他服务冲突导致的问题。 ... [详细]
  • 本文探讨了如何通过Service Locator模式来简化和优化在B/S架构中的服务命名访问,特别是对于需要频繁访问的服务,如JNDI和XMLNS。该模式通过缓存机制减少了重复查找的成本,并提供了对多种服务的统一访问接口。 ... [详细]
  • 本文总结了一次针对大厂Java研发岗位的面试经历,探讨了面试中常见的问题及其背后的原因,并分享了一些实用的面试准备资料。 ... [详细]
  • 本文详细记录了腾讯ABS云平台的一次前端开发岗位面试经历,包括面试过程中遇到的JavaScript相关问题、Vue.js等框架的深入探讨以及算法挑战等内容。 ... [详细]
  • Spring Boot使用AJAX从数据库读取数据异步刷新前端表格
      近期项目需要是实现一个通过筛选选取所需数据刷新表格的功能,因为表格只占页面的一小部分,不希望整个也页面都随之刷新,所以首先想到了使用AJAX来实现。  以下介绍解决方法(请忽视 ... [详细]
  • 如何处理PHP缺少扩展的问题
    本文将详细介绍如何解决PHP环境中缺少扩展的问题,包括检查当前环境、修改配置文件以及验证修改是否生效的具体步骤,帮助开发者更好地管理和使用PHP扩展。 ... [详细]
author-avatar
孤独秀风_328
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有