修正了微信支付相关配置文件1
This commit is contained in:
parent
b409d35bc9
commit
99320a018c
@ -195,7 +195,7 @@ func (r *OrderMemberService) GetAppPrepay(m *model.OrderMember) (prepay *app.Pre
|
|||||||
// OrderRefund 订单退款
|
// OrderRefund 订单退款
|
||||||
func (r *OrderMemberService) OrderRefund(tx *gorm.DB, order *model.OrderMember, refundAmount *float64, refundReason string) (*model.OrderMemberRefund, error) {
|
func (r *OrderMemberService) OrderRefund(tx *gorm.DB, order *model.OrderMember, refundAmount *float64, refundReason string) (*model.OrderMemberRefund, error) {
|
||||||
var refundStatus int
|
var refundStatus int
|
||||||
var successTime time.Time
|
var successTime *time.Time
|
||||||
var refundId string
|
var refundId string
|
||||||
|
|
||||||
// 判断订单支付状态(1:未支付 2:已支付 3:支付中 4:支付失败 5:支付超时 6:支付关闭 7:已撤销 8:转入退款)
|
// 判断订单支付状态(1:未支付 2:已支付 3:支付中 4:支付失败 5:支付超时 6:支付关闭 7:已撤销 8:转入退款)
|
||||||
@ -217,7 +217,9 @@ func (r *OrderMemberService) OrderRefund(tx *gorm.DB, order *model.OrderMember,
|
|||||||
// 支付金额为0,模拟退款
|
// 支付金额为0,模拟退款
|
||||||
refundId = "模拟退款:" + strconv.FormatInt(global.Snowflake.Generate().Int64(), 10)
|
refundId = "模拟退款:" + strconv.FormatInt(global.Snowflake.Generate().Int64(), 10)
|
||||||
refundStatus = 3
|
refundStatus = 3
|
||||||
successTime = time.Now()
|
|
||||||
|
now := time.Now()
|
||||||
|
successTime = &now
|
||||||
}
|
}
|
||||||
|
|
||||||
// 退款金额大于0
|
// 退款金额大于0
|
||||||
@ -237,27 +239,14 @@ func (r *OrderMemberService) OrderRefund(tx *gorm.DB, order *model.OrderMember,
|
|||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
if refund.Status == nil {
|
// 处理退款状态
|
||||||
return nil, errors.New("退款状态错误")
|
wxPayRefundResult, err := weChat.HandlePayRefundStatus(refund)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
// 处理订单状态
|
refundStatus = wxPayRefundResult.RefundStatus
|
||||||
switch *refund.Status {
|
successTime = wxPayRefundResult.SuccessTime
|
||||||
case "SUCCESS": // 退款成功
|
|
||||||
refundStatus = 3
|
|
||||||
if refund.SuccessTime != nil {
|
|
||||||
successTime = *refund.SuccessTime
|
|
||||||
}
|
|
||||||
case "CLOSED": // 退款关闭
|
|
||||||
|
|
||||||
refundStatus = 5
|
|
||||||
case "PROCESSING": // 退款处理中
|
|
||||||
refundStatus = 2
|
|
||||||
case "ABNORMAL": // 退款异常
|
|
||||||
return nil, errors.New("退款状态错误")
|
|
||||||
default:
|
|
||||||
return nil, errors.New("退款状态错误")
|
|
||||||
}
|
|
||||||
|
|
||||||
if refund.RefundId == nil {
|
if refund.RefundId == nil {
|
||||||
return nil, errors.New("缺少退款订单编号")
|
return nil, errors.New("缺少退款订单编号")
|
||||||
@ -279,8 +268,8 @@ func (r *OrderMemberService) OrderRefund(tx *gorm.DB, order *model.OrderMember,
|
|||||||
RefundReason: refundReason,
|
RefundReason: refundReason,
|
||||||
}
|
}
|
||||||
|
|
||||||
if refundStatus == 3 && !successTime.IsZero() {
|
if refundStatus == 3 && successTime != nil {
|
||||||
t := model.LocalTime(successTime)
|
t := model.LocalTime(*successTime)
|
||||||
orderRefund.SuccessTime = &t
|
orderRefund.SuccessTime = &t
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -221,7 +221,7 @@ func (r *OrderSingleService) CompleteUnPayOrderSingle(tx *gorm.DB, userId int64)
|
|||||||
// OrderRefund 订单退款
|
// OrderRefund 订单退款
|
||||||
func (r *OrderSingleService) OrderRefund(tx *gorm.DB, order *model.OrderSingle, refundAmount *float64, refundReason string) (*model.OrderSingleRefund, error) {
|
func (r *OrderSingleService) OrderRefund(tx *gorm.DB, order *model.OrderSingle, refundAmount *float64, refundReason string) (*model.OrderSingleRefund, error) {
|
||||||
var refundStatus int
|
var refundStatus int
|
||||||
var successTime time.Time
|
var successTime *time.Time
|
||||||
var refundId string
|
var refundId string
|
||||||
|
|
||||||
// 判断订单支付状态(1:未支付 2:已支付 3:支付中 4:支付失败 5:支付超时 6:支付关闭 7:已撤销 8:转入退款)
|
// 判断订单支付状态(1:未支付 2:已支付 3:支付中 4:支付失败 5:支付超时 6:支付关闭 7:已撤销 8:转入退款)
|
||||||
@ -243,7 +243,9 @@ func (r *OrderSingleService) OrderRefund(tx *gorm.DB, order *model.OrderSingle,
|
|||||||
// 支付金额为0,模拟退款
|
// 支付金额为0,模拟退款
|
||||||
refundId = "模拟退款:" + strconv.FormatInt(global.Snowflake.Generate().Int64(), 10)
|
refundId = "模拟退款:" + strconv.FormatInt(global.Snowflake.Generate().Int64(), 10)
|
||||||
refundStatus = 3
|
refundStatus = 3
|
||||||
successTime = time.Now()
|
|
||||||
|
now := time.Now()
|
||||||
|
successTime = &now
|
||||||
}
|
}
|
||||||
|
|
||||||
// 退款金额大于0
|
// 退款金额大于0
|
||||||
@ -263,27 +265,14 @@ func (r *OrderSingleService) OrderRefund(tx *gorm.DB, order *model.OrderSingle,
|
|||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
if refund.Status == nil {
|
// 处理退款状态
|
||||||
return nil, errors.New("退款状态错误")
|
wxPayRefundResult, err := weChat.HandlePayRefundStatus(refund)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
// 处理订单状态
|
refundStatus = wxPayRefundResult.RefundStatus
|
||||||
switch *refund.Status {
|
successTime = wxPayRefundResult.SuccessTime
|
||||||
case "SUCCESS": // 退款成功
|
|
||||||
refundStatus = 3
|
|
||||||
if refund.SuccessTime != nil {
|
|
||||||
successTime = *refund.SuccessTime
|
|
||||||
}
|
|
||||||
case "CLOSED": // 退款关闭
|
|
||||||
|
|
||||||
refundStatus = 5
|
|
||||||
case "PROCESSING": // 退款处理中
|
|
||||||
refundStatus = 2
|
|
||||||
case "ABNORMAL": // 退款异常
|
|
||||||
return nil, errors.New("退款状态错误")
|
|
||||||
default:
|
|
||||||
return nil, errors.New("退款状态错误")
|
|
||||||
}
|
|
||||||
|
|
||||||
if refund.RefundId == nil {
|
if refund.RefundId == nil {
|
||||||
return nil, errors.New("缺少退款订单编号")
|
return nil, errors.New("缺少退款订单编号")
|
||||||
@ -305,8 +294,8 @@ func (r *OrderSingleService) OrderRefund(tx *gorm.DB, order *model.OrderSingle,
|
|||||||
RefundReason: refundReason,
|
RefundReason: refundReason,
|
||||||
}
|
}
|
||||||
|
|
||||||
if refundStatus == 3 && !successTime.IsZero() {
|
if refundStatus == 3 && successTime != nil {
|
||||||
t := model.LocalTime(successTime)
|
t := model.LocalTime(*successTime)
|
||||||
orderRefund.SuccessTime = &t
|
orderRefund.SuccessTime = &t
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -50,9 +50,9 @@ wechat:
|
|||||||
app-id: wx68affaa9d23528f8
|
app-id: wx68affaa9d23528f8
|
||||||
app-secret: 2963c90242ddb2421c939591ad9e903d
|
app-secret: 2963c90242ddb2421c939591ad9e903d
|
||||||
single-pay-notify-url: callback/wxpay/single # 单项支付回调地址
|
single-pay-notify-url: callback/wxpay/single # 单项支付回调地址
|
||||||
single-refund-notify-url: callback/wxpay/inquiry/refund # 单项退款回调地址
|
single-refund-notify-url: callback/wxpay/single/refund # 单项退款回调地址
|
||||||
member-pay-notify-url: callback/wxpay/single # 会员支付回调地址
|
member-pay-notify-url: callback/wxpay/member # 会员支付回调地址
|
||||||
member-refund-notify-url: callback/wxpay/inquiry/refund # 会员退款回调地址
|
member-refund-notify-url: callback/wxpay/member/refund # 会员退款回调地址
|
||||||
refund-notify-domain: https://dev-hepa.igandan.com/api/
|
refund-notify-domain: https://dev-hepa.igandan.com/api/
|
||||||
pay-1281030301:
|
pay-1281030301:
|
||||||
mch-id: 1281030301
|
mch-id: 1281030301
|
||||||
|
|||||||
@ -6,6 +6,7 @@ import (
|
|||||||
"github.com/wechatpay-apiv3/wechatpay-go/core"
|
"github.com/wechatpay-apiv3/wechatpay-go/core"
|
||||||
"github.com/wechatpay-apiv3/wechatpay-go/core/option"
|
"github.com/wechatpay-apiv3/wechatpay-go/core/option"
|
||||||
"github.com/wechatpay-apiv3/wechatpay-go/services/payments"
|
"github.com/wechatpay-apiv3/wechatpay-go/services/payments"
|
||||||
|
"github.com/wechatpay-apiv3/wechatpay-go/services/refunddomestic"
|
||||||
"github.com/wechatpay-apiv3/wechatpay-go/utils"
|
"github.com/wechatpay-apiv3/wechatpay-go/utils"
|
||||||
"hepa-calc-admin-api/config"
|
"hepa-calc-admin-api/config"
|
||||||
"time"
|
"time"
|
||||||
@ -41,65 +42,63 @@ func createClient() (*core.Client, error) {
|
|||||||
return client, nil
|
return client, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// WxPayResult 支付结果
|
||||||
type WxPayResult struct {
|
type WxPayResult struct {
|
||||||
OrderStatus *int `json:"order_status"` // 订单状态(1:待支付 2:已完成 3:已取消)
|
OrderStatus int `json:"order_status"` // 订单状态(1:待支付 2:已完成 3:已取消)
|
||||||
PayStatus *int `json:"pay_status"` // 支付状态(1:未支付 2:已支付 3:支付中 4:支付失败 5:支付超时 6:支付关闭 7:已撤销 8:转入退款)
|
PayStatus int `json:"pay_status"` // 支付状态(1:未支付 2:已支付 3:支付中 4:支付失败 5:支付超时 6:支付关闭 7:已撤销 8:转入退款)
|
||||||
PayTime *time.Time `json:"pay_time"` // 支付时间
|
PayTime *string `json:"pay_time"` // 支付时间
|
||||||
|
}
|
||||||
|
|
||||||
|
// WxPayRefundResult 退款结果
|
||||||
|
type WxPayRefundResult struct {
|
||||||
|
RefundStatus int `json:"refundStatus"` // 订单退款状态(0:无退款 1:申请退款 2:退款中 3:退款成功 4:拒绝退款 5:退款关闭 6:退款异常 7:部分退款)
|
||||||
|
SuccessTime *time.Time `json:"successTime"` // 退款成功时间
|
||||||
}
|
}
|
||||||
|
|
||||||
// HandlePayStatus 处理支付状态
|
// HandlePayStatus 处理支付状态
|
||||||
func HandlePayStatus(t *payments.Transaction) (w *WxPayResult, err error) {
|
func HandlePayStatus(t *payments.Transaction) (w *WxPayResult, err error) {
|
||||||
// 支付成功
|
|
||||||
if *t.TradeState == "SUCCESS" {
|
|
||||||
orderStatus := 2
|
|
||||||
w.OrderStatus = &orderStatus
|
|
||||||
|
|
||||||
payStatus := 2
|
|
||||||
w.PayStatus = &payStatus
|
|
||||||
|
|
||||||
parse, err := time.Parse("2006-01-02T15:04:05+07:00", *t.SuccessTime)
|
|
||||||
if err != nil {
|
|
||||||
return nil, errors.New("支付时间处理错误")
|
|
||||||
}
|
|
||||||
|
|
||||||
w.PayTime = &parse
|
|
||||||
if err != nil {
|
|
||||||
return nil, errors.New("支付时间错误")
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
switch *t.TradeState {
|
switch *t.TradeState {
|
||||||
case "SUCCESS": // 支付成功
|
case "SUCCESS": // 支付成功
|
||||||
orderStatus := 2
|
w.OrderStatus = 2
|
||||||
w.OrderStatus = &orderStatus
|
w.PayStatus = 2
|
||||||
|
w.PayTime = t.SuccessTime
|
||||||
payStatus := 2
|
|
||||||
w.PayStatus = &payStatus
|
|
||||||
|
|
||||||
parse, err := time.Parse("2006-01-02T15:04:05+07:00", *t.SuccessTime)
|
|
||||||
if err != nil {
|
|
||||||
return nil, errors.New("支付时间处理错误")
|
|
||||||
}
|
|
||||||
|
|
||||||
w.PayTime = &parse
|
|
||||||
if err != nil {
|
|
||||||
return nil, errors.New("支付时间错误")
|
|
||||||
}
|
|
||||||
case "CLOSED": // 已关闭
|
case "CLOSED": // 已关闭
|
||||||
payStatus := 6
|
w.PayStatus = 6
|
||||||
w.PayStatus = &payStatus
|
|
||||||
case "REVOKED": // 已撤销(付款码支付)
|
case "REVOKED": // 已撤销(付款码支付)
|
||||||
payStatus := 7
|
w.PayStatus = 7
|
||||||
w.PayStatus = &payStatus
|
|
||||||
case "USERPAYING": // 用户支付中(付款码支付)
|
case "USERPAYING": // 用户支付中(付款码支付)
|
||||||
payStatus := 3
|
w.PayStatus = 3
|
||||||
w.PayStatus = &payStatus
|
|
||||||
case "PAYERROR": // 支付失败(其他原因,如银行返回失败)
|
case "PAYERROR": // 支付失败(其他原因,如银行返回失败)
|
||||||
payStatus := 4
|
w.PayStatus = 4
|
||||||
w.PayStatus = &payStatus
|
|
||||||
default:
|
default:
|
||||||
return nil, errors.New("未知支付状态")
|
return nil, errors.New("未知支付状态")
|
||||||
}
|
}
|
||||||
|
|
||||||
return w, nil
|
return w, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// HandlePayRefundStatus 处理退款状态
|
||||||
|
func HandlePayRefundStatus(r *refunddomestic.Refund) (w *WxPayRefundResult, err error) {
|
||||||
|
if r.Status == nil {
|
||||||
|
return nil, errors.New("退款状态错误")
|
||||||
|
}
|
||||||
|
|
||||||
|
switch *r.Status {
|
||||||
|
case "SUCCESS": // 退款成功
|
||||||
|
w.RefundStatus = 3
|
||||||
|
if r.SuccessTime != nil {
|
||||||
|
//successTime := r.SuccessTime.Format("2006-01-02 15:04:05")
|
||||||
|
w.SuccessTime = r.SuccessTime
|
||||||
|
}
|
||||||
|
case "CLOSED": // 退款关闭
|
||||||
|
w.RefundStatus = 5
|
||||||
|
case "PROCESSING": // 退款处理中
|
||||||
|
w.RefundStatus = 2
|
||||||
|
case "ABNORMAL": // 退款异常
|
||||||
|
return nil, errors.New("退款状态错误")
|
||||||
|
default:
|
||||||
|
return nil, errors.New("退款状态错误")
|
||||||
|
}
|
||||||
|
|
||||||
|
return w, nil
|
||||||
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user