4 changed files with 189 additions and 0 deletions
@ -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(); |
|||
} |
|||
} |
|||
@ -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; |
|||
} |
|||
@ -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); |
|||
} |
|||
@ -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…
Reference in new issue