mirror of
https://github.com/RemainderTime/spring-boot-base-demo.git
synced 2026-03-02 01:50:44 +08:00
支付宝app支付下单方式实现
This commit is contained in:
@@ -42,6 +42,16 @@ public class AliPayConfigProperties {
|
||||
*/
|
||||
private String gatewayUrl;
|
||||
|
||||
/**
|
||||
* 异步回调地址
|
||||
*/
|
||||
private String notifyUrl;
|
||||
|
||||
/**
|
||||
* 支付成功跳转地址
|
||||
*/
|
||||
private String returnUrl;
|
||||
|
||||
// 签名方式
|
||||
private String sign_type = "RSA2";
|
||||
// 字符编码格式
|
||||
|
||||
@@ -26,13 +26,20 @@ public class PayOrderController {
|
||||
@Resource
|
||||
private OrderService orderService;
|
||||
|
||||
@Operation(summary = "支付宝支付下单", description = "支付宝支付下单")
|
||||
@Operation(summary = "支付宝PC/H5支付下单", description = "支付宝PC/H5支付下单")
|
||||
@PostMapping("/ali/createOrder")
|
||||
public RetObj aliCreateOrder(@RequestBody PayOrderFrom from) {
|
||||
|
||||
return orderService.aliCreateOrder(from);
|
||||
}
|
||||
|
||||
@Operation(summary = "支付宝app支付下单", description = "支付宝app支付下单")
|
||||
@PostMapping("/ali/app/createOrder")
|
||||
public RetObj aliAppCreateOrder(@RequestBody PayOrderFrom from) {
|
||||
|
||||
return orderService.aliAppCreateOrder(from);
|
||||
}
|
||||
|
||||
//掉单查询支付宝支付订单状态
|
||||
@Operation(summary = "掉单查询支付宝支付订单状态", description = "掉单查询支付宝支付订单状态")
|
||||
@GetMapping("/ali/queryOrderStatus")
|
||||
|
||||
@@ -9,6 +9,8 @@ public interface OrderService {
|
||||
|
||||
RetObj aliCreateOrder(PayOrderFrom from);
|
||||
|
||||
RetObj aliAppCreateOrder(PayOrderFrom from);
|
||||
|
||||
String aliCallback(HttpServletRequest request);
|
||||
|
||||
String queryAlipayOrderStatus(String orderNo);
|
||||
|
||||
@@ -7,8 +7,10 @@ import cn.xf.basedemo.model.res.PayOrderRes;
|
||||
import cn.xf.basedemo.service.OrderService;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.alipay.api.AlipayClient;
|
||||
import com.alipay.api.domain.AlipayTradeAppPayModel;
|
||||
import com.alipay.api.domain.AlipayTradeQueryModel;
|
||||
import com.alipay.api.internal.util.AlipaySignature;
|
||||
import com.alipay.api.request.AlipayTradeAppPayRequest;
|
||||
import com.alipay.api.request.AlipayTradePagePayRequest;
|
||||
import com.alipay.api.request.AlipayTradeQueryRequest;
|
||||
import com.alipay.api.response.AlipayTradePagePayResponse;
|
||||
@@ -68,6 +70,27 @@ public class OrderServiceImpl implements OrderService {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public RetObj<PayOrderRes> aliAppCreateOrder(PayOrderFrom from) {
|
||||
//校验
|
||||
//...
|
||||
String orderNo = "O" + System.currentTimeMillis();
|
||||
AlipayTradeAppPayRequest request = getAlipayTradeAppPayRequest(from, orderNo);
|
||||
try {
|
||||
String body = alipayClient.sdkExecute(request).getBody();
|
||||
PayOrderRes res = new PayOrderRes();
|
||||
res.setOrderNo(orderNo);
|
||||
//返回给前端调起本机支付宝APP支付
|
||||
res.setFrom(body);
|
||||
//创建订单
|
||||
//...
|
||||
return RetObj.success(res);
|
||||
}catch (Exception e){
|
||||
log.error("APP创建订单失败", e);
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String aliCallback(HttpServletRequest request) {
|
||||
try {
|
||||
@@ -150,4 +173,19 @@ public class OrderServiceImpl implements OrderService {
|
||||
request.setBizContent(bizContent.toJSONString());
|
||||
return request;
|
||||
}
|
||||
|
||||
@NotNull
|
||||
private AlipayTradeAppPayRequest getAlipayTradeAppPayRequest(PayOrderFrom from, String orderNo) {
|
||||
AlipayTradeAppPayRequest request = new AlipayTradeAppPayRequest();
|
||||
request.setNotifyUrl(aliPayConfigProperties.getNotifyUrl());
|
||||
request.setReturnUrl(aliPayConfigProperties.getReturnUrl());
|
||||
AlipayTradeAppPayModel model = new AlipayTradeAppPayModel();
|
||||
model.setOutTradeNo(orderNo);
|
||||
model.setTotalAmount(from.getPrice().multiply(new BigDecimal(from.getNum())).toString());
|
||||
model.setSubject(from.getProductName());
|
||||
model.setProductCode("APP_INSTANT_TRADE_PAY");
|
||||
model.setBody(from.getProductName());
|
||||
request.setBizModel(model);
|
||||
return request;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user