mirror of
https://github.com/RemainderTime/spring-boot-base-demo.git
synced 2026-06-04 08:57:44 +08:00
支付宝app支付下单方式实现
This commit is contained in:
@@ -42,6 +42,16 @@ public class AliPayConfigProperties {
|
|||||||
*/
|
*/
|
||||||
private String gatewayUrl;
|
private String gatewayUrl;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 异步回调地址
|
||||||
|
*/
|
||||||
|
private String notifyUrl;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 支付成功跳转地址
|
||||||
|
*/
|
||||||
|
private String returnUrl;
|
||||||
|
|
||||||
// 签名方式
|
// 签名方式
|
||||||
private String sign_type = "RSA2";
|
private String sign_type = "RSA2";
|
||||||
// 字符编码格式
|
// 字符编码格式
|
||||||
|
|||||||
@@ -26,13 +26,20 @@ public class PayOrderController {
|
|||||||
@Resource
|
@Resource
|
||||||
private OrderService orderService;
|
private OrderService orderService;
|
||||||
|
|
||||||
@Operation(summary = "支付宝支付下单", description = "支付宝支付下单")
|
@Operation(summary = "支付宝PC/H5支付下单", description = "支付宝PC/H5支付下单")
|
||||||
@PostMapping("/ali/createOrder")
|
@PostMapping("/ali/createOrder")
|
||||||
public RetObj aliCreateOrder(@RequestBody PayOrderFrom from) {
|
public RetObj aliCreateOrder(@RequestBody PayOrderFrom from) {
|
||||||
|
|
||||||
return orderService.aliCreateOrder(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 = "掉单查询支付宝支付订单状态")
|
@Operation(summary = "掉单查询支付宝支付订单状态", description = "掉单查询支付宝支付订单状态")
|
||||||
@GetMapping("/ali/queryOrderStatus")
|
@GetMapping("/ali/queryOrderStatus")
|
||||||
|
|||||||
@@ -9,6 +9,8 @@ public interface OrderService {
|
|||||||
|
|
||||||
RetObj aliCreateOrder(PayOrderFrom from);
|
RetObj aliCreateOrder(PayOrderFrom from);
|
||||||
|
|
||||||
|
RetObj aliAppCreateOrder(PayOrderFrom from);
|
||||||
|
|
||||||
String aliCallback(HttpServletRequest request);
|
String aliCallback(HttpServletRequest request);
|
||||||
|
|
||||||
String queryAlipayOrderStatus(String orderNo);
|
String queryAlipayOrderStatus(String orderNo);
|
||||||
|
|||||||
@@ -7,8 +7,10 @@ import cn.xf.basedemo.model.res.PayOrderRes;
|
|||||||
import cn.xf.basedemo.service.OrderService;
|
import cn.xf.basedemo.service.OrderService;
|
||||||
import com.alibaba.fastjson.JSONObject;
|
import com.alibaba.fastjson.JSONObject;
|
||||||
import com.alipay.api.AlipayClient;
|
import com.alipay.api.AlipayClient;
|
||||||
|
import com.alipay.api.domain.AlipayTradeAppPayModel;
|
||||||
import com.alipay.api.domain.AlipayTradeQueryModel;
|
import com.alipay.api.domain.AlipayTradeQueryModel;
|
||||||
import com.alipay.api.internal.util.AlipaySignature;
|
import com.alipay.api.internal.util.AlipaySignature;
|
||||||
|
import com.alipay.api.request.AlipayTradeAppPayRequest;
|
||||||
import com.alipay.api.request.AlipayTradePagePayRequest;
|
import com.alipay.api.request.AlipayTradePagePayRequest;
|
||||||
import com.alipay.api.request.AlipayTradeQueryRequest;
|
import com.alipay.api.request.AlipayTradeQueryRequest;
|
||||||
import com.alipay.api.response.AlipayTradePagePayResponse;
|
import com.alipay.api.response.AlipayTradePagePayResponse;
|
||||||
@@ -68,6 +70,27 @@ public class OrderServiceImpl implements OrderService {
|
|||||||
return null;
|
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
|
@Override
|
||||||
public String aliCallback(HttpServletRequest request) {
|
public String aliCallback(HttpServletRequest request) {
|
||||||
try {
|
try {
|
||||||
@@ -150,4 +173,19 @@ public class OrderServiceImpl implements OrderService {
|
|||||||
request.setBizContent(bizContent.toJSONString());
|
request.setBizContent(bizContent.toJSONString());
|
||||||
return request;
|
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