热门标签 | 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相关参数就可以运行了。

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


推荐阅读
  • RN即ReactNative基于React框架针对移动端的跨平台框架,在学习RN前建议最好熟悉下html,css,js,当然如果比较急,那就直接上手吧,毕竟用学习前面基础的时间,R ... [详细]
  • 本文介绍了在开发Android新闻App时,搭建本地服务器的步骤。通过使用XAMPP软件,可以一键式搭建起开发环境,包括Apache、MySQL、PHP、PERL。在本地服务器上新建数据库和表,并设置相应的属性。最后,给出了创建new表的SQL语句。这个教程适合初学者参考。 ... [详细]
  • Centos7.6安装Gitlab教程及注意事项
    本文介绍了在Centos7.6系统下安装Gitlab的详细教程,并提供了一些注意事项。教程包括查看系统版本、安装必要的软件包、配置防火墙等步骤。同时,还强调了使用阿里云服务器时的特殊配置需求,以及建议至少4GB的可用RAM来运行GitLab。 ... [详细]
  • Firefox火狐浏览器关闭到http://detectportal.firefox.com的流量问题解决办法
    本文介绍了使用Firefox火狐浏览器时出现关闭到http://detectportal.firefox.com的流量问题,并提供了解决办法。问题的本质是因为火狐默认开启了Captive portal技术,当连接需要认证的WiFi时,火狐会跳出认证界面。通过修改about:config中的network.captive-portal-service.en的值为false,可以解决该问题。 ... [详细]
  • 在重复造轮子的情况下用ProxyServlet反向代理来减少工作量
    像不少公司内部不同团队都会自己研发自己工具产品,当各个产品逐渐成熟,到达了一定的发展瓶颈,同时每个产品都有着自己的入口,用户 ... [详细]
  • Linux如何安装Mongodb的详细步骤和注意事项
    本文介绍了Linux如何安装Mongodb的详细步骤和注意事项,同时介绍了Mongodb的特点和优势。Mongodb是一个开源的数据库,适用于各种规模的企业和各类应用程序。它具有灵活的数据模式和高性能的数据读写操作,能够提高企业的敏捷性和可扩展性。文章还提供了Mongodb的下载安装包地址。 ... [详细]
  • web.py开发web 第八章 Formalchemy 服务端验证方法
    本文介绍了在web.py开发中使用Formalchemy进行服务端表单数据验证的方法。以User表单为例,详细说明了对各字段的验证要求,包括必填、长度限制、唯一性等。同时介绍了如何自定义验证方法来实现验证唯一性和两个密码是否相等的功能。该文提供了相关代码示例。 ... [详细]
  • 本文介绍了将mysql从5.6.15升级到5.7.15的详细步骤,包括关闭访问、备份旧库、备份权限、配置文件备份、关闭旧数据库、安装二进制、替换配置文件以及启动新数据库等操作。 ... [详细]
  • Imtryingtofigureoutawaytogeneratetorrentfilesfromabucket,usingtheAWSSDKforGo.我正 ... [详细]
  • centos安装Mysql的方法及步骤详解
    本文介绍了centos安装Mysql的两种方式:rpm方式和绿色方式安装,详细介绍了安装所需的软件包以及安装过程中的注意事项,包括检查是否安装成功的方法。通过本文,读者可以了解到在centos系统上如何正确安装Mysql。 ... [详细]
  • 背景应用安全领域,各类攻击长久以来都危害着互联网上的应用,在web应用安全风险中,各类注入、跨站等攻击仍然占据着较前的位置。WAF(Web应用防火墙)正是为防御和阻断这类攻击而存在 ... [详细]
  • 本文介绍了在Android Studio中使用命令行build gradle的方法,并解决了一些常见问题,包括手动配置gradle环境变量和解决External Native Build Issues的方法。同时提供了相关参考文章链接。 ... [详细]
  • 如何搭建Java开发环境并开发WinCE项目
    本文介绍了如何搭建Java开发环境并开发WinCE项目,包括搭建开发环境的步骤和获取SDK的几种方式。同时还解答了一些关于WinCE开发的常见问题。通过阅读本文,您将了解如何使用Java进行嵌入式开发,并能够顺利开发WinCE应用程序。 ... [详细]
  • 本文介绍了OpenStack的逻辑概念以及其构成简介,包括了软件开源项目、基础设施资源管理平台、三大核心组件等内容。同时还介绍了Horizon(UI模块)等相关信息。 ... [详细]
  • Harmony 与 Game Space 达成合作,在 Shard1 上扩展 Web3 游戏
    旧金山20 ... [详细]
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社区 版权所有