87分布式电商项目 -微信扫码支付申请

简介: 87分布式电商项目 -微信扫码支付申请

微信扫码支付是商户系统按微信支付协议生成支付二维码,用户再用微信“扫一扫”完成支付的模式。该模式适用于 PC 网站支付、实体店单品或订单支付、媒体广告支付等场景。

微信扫码支付申请

第一步:注册公众号(类型须为:服务号)

请根据营业执照类型选择以下主体注册:个体工商户| 企业/公司| 政府| 媒体| 其他类

第二步:认证公众号

公众号认证后才可申请微信支付,认证费:300 元/次。

第三步:提交资料申请微信支付

登录公众平台,点击左侧菜单【微信支付】,开始填写资料等待审核,审核时间为 个工作日内。

第四步:开户成功,登录商户平台进行验证

资料审核通过后,请登录联系人邮箱查收商户号和密码,并登录商户平台填写财付通付金打的小额资金数额,完成账户验证。

第五步:在线签署协议

本协议为线上电子协议,签署后方可进行交易及资金结算,签署完立即生效。本课程已经提供好“传智播客”的微信支付账号,学员无需申请。

开发文档

微信支付接口调用的整体思路:

按 API 要求组装参数,以 XML 方式发送(POST)给微信支付接口(URL),微信支付接口也是以 XML 方式给予响应。程序根据返回的结果(其中包括支付 URL)生成二维码或判断订单状态。

在线微信支付开发文档:

https://pay.weixin.qq.com/wiki/doc/api/index.html

  1. appid:微信公众账号或开放平台 APP 的唯一标识
  2. mch_id:商户号 (配置文件中的 partner)
  3. partnerkey:商户密钥
  4. sign:数字签名, 根据微信官方提供的密钥和一套算法生成的一个加密信息, 就是为了保证交易的安全性

微信支付SDK

微信支付提供了 SDK, 大家下载后打开源码,install 到本地仓库

课程配套的本地仓库已经提供 jar 包,所以安装 SDK 步骤省略。

使用微信支付 SDK,在 maven 工程中引入依赖

<dependency> 
  <groupId>com.github.wxpay</groupId> 
  <artifactId>wxpay-sdk</artifactId> 
  <version>0.0.3</version>
</dependency>

我们主要会用到微信支付 SDK 的以下功能:

(1)获取随机字符串

WXPayUtil.generateNonceStr()

(2)MAP 转换为 XML 字符串(自动添加签名)

WXPayUtil.generateSignedXml(param, partnerkey)

(3)XML 字符串转换为 MAP

WXPayUtil.xmlToMap(result)

HttpClient工具类

HttpClient 是 Apache Jakarta Common 下的子项目,用来提供高效的、最新的、功能丰富的支持 HTTP 协议的客户端编程工具包,并且它支持 HTTP 协议最新的版本和建议。HttpClient 已经应用在很多的项目中,比如 Apache Jakarta 上很著名的另外两个开源项目Cactus 和 HTMLUnit 都使用了 HttpClient。

HttpClient 通俗的讲就是模拟了浏览器的行为,如果我们需要在后端向某一地址提交数据获取结果,就可以使用 HttpClient.

关于 HttpClient(原生)具体的使用不属于我们本章的学习内容,我们这里这里为了简化 HttpClient 的使用,提供了工具类 HttpClient(对原生 HttpClient 进行了封装)

HttpClient 工具类使用的步骤

HttpClient client=new HttpClient(请求的 url 地址);
client.setHttps(true);//是否是 https 协议
client.setXmlParam(xmlParam);//发送的 xml 数据
client.post();//执行 post 请求
String result = client.getContent(); //获取结果

工程搭建和准备工作

(1)建立支付服务接口模块 pinyougou-pay-interface (jar)

(2)建立支付服务实现模块 pinyougou-pay-service (war) 依赖 pinyougou-pay-interface 和pinyougou-common 、 spring dubbox 相关依赖 、微信 SDK (因为不需要连接数据库所以不用引用 dao 工程)

<dependency>
   <groupId>com.github.wxpay</groupId>
    <artifactId>wxpay-sdk</artifactId>
     <version>0.0.3</version>
  </dependency>

tomcat 9000添加 spring 配置文件 ,参见其它服务工程

(3)在 pinyougou-common 工程中添加工具类 HttpClient.java ,并添加依赖

<dependency>
  <groupId>org.apache.httpcomponents</groupId>
  <artifactId>httpclient</artifactId>
</dependency>

添加配置文件 weixinpay.properties

appid=wx8397f8696b538317
partner=1473426802
partnerkey=8A627A4578ACE384017C997F12D68B23
notifyurl=http://a31ef7db.ngrok.io/WeChatPay/WeChatPayNotify

appid: 微信公众账号或开放平台 APP 的唯一标识partner:财付通平台的商户账号

partnerkey:财付通平台的商户密钥

notifyurl: 回调地址

(4)pinyougou-cart-web 依赖工程 pinyougou-pay-service

(5)将二维码插件 QRious 拷贝到 pinyougou-cart-web 的 plugins 目录中

目录
相关文章
|
安全 开发工具 git
git分布式版本控制系统及在码云上创建项目并pull和push
通过本文的介绍,我们详细讲解了Git的基本概念和工作流程,并展示了如何在码云上创建项目及进行pull和push操作。Git作为一种分布式版本控制系统,为开发者提供了强大的工具来管理代码变更和协作开发。希望本文能帮助您更好地理解和使用Git及码云,提高开发效率和代码质量。
506 16
|
安全 开发工具 git
git分布式版本控制系统及在码云上创建项目并pull和push
通过本文的介绍,我们详细讲解了Git的基本概念和工作流程,并展示了如何在码云上创建项目及进行pull和push操作。Git作为一种分布式版本控制系统,为开发者提供了强大的工具来管理代码变更和协作开发。希望本文能帮助您更好地理解和使用Git及码云,提高开发效率和代码质量。
777 18
|
NoSQL Java Redis
面试官:项目中如何实现分布式锁?
面试官:项目中如何实现分布式锁?
707 7
面试官:项目中如何实现分布式锁?
|
存储 缓存 开发框架
看看 Asp.net core Webapi 项目如何优雅地使用分布式缓存
看看 Asp.net core Webapi 项目如何优雅地使用分布式缓存
343 0
|
资源调度 Java 调度
项目环境测试问题之Schedulerx2.0通过分布式分片任务解决单机计算瓶颈如何解决
项目环境测试问题之Schedulerx2.0通过分布式分片任务解决单机计算瓶颈如何解决
327 0
项目环境测试问题之Schedulerx2.0通过分布式分片任务解决单机计算瓶颈如何解决
|
SQL NoSQL Java
如何在Java项目中实现分布式锁
如何在Java项目中实现分布式锁
|
消息中间件 Java 中间件
如何在Java项目中实现分布式事务管理
如何在Java项目中实现分布式事务管理
|
XML Java 程序员
Java SpringMVC实现PC端网页微信扫码支付完整版
Java SpringMVC实现PC端网页微信扫码支付完整版
851 0
|
NoSQL 调度 Redis
19- 你的项目中哪里用到了分布式锁
在一个项目中,为解决集群环境下SpringTask定时任务的重复执行问题,采用了Redis实现分布式锁来管理任务调度,防止资源浪费。后来因任务量和执行规则增加,以及单节点效率限制,系统改用XXL-JOB,分布式锁不再使用。
213 2
|
XML NoSQL Java
Java单体项目和分布式项目中的锁
Java单体项目和分布式项目中的锁 Java单体项目和分布式项目中的锁
326 2