Browse Source

feature1.0.0-img:添加支付宝支付及回调功能

feature-1.0-img-prototype
chengkun 3 years ago
parent
commit
a02db2e7c1
  1. 37
      bnyer-services/bnyer-img/src/main/java/com/bnyer/img/controller/CommonController.java
  2. 31
      bnyer-services/bnyer-img/src/main/java/com/bnyer/img/dto/AlipayParamDto.java
  3. 26
      bnyer-services/bnyer-img/src/main/java/com/bnyer/img/service/AlipayService.java
  4. 95
      bnyer-services/bnyer-img/src/main/java/com/bnyer/img/service/impl/AlipayServiceImpl.java

37
bnyer-services/bnyer-img/src/main/java/com/bnyer/img/controller/CommonController.java

@ -0,0 +1,37 @@
package com.bnyer.img.controller;
import com.bnyer.common.core.utils.StringUtils;
import com.bnyer.common.core.web.controller.BaseController;
import com.bnyer.common.core.web.domain.AjaxResult;
import com.bnyer.img.service.AlipayService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.servlet.http.HttpServletRequest;
@Api(value = "【图文平台】公共接口",tags = "【图文平台】公共接口")
@RestController
@RequestMapping("/img/common")
@Slf4j
public class CommonController extends BaseController {
@Autowired
private AlipayService alipayService;
//@RequiresPermissions("system:config:list")
@ApiOperation(value = "支付宝回调通知")
@PostMapping("/alipayCallback")
public AjaxResult alipayCallback(@RequestBody HttpServletRequest request) {
String result = alipayService.alipayCallBack(request);
if (StringUtils.isNotBlank(result)){
return AjaxResult.success(result);
}
return AjaxResult.error();
}
}

31
bnyer-services/bnyer-img/src/main/java/com/bnyer/img/dto/AlipayParamDto.java

@ -0,0 +1,31 @@
package com.bnyer.img.dto;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import java.io.Serializable;
@Getter
@Setter
@NoArgsConstructor
@AllArgsConstructor
@ApiModel("支付宝支付参数接收类")
public class AlipayParamDto implements Serializable {
@ApiModelProperty(value="商户订单号")
private String outTradeNo;
@ApiModelProperty(value="订单名称")
private String subject;
@ApiModelProperty(value="付款金额")
private String totalAmount;
@ApiModelProperty(value="备注")
private String body;
}

26
bnyer-services/bnyer-img/src/main/java/com/bnyer/img/service/AlipayService.java

@ -0,0 +1,26 @@
package com.bnyer.img.service;
import com.bnyer.img.dto.AlipayParamDto;
import javax.servlet.http.HttpServletRequest;
/**
* @author chengkun
* @date 2022/8/30 16:42
*/
public interface AlipayService {
/**
* 支付宝支付
* @param params 支付参数
* @return -
*/
String aliPay(AlipayParamDto params);
/**
* 支付宝回调
* @param request 回调请求
* @return -
*/
String alipayCallBack(HttpServletRequest request);
}

95
bnyer-services/bnyer-img/src/main/java/com/bnyer/img/service/impl/AlipayServiceImpl.java

@ -0,0 +1,95 @@
package com.bnyer.img.service.impl;
import com.alibaba.fastjson.JSON;
import com.alipay.api.AlipayApiException;
import com.alipay.api.AlipayClient;
import com.alipay.api.DefaultAlipayClient;
import com.alipay.api.internal.util.AlipaySignature;
import com.alipay.api.request.AlipayTradePagePayRequest;
import com.bnyer.img.config.AlipayConfig;
import com.bnyer.img.dto.AlipayParamDto;
import com.bnyer.img.service.AlipayService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import javax.servlet.http.HttpServletRequest;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
/**
* @author chengkun
* @date 2022/8/30 17:09
*/
@Service
@Slf4j
public class AlipayServiceImpl implements AlipayService {
@Autowired
private AlipayConfig alipayConfig;
@Override
public String aliPay(AlipayParamDto params) {
String result = null;
//1、获得初始化的AlipayClient
AlipayClient client = new DefaultAlipayClient(
alipayConfig.getGatewayUrl(),
alipayConfig.getAppId(),
alipayConfig.getPrivateKey(),
alipayConfig.getCharset(),
alipayConfig.getPublicKey(),
alipayConfig.getSignType());
//2、设置请求参数
AlipayTradePagePayRequest request = new AlipayTradePagePayRequest();
//页面跳转同步通知页面路径
request.setReturnUrl(alipayConfig.getReturnUrl());
// 服务器异步通知页面路径
request.setNotifyUrl(alipayConfig.getNotifyUrl());
//封装参数
request.setBizContent(JSON.toJSONString(client));
try {
//3、请求支付宝进行付款,并获取支付结果
result = client.pageExecute(request).getBody();
} catch (AlipayApiException e) {
log.error("支付宝支付失败!错误原因为:", e);
return null;
}
return result;
}
@Override
public String alipayCallBack(HttpServletRequest request) {
Map<String, String> result = new HashMap<>();
Map requestParams = request.getParameterMap();
for (Iterator iter = requestParams.keySet().iterator(); iter.hasNext(); ) {
String name = (String) iter.next();
String[] values = (String[]) requestParams.get(name);
String valueStr = "";
for (int i = 0; i < values.length; i++) {
valueStr = (i == values.length - 1) ? valueStr + values[i]
: valueStr + values[i] + ",";
}
//乱码解决,这段代码在出现乱码时使用。
//valueStr = new String(valueStr.getBytes("ISO-8859-1"), "utf-8");
result.put(name, valueStr);
}
String outTradeNo = result.get("out_trade_no");
String appId = result.get("app_id");
String sellerId = result.get("out_trade_no");
String totalAmount = result.get("total_amount");
log.info("outTradeNo=={},appId=={},sellerId=={},totalAmount=={}",outTradeNo,appId,sellerId,totalAmount);
try {
boolean flag = AlipaySignature.rsaCheckV1(result, alipayConfig.getPublicKey(), alipayConfig.getCharset(), alipayConfig.getSignType());
if (flag) {
return "success";
} else {
return "failure";
}
} catch (AlipayApiException e) {
e.printStackTrace();
return "failure";
}
}
}
Loading…
Cancel
Save