springboot项目实现App支付宝支付
1.前戏
1.1、请先在支付宝开发者平台创建app应用并获取APPID,配置密钥等。
1.2、详细可参照蚂蚁金服官方文档:https://open.alipay.com
2.maven在pom.xml中引入对应的jar依赖
<!--支付宝-->
<dependency>
<groupId>com.alipay.sdk</groupId>
<artifactId>alipay-sdk-java</artifactId>
<version>3.7.26.ALL</version>
</dependency>
3.application.yml文件的配置如下
#支付宝支付配置
alipayconfig:
#商户APPID
appId: 122334444
#私钥 pkcs8格式的
rsaPrivateKey: qwertyuiop
#请求网关地址
url: https://openapi.alipay.com/gateway.do
#编码
charset: UTF-8
#返回格式
format: JSON
#支付宝公钥
alipayPublicKey: asdfghjkl
#签名方式
signType: RSA2
4.配置文件对应的AlipayConfig,若没集成lombok请自行生成get/set方法
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;
import lombok.Data;
/**
* 支付包支付配置类
* @author: zengXianKang
*/
@Data
@Component
@ConfigurationProperties(prefix = "alipayconfig")
public class AlipayConfig {
//appId
private String appId;
//私钥
private String rsaPrivateKey;
//请求网关地址
private String url;
//编码格式
private String charset;
//返回格式
private String format;
//支付宝公钥
private String alipayPublicKey;
//签名方式
private String signType;
}
4.1新建一个AliPayVO
import lombok.Data;
/**
* @Description: AliPayVO
* @Param:
* @return:
* @Author: zengXianKang
* @Date: 2019/7/28
*/
@Data
public class AliPayVO {
//商户订单号
private String outTradeNo;
//交易状态
private String tradeStatus;
//交易流水号
private String tradeNo;
//资金总额
private String totalAmount;
//卖家支付宝账户
private String sellerId;
//买家支付宝账户
private String buyerLogoinId;
//签名方式
private String signType;
//签名
private String sign;
}
5.请求支付宝支付
在很多电商的项目中都有类似保存订单,充值等一系列支付宝支付场景;我们需要发起支付返回给前端支付sdk;该篇博文为支付宝支付的博文,稍后我会更新微信支付的博文
5.1发起支付请求
/**
* @Description: 支付请求
* @Param: [payType, outTradeNo, totalAmount]
* @return: java.util.Map<java.lang.String,java.lang.String>
* @Author: zengXianKang
* @Date: 2019/7/28
*/
@Override
public Map<String, String> payRequest(String payType, String outTradeNo, BigDecimal totalAmount) throws Exception {
Map<String, String> map = new HashMap<String, String>();
switch (PayTypeEnum.valueOf(payType)) {
case ALIPAY://支付宝
//实例化客户端
AlipayClient alipayClient = new DefaultAlipayClient(alipayConfig.getUrl(), alipayConfig.getAppId(),
alipayConfig.getRsaPrivateKey(), alipayConfig.getFormat(), alipayConfig.getCharset(),