# simplepay4j
**Repository Path**: njsxit/simplepay4j
## Basic Information
- **Project Name**: simplepay4j
- **Description**: java支付集成工具
- **Primary Language**: Java
- **License**: Apache-2.0
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2019-02-26
- **Last Updated**: 2020-12-19
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
### 项目简介
simplepay4j是一个集成支付工具的java拓展包,目前只集成了微信支付基本功能
oschina地址:https://gitee.com/yaoguaiDa/simplepay4j
github地址:https://github.com/YaoguaiDa/simplepay4j
* 为什么要重复造轮子?
——年假在家闲呐!
### 项目特点
* 少依赖:除了yaml解析工具之外所有工具使用原生java开发,项目体积小
* 使用方便:隐藏了开发中繁琐的细节
* 易拓展:开发者可以根据需求灵活拓展自己的支付工具
* 容易理解:有完整的注释,以后也会有完善的使用文档和demo
* 模块化:可以按需引入需要的支付功能
### 使用方法
* 引入项目
* 使用最新版:
* 下载项目到本地
* 将项目导入到ide
* 在根目录运行命令: mvn clean install
* 在自己的项目pom.xml文件节点下加入
```xml
com.applcn
simplePay4j-wechat
1.0.0-alpha
```
* 刷新maven
* maven仓库中的版本(包名调整之前的):
* 直接在自己的项目pom.xml文件节点下加入
```xml
com.applcn
wechat
1.0.0-alpha
```
* 刷新maven
* 简单使用
* jsapi/jssdk/微信小程序支付:
```java
WxAccountModel accountModel = new WxAccountModel("公众号appid/小程序appid","微信商户号", "商户秘钥");
MethodProxy proxy = Wechat.orderMethod(accountModel);
WxUnifiedOrderModel unifiedOrderModel = new WxUnifiedOrderModel("商品描述","商户订单号","商品价格,单位为分",
"客户端ip", "回调地址", TradeTypeEnum.JSAPI);
unifiedOrderModel.expand("发起支付的用户openid");
WxUnifiedOrderResponse result = (WxUnifiedOrderResponse) proxy.unifiedOrder(unifiedOrderModel);
/**
* 直接调用getPayResult处理好的数据转成json给前端
*/
System.out.println(result.getPayResult());
```
* native(扫码支付)支付:
```java
WxAccountModel accountModel = new WxAccountModel("公众号appid/小程序appid","微信商户号", "商户秘钥");
MethodProxy proxy = Wechat.orderMethod(accountModel);
WxUnifiedOrderModel unifiedOrderModel = new WxUnifiedOrderModel("商品描述","商户订单号","商品价格,单位为分",
"客户端ip", "回调地址", TradeTypeEnum.NATIVE);
unifiedOrderModel.expand("发起支付的用户openid");
WxUnifiedOrderResponse result = (WxUnifiedOrderResponse) proxy.unifiedOrder(unifiedOrderModel);
/**
* 此时result中codeUrl一定存在
* 使用者可将codeUrl返回给前端,由前端生成二码,用户用微信扫描此二维码即可调起支付
*/
System.out.println(result.getCodeUrl());
```
* app支付:
```java
WxAccountModel accountModel = new WxAccountModel("公众号appid/小程序appid","微信商户号", "商户秘钥");
MethodProxy proxy = Wechat.orderMethod(accountModel);
WxUnifiedOrderModel unifiedOrderModel = new WxUnifiedOrderModel("商品描述","商户订单号","商品价格,单位为分",
"客户端ip", "回调地址", TradeTypeEnum.APP);
unifiedOrderModel.expand("发起支付的用户openid");
WxUnifiedOrderResponse result = (WxUnifiedOrderResponse) proxy.unifiedOrder(unifiedOrderModel);
/**
* 直接调用getPayResult处理好的数据转成json给前端
*/
System.out.println(result.getPayResult());
```
* h5支付:
```java
WxAccountModel accountModel = new WxAccountModel("公众号appid/小程序appid","微信商户号", "商户秘钥");
MethodProxy proxy = Wechat.orderMethod(accountModel);
WxUnifiedOrderModel unifiedOrderModel = new WxUnifiedOrderModel("商品描述","商户订单号","商品价格,单位为分",
"客户端ip", "回调地址", TradeTypeEnum.MWEB);
unifiedOrderModel.expand("发起支付的用户openid");
WxUnifiedOrderResponse result = (WxUnifiedOrderResponse) proxy.unifiedOrder(unifiedOrderModel);
/**
* 此时result中mwebUrl一定存在
* mweb_url为拉起微信支付收银台的中间页面,可通过访问该url来拉起微信客户端,完成支付,mweb_url的有效期为5分钟。
* 开发者可直接将mwebUrl传给前端
*/
System.out.println(result.getMwebUrl());
```
* 提交付款码支付:
```java
/**
* appid:微信分配的公众账号ID(企业号corpid即为此appId)
* mchId:商户号
* key:商户平台秘钥
*/
WxAccountModel accountModel = new WxAccountModel("公众号appid/小程序appid","微信商户号", "商户秘钥");
MethodProxy proxy = Wechat.orderMethod(accountModel);
/**
* 付款码支付需要使用WxMicropayModel
*
*/
WxMicropayModel model = new WxMicropayModel("商品描述","商户订单号","商品价格,单位为分",
"客户端ip", "用户付款码");
WxMicropayResponse result = (WxMicropayResponse) proxy.micropay(model);
/**
* 若不抛异常返回结果内就有内容,开发者可以根据result的内容处理自己的逻辑
*/
System.out.println(result);
```
* 处理支付结果通知回调:
```java
/**
*inputStream: 即:java.io.InputStream,为前端出来的数据流
*/
NotifyManageProxy proxy = Wechat.notifyManage(inputStream, "商户秘钥");
WxOrderModel model = (WxOrderModel) proxy.manage();
if(model != null){
// TODO 处理用户自己的业务逻辑,如对比订单号,对比金额
}else{
// TODO 此处为签名错误返回信息构造可自行按照微信官方文档来写
Map error = new HashMap<>(2);
error.put("return_code", "FAIL");
error.put("return_msg", "签名错误");
return XmlUtil.mapToXml(error, true);
}
```
* 订单查询:
待完成
* 关闭订单:
待完成
* 申请退款:
待完成
### 其它
* 项目demo在example/test/java/下,使用的是springboottest,亲测
* 项目才开始还没写完,还需要优化,也还没经过详细测试,仅作为技术交流用,反正别拿去生产环境用!别拿去生产环境用!别拿去生产环境用!