一款简单易学的支付宝开源支付项目
共 2969字,需浏览 6分钟
·
2021-10-25 20:08
大家好,我是TJ
一个励志推荐10000款开源项目与工具的程序员
这两天TJ君稍微关注了一下娱乐新闻,因为知名的钢琴家李云迪出事了,铺天盖地都是其涉嫌PC被捕的事情,其中主要的一个证据,就是李云迪通过支付宝实名转账给了涉事女子,成为铁一般的犯罪事实,金额还不小,据说一次一万。
不过这说到支付宝的转账,TJ君昨天刚看到一个基于spring-boot的支付实例项目spring-boot-pay,项目可以拿来即插即用,也可以作为一款学习支付宝支付服务的好案例。TJ君觉得要和大家分享一下!
要先提示大家的是支付宝测试均需要企业认证,如果想测试的小伙伴正好没有企业认证,那也可以使用服务商模式申请开通个人商户,一样可以用来测试。
那具体如何申请服务商模式,项目里有申请链接,感兴趣的小伙伴可以关注TJ君回复关键字获取项目地址后自行查看。
项目包含了支付宝支付服务中的各种场景,包括:扫码支付、电脑支付、WAP支付、APP支付服务端
主要运用的技术栈有:
JDK1.8 Maven IDEA SpringBoot2.2.6 Dubbo2.7.3 zookeeper3.5.3
项目运行起来的演示画面丝毫不逊色于一些大厂出品:
模拟登陆
模拟首页
模拟支付
支付宝参数zfbinfo.properties包含如下内容:
支付宝网关名、partnerId和appId
open_api_domain = https://openapi.alipay.com/gateway.do
mcloud_api_domain = http://mcloudmonitor.com/gateway.do
此处请填写你的PID
pid =XXXXXXXXXXXXXX
此处请填写你当面付的APPID
appid =XXXXXXXXXXXXXX
RSA私钥、公钥和支付宝公钥
private_key = XXXXXXXXXXXXXX
public_key = XXXXXXXXXXXXXX
alipay_public_key = XXXXXXXXXXXXXX
当面付最大查询次数和查询间隔(毫秒)
max_query_retry = 5
query_duration = 5000
当面付最大撤销次数和撤销间隔(毫秒)
max_cancel_retry = 3
cancel_duration = 2000
交易保障线程第一次调度延迟和调度间隔(秒)
heartbeat_delay = 5
heartbeat_duration = 900
当然,项目要用到的支付宝的公钥参数、支付宝的SDK-alipay-sdk-java,都需要从阿里的官网获得,地址如下:
https://openclub.alipay.com/read.php?tid=2190&fid=69 https://docs.open.alipay.com/54/103419/
作者对如何部署整个项目、使用户能够正常使用,写了详尽的部署及启动说明:
简单来说,就是
1、安装注册中心zookeeper 2、基础配置初始化类:com.itstyle.common.cinfig.InitPay 3、配置支付宝相关账号以及证书 4、启动项目
对于扫码支付、电脑支付、WAP支付、APP支付服务端等各种支付方式,代码中也是分类清晰,让人一目了然
/**
* 电脑支付
* @param product
* @param map
* @return
*/
@ApiOperation(value="电脑支付")
@PostMapping(value="pcPay")
public String pcPay(Product product,ModelMap map) {
logger.info("电脑支付");
String form = aliPayService.aliPayPc(product);
map.addAttribute("form", form);
return "aliPay/pay";
}
/**
* 手机H5支付
* @param product
* @param map
* @return
*/
@ApiOperation(value="手机H5支付")
@PostMapping(value="mobilePay")
public String mobilePay(Product product,ModelMap map) {
logger.info("手机H5支付");
String form = aliPayService.aliPayMobile(product);
map.addAttribute("form", form);
return "aliPay/pay";
}
/**
* 扫码支付
* @param product
* @param map
* @return
*/
@ApiOperation(value="二维码支付")
@PostMapping(value="qcPay")
public String qcPay(Product product,ModelMap map) {
logger.info("二维码支付");
String message = aliPayService.aliPay(product);
if(!Constants.FAIL.equals(message)){
map.addAttribute("img", message);
}else{
}
return "aliPay/qcpay";
}
@ApiOperation(value="app支付服务端")
@PostMapping(value="appPay")
public String appPay(Product product,ModelMap map) {
logger.info("app支付服务端");
String orderString = aliPayService.appPay(product);
map.addAttribute("orderString", orderString);
return "aliPay/pay";
}
相信整个项目对于想学习支付方面知识的小伙伴,肯定有所裨益,另外项目除了支付宝支付,还有其他微信支付,银联支付的相关内容,感兴趣的小伙伴可以一并学习。除了想学习的小伙伴,项目只要配置好相关参数,把接口类打个包,就可以最简单的直接使用,简单省事。心动不如行动,完整项目地址如下:
点击下方卡片,关注公众号“TJ君”
回复“支付宝支付”,获取仓库地址
关注我,每天了解一个牛x、好用、有趣的东东