实战开发支付SDK —— 内容介绍以及项目环境搭建

文章目录结构

一、引言

二、内容介绍

三、项目技术介绍

lombok的使用

Retrofit2网络框架的使用

四、项目搭建

五、骗一波关注


一、引言

这两大支付可以说已经深深融入我们每个人的生活了,但做程序员的我们来说,掌握对接微信支付、支付宝支付是一个很大的优势,现在小编的衣食住行基本上是离不开它们的,出行就是滴滴、吃饭就是美团饿了么,购物就是淘宝京东!!!

所以为了更进一步的了解对接微信支付、支付宝支付的整体流程,小编将会把自己的亲身对接的经验,以开发SDK的方式来分享给大家。

首先小编来介绍一下这个支付的SDK能够实现什么样子的功能:

第一:核心功能,能够快速实现微信、支付宝支付功能(最后10行代码带你搞定支付)。

第二:处理微信、支付宝异步回调通知。

第三:实现订单查询、下载对账单等功能。

本SDK将会从项目搭建、项目架构讲解、微信支付介绍、支付宝支付介绍、支付代码实现和封装、单元测试等等来介绍。

 

能够收获什么?

跟着小编一起来开发sdk,可以熟悉对接支付宝、微信支付的模式,以及最最最常见支付接口。最后完成的SDK项目完全可以打包成jar包,来提供给公司项目使用,只需要简单配置则可以快速实现支付功能~~~

准备好要起飞小伙伴可以,点一波关注,不迷路哈哈哈哈哈哈 ,来嘛小编求求你点个关注了~~~

二、内容介绍

项目搭建章节:本项目采用现在主流的SpringBoot项目,符合目前市场需求, 从零开始搭建SpringBoot项目,配置依赖,项目技术点讲解。

项目架构设计章节:本章会对SDK项目设计,进行一个拆分讲解,并且搭建基本项目结构。可以让小伙伴们一眼看懂项目整体分层。

微信支付章节:详细讲解微信对接模式,微信对接文档、代码实现微信支付、异步处理、订单查询等功能。

支付宝支付章节:详细讲解支付宝对接模式以及对接文档,最后手把手代码实现。

这里小编是从零开始讲,其中会包含讲解对接支付需要哪些参数,需要调用哪些接口,以及接口的请求参数的封装、签名生成、签名校验、数据加密、xml响应结果解析,也会特别提醒,在对接时候需要注意的细节部分。 完全适合还没接触过支付的小伙伴们学习~~~

说了那么多,小编给大家写个测试类看看效果吧~~  

以最常见微信扫码支付为例,配置微信支付的基本数据配置、订单基本信息,指定支付方式,最后调用bestPayService.pay()方法,则可以实现相对应的支付功能,从此让支付变成so easy

/**
 * @Auther: IT贱男
 * @Date: 2019/12/19 16:03
 * @Description: 微信接口测试
 */
@SpringBootTest
@RunWith(SpringRunner.class)
public class WxPayService {

     @Test
    public void contextLoads() {
        // 微信支付配置
        WxPayConfig config = new WxPayConfig();
        config.setAppId("wxd898fcb017******");
        config.setMchId("148346****");
        config.setMchKey("098F6BCD4621D373C**********");
        config.setNotifyUrl("http://baidu.com");

        BestPayServiceImpl bestPayService = new BestPayServiceImpl();
        bestPayService.setWxPayConfig(config);

        // 配置订单信息
        PayRequest request = new PayRequest();
        request.setOrderId("3432423423");
        request.setOrderAmount(Double.valueOf("0.01"));
        request.setOrderName("测试商品测试商品");
        request.setPayTypeEnum(BestPayTypeEnum.WXPAY_NATIVE);

        //发起支付,返回支付相关结果数据
        PayResponse pay = bestPayService.pay(request);
        // 获取支付二维码 (最终需要前台转成二维码进行显示)
        System.out.println(pay.getCodeUrl());

    }

}

三、项目技术介绍

小编所使用环境:Mac 操作系统、JDK版本1.8、SpringBoot版本 2.1.7.RELEASE、Maven、IDEA2017版本

哎,小伙伴前提需要具有Java开发经验啦,需要了解以下技术的使用:

lombok的使用

小伙伴在写一个实体类的时候,还在生成Get、Set方法吗? 那你就落伍啦。

首先引入lombok的依赖,并且idea下载lombok插件,最后能按照小编提供的截图中搜索到插件即可。

lombok的时候基本上都是采用注解的形式,比如说最后小编OrderQueryRequest实体类上,加上了@Data注解,则可以省略生成get、set、toString等方法。

<dependency>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
    <optional>true</optional>
