This commit is contained in:
Mrx
2026-05-09 18:02:51 +08:00
parent 5d51b7a400
commit d68184fa59
4 changed files with 53 additions and 9 deletions

View File

@@ -78,7 +78,14 @@ func (l *PaymentLogic) Payment(req *types.PaymentReq) (resp *types.PaymentResp,
// 支付宝按订单写入的商户标识one/two创建支付订单
prepayData, createOrderErr = l.svcCtx.AlipayService.CreateAlipayOrder(l.ctx, paymentTypeResp.payMerchantID, paymentTypeResp.amount, paymentTypeResp.description, paymentTypeResp.outTradeNo)
} else if req.PayMethod == "appleiap" {
prepayData = l.svcCtx.ApplePayService.GetIappayAppID(paymentTypeResp.outTradeNo)
iap := l.svcCtx.ApplePayService.GetIappayAppID(paymentTypeResp.outTradeNo)
prepayData = iap
if iap == "" {
createOrderErr = fmt.Errorf("获取 IAP 参数失败")
}
} else if req.PayMethod == "test" {
// 开发环境测试支付已在上方分支写入 prepayData若走到此处说明非 development
return errors.Wrapf(xerr.NewErrMsg("测试支付仅在开发环境可用"), "ENV!=development 且 pay_method=test")
}
if createOrderErr != nil {
return errors.Wrapf(xerr.NewErrCode(xerr.SERVER_COMMON_ERROR), "生成订单, 创建支付订单失败: %+v", createOrderErr)
@@ -89,6 +96,12 @@ func (l *PaymentLogic) Payment(req *types.PaymentReq) (resp *types.PaymentResp,
return nil, err
}
if req.PayMethod == "wechat" || req.PayMethod == "alipay" {
if prepayData == nil {
return nil, errors.Wrapf(xerr.NewErrCode(xerr.SERVER_COMMON_ERROR), "创建支付失败: 未生成支付参数")
}
}
// 开发环境测试支付模式:事务提交后处理订单状态更新和后续流程(仅 pay_method=test 且 query 类型 orderID>0
isDevTestPayment := os.Getenv("ENV") == "development" && req.PayMethod == "test"
if isDevTestPayment && paymentTypeResp != nil && paymentTypeResp.orderID != 0 {