# simple-pay
**Repository Path**: libran/simple-pay
## Basic Information
- **Project Name**: simple-pay
- **Description**: simple-pay源于本人刚好接手同事交接的支付项目,加上本人对支付的理解,利用业余时间全新开发而成。 简单付(simple-pay)的目的是让开发者对接第三方支付更加简单,便捷。聚合第三方支付通道并且实现零代码就能聚合收款的目的。https://www.42pay.cn
- **Primary Language**: Java
- **License**: Apache-2.0
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 101
- **Created**: 2018-07-26
- **Last Updated**: 2020-12-18
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# simple-pay
#### 项目介绍
simple-pay源于本人刚好接手同事交接的支付项目,加上本人对支付的理解,利用业余时间全新开发而成。 简单付(simple-pay)的目的是让开发者对接第三方支付更加简单,便捷。聚合第三方支付通道并且实现零代码就能聚合收款的目的。
官网:[https://www.42pay.cn](https://www.42pay.cn)
QQ交流群:826351281
#### 技术框架
* 核心框架:Spring-Boot 2.0
* 视图框架:FreeMarker 2.3.28
* 持久层框架:MyBatis 3.4.6
* 数据库连接池: Druid 1.0.15
* 日志管理:Logback 1.2.3
* JS框架:Jquery 3.2.1
* UI框架: Layui 2.2.6
* 项目管理框架: Maven 3.3.9
#### 开发环境
建议开发者使用以下环境,可以避免版本带来的问题
* IDE: intellij idea
* DB: Mysql5.7
* JDK: JDK1.8+
* Maven: 3.3.9
#### 运行环境
* 数据库服务器:Mysql5.7
* JAVA平台: JRE1.8+
* 操作系统:Windows、Linux等
#### 系统演示
体验simple-pay, 请访问 [https://www.42pay.cn](https://www.42pay.cn)
一. 注册新的帐号
二. 配置支付参数
#### 代码结构
├--java
├----cn._42pay.simpleypay
├------config 配置
├------constant 常量和枚举值
├------controller 接受页面的请求
├--------biz 业务
├----------mobile 手机端业务请求
├----------sys 用户登录后台管理业务请求
├--------notiy 支付回调
├------core 核心代码(主要实现支付接口:支付宝和微信)
├------db 数据库相关
├------framework 框架代码
├------report 处理支付回调的业务代码
├--------convert 将不同支付渠道的报文转换成统一报文
├------service 实现层代码
├------vo 接收界面传入的参数
├--resource 资源
├----static 静态资源
├----templates 页面模板
#### 聚合通道(PAY_CODE说明)
```
"WX_H5","微信手机网站H5支付"(未实现)
"ALIPAY_WEB","支付宝电脑网站支付"
```
```
"WX_JSAPI","微信公众号支付"
"ALIPAY_WAP","支付宝手机网站支付"
```
```
"WX_MICROPAY","微信刷卡付"
"ALIPAY_BARPAY","支付宝条码支付"
```
```
个人转账聚合没有PAY_CODE
```
#### 聚合支付URL说明
一:WAP支付(跳转界面,需要输入金额)
```
http://域名/mobile/order/webPayOrderInfo?userId=用户ID
```

二:WAP支付(直接唤起支付宝或微信收银台)
```
http://域名/mobile/order/webPayOrderInfo?userId=用户ID&payAmount=金额(最小单位:分)
```
三:条码支付(跳转界面,需要输入金额和支付码)
```
http://域名/mobile/order/barcodePayOrderInfo?userId=用户ID
```

四:条码支付(直接扣款)
```
http://域名//mobile/order/barcodePayOrderInfo?userId=用户ID&payAmount=金额(最小单位:分)&barcode=支付条码
```
五:个人转账(1.支付宝直接唤起转账界面 2.微信跳转二维码,长按识别,跳入转账界面)
```
http://域名/mobile/payment/personalTransfer?userId=用户ID
```
#### 使用说明
一:新建数据库simple_pay,并执行simple_pay.sql,修改application.yml配置文件上的数据库连接信息
二:用maven编译
三:直接执行java -jar -server simple-pay-0.0.1-SNAPSHOT.jar
四:端口默认监听在7878上面,访问http://[域名|ip]:端口
五:注册用户

六:配置微信支付参数

七:配置支付宝支付参数

八:获取个人支付二维码

九:查看交易记录

#### 商户回调签名说明
收到第三方支付回调后,会转换成统一的参数,对参数进行ASCII码升序排序,取里面的值+设置到后台的Key,用MD5算一个签名
具体参考类ReportMechant上的buildNotifySign方法
商户收到报文之后,成功需要应答字符串“SUCCESS”,失败应答字符串 “FAILURE”
#### 开源说明
* 本系统100%开源,遵守Apache2.0协议