</dependency>

  

/**
 * @Auther: IT贱男
 * @Date: 2019/12/20 16:04
 * @Description: 支付订单查询
 */
@Data
public class OrderQueryRequest {

    /**
     * 支付平台
     */
    private BestPayPlatformEnum bestPayPlatformEnum;

    /**
     * 订单号 商户订单 二选一
     */
    private String orderId;

    /**
     * 外部订单号 二选一
     */
    private String outOrderId;
}

Retrofit2网络框架的使用

小编这个项目中所使用的HTTP请求都是采用Retrofit2网络框架的使用。这里给大家提前透露一下微信中所包含的接口都是以<xml>的格式来进行交互,而使用Retrofit可以配置不同反序列化工具类来解析不同的数据,总的来说小编感觉时候这个框架比较方便~~

详细学习内容,可以参考试一下CSDN另外一个博主的文章:https://blog.csdn.net/m0_37796683/article/details/90702095

这个是项目部分代码展示,定义了所需要请求微信接口的API定义。

/**
 * @Auther: IT贱男
 * @Date: 2019/12/19 15:12
 * @Description: 微信API
 */
public interface WxPayApi {

    /**
     * 统一下单
     *
     * @param body
     * @return
     */
    @POST("/pay/unifiedorder")
    Call<WxPayUnifiedorderResponse> unifiedorder(@Body RequestBody body);

}

四、项目搭建

第一步:采用IDEA快速构建Springboot项目,填写项目信息、依赖可以不用选择,一直到完成就行啦。 相信小伙伴们都有经验创建一个springboot项目了,后面步骤小编就不一一截图了。

第二步:这个是本项目所采用的全部依赖,希望小伙伴们能够和小编保持一致,尤其是springboot的版本

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
		 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
	<modelVersion>4.0.0</modelVersion>
	<parent>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-parent</artifactId>
		<version>2.1.7.RELEASE</version>
		<relativePath/> <!-- lookup parent from repository -->
	</parent>
	<groupId>com.kane</groupId>
	<artifactId>sdk</artifactId>
	<version>0.0.1-SNAPSHOT</version>
	<name>best-pay-sdk</name>
	<description>Demo project for Spring Boot</description>

	<properties>
		<java.version>1.8</java.version>
	</properties>

	<dependencies>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-web</artifactId>
		</dependency>
		<dependency>
			<groupId>org.projectlombok</groupId>
			<artifactId>lombok</artifactId>
			<optional>true</optional>
		</dependency>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-test</artifactId>
			<scope>test</scope>
		</dependency>
		<dependency>
			<groupId>org.simpleframework</groupId>
			<artifactId>simple-xml</artifactId>
			<version>2.7.1</version>
		</dependency>
		<dependency>
			<groupId>org.apache.commons</groupId>
			<artifactId>commons-lang3</artifactId>
			<version>3.4</version>
		</dependency>
		<dependency>
			<groupId>commons-codec</groupId>
			<artifactId>commons-codec</artifactId>
			<version>1.10</version>
		</dependency>
		<dependency>
			<groupId>com.squareup.retrofit2</groupId>
			<artifactId>retrofit</artifactId>
			<version>2.3.0</version>
		</dependency>
		<dependency>
			<groupId>com.squareup.retrofit2</groupId>
			<artifactId>converter-gson</artifactId>
			<version>2.3.0</version>
		</dependency>
		<dependency>
			<groupId>com.squareup.okhttp3</groupId>
			<artifactId>logging-interceptor</artifactId>
			<version>3.9.0</version>
		</dependency>
		<dependency>
			<groupId>com.squareup.retrofit2</groupId>
			<artifactId>converter-simplexml</artifactId>
			<version>2.3.0</version>
		</dependency>
	</dependencies>

	<build>
		<plugins>
			<plugin>
				<groupId>org.springframework.boot</groupId>
				<artifactId>spring-boot-maven-plugin</artifactId>
			</plugin>
		</plugins>
	</build>

</project>

五、骗一波关注

该项目会讲解基本对接微信、支付宝的模式和具体代码实现,如果是你有开发支付经验的大牛则可以指点指点,如果小伙伴是完全没有接触支付功能,并且又想学习开发支付。 那么你就来对了,小编会带你由浅入深,由项目的搭建到项目打包成jar对外提供使用。

如果想接着学习,可以点一波关注,本项目小编大概会分6 ~ 8 篇文章进行讲解,以及代码演示。

关注、点赞、分享~~~ 

发布了152 篇原创文章 · 获赞 422 · 访问量 43万+

猜你喜欢

转载自blog.csdn.net/weixin_38111957/article/details/103643710