支付宝app支付下单方式实现

This commit is contained in:
海言
2025-10-22 18:20:15 +08:00
parent 7c33311efb
commit 0b035a604e
4 changed files with 58 additions and 1 deletions

View File

@@ -42,6 +42,16 @@ public class AliPayConfigProperties {
*/
private String gatewayUrl;
/**
* 异步回调地址
*/
private String notifyUrl;
/**
* 支付成功跳转地址
*/
private String returnUrl;
// 签名方式
private String sign_type = "RSA2";
// 字符编码格式

View File

@@ -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")

View File

@@ -9,6 +9,8 @@ public interface OrderService {
RetObj aliCreateOrder(PayOrderFrom from);
RetObj aliAppCreateOrder(PayOrderFrom from);
String aliCallback(HttpServletRequest request);
String queryAlipayOrderStatus(String orderNo);

View File

@@ -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;
}
}