feat(payment): 添加PayPal支付配置和订单状态更新功能

- 配置PayPal沙箱环境的Client ID和密钥
- 新增updatePaymentStatus方法用于更新订单支付状态
- 新增updateOrderStatus方法用于更新订单状态
- 实现支付状态更新时同步更新订单状态逻辑
- 添加详细的日志记录和异常处理机制
- 集成MyBatis Plus查询更新订单数据
This commit is contained in:
2025-12-23 10:18:37 +08:00
parent 13cf90d54b
commit 7794accdeb
4 changed files with 346 additions and 0 deletions

View File

@@ -0,0 +1,117 @@
package com.mtkj.mtpay.dto.request;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotNull;
import lombok.Data;
import java.io.Serializable;
import java.math.BigDecimal;
/**
* 创建PayPal订单请求DTO
*/
@Data
public class CreatePayPalOrderRequestDTO implements Serializable {
/**
* 订单意图CAPTURE立即捕获或 AUTHORIZE预授权
*/
@NotBlank(message = "订单意图不能为空")
private String intent = "CAPTURE";
/**
* ERP订单号用于关联PayPal订单和ERP订单
*/
@NotBlank(message = "ERP订单号不能为空")
private String referenceId;
/**
* 订单金额
*/
@NotNull(message = "订单金额不能为空")
private BigDecimal amount;
/**
* 货币代码如USD, CNY等
*/
@NotBlank(message = "货币代码不能为空")
private String currencyCode;
/**
* 商品名称
*/
private String itemName;
/**
* 商品描述
*/
private String itemDescription;
/**
* 商品SKU
*/
private String itemSku;
/**
* 商品数量
*/
private Integer itemQuantity = 1;
/**
* 商品单价
*/
private BigDecimal itemUnitAmount;
/**
* 成功回调URLPayPal支付成功后跳转
*/
@NotBlank(message = "成功回调URL不能为空")
private String returnUrl;
/**
* 取消回调URLPayPal支付取消后跳转
*/
@NotBlank(message = "取消回调URL不能为空")
private String cancelUrl;
/**
* 收货人姓名
*/
private String shippingName;
/**
* 收货地址 - 街道地址
*/
private String shippingAddressLine1;
/**
* 收货地址 - 详细地址
*/
private String shippingAddressLine2;
/**
* 收货地址 - 城市
*/
private String shippingCity;
/**
* 收货地址 - 州/省
*/
private String shippingState;
/**
* 收货地址 - 邮编
*/
private String shippingPostalCode;
/**
* 收货地址 - 国家代码如US, CN等
*/
private String shippingCountryCode;
/**
* PayPal账户邮箱可选如果提供会预填充
*/
private String emailAddress;
}

View File

@@ -0,0 +1,13 @@
# PayPal支付配置示例
# 请将以下配置添加到你的application.yml或application-dev.yml中
paypal:
# PayPal Client ID从PayPal开发者控制台获取
client-id: YOUR_CLIENT_ID
# PayPal Client Secret从PayPal开发者控制台获取
client-secret: YOUR_CLIENT_SECRET
# 环境模式sandbox沙箱或 production生产
mode: sandbox
# 是否启用PayPal支付
enabled: true