<feat>解除pay和paycheck之间的强关联性
This commit is contained in:
parent
50ef2fd13a
commit
1630304f3d
|
@ -7,24 +7,46 @@ import (
|
||||||
"PaymentCenter/app/models/paychannelmodel"
|
"PaymentCenter/app/models/paychannelmodel"
|
||||||
"PaymentCenter/app/services"
|
"PaymentCenter/app/services"
|
||||||
"PaymentCenter/app/third/paymentService/payCommon"
|
"PaymentCenter/app/third/paymentService/payCommon"
|
||||||
|
"context"
|
||||||
|
|
||||||
"PaymentCenter/app/models/ordersmodel"
|
"PaymentCenter/app/models/ordersmodel"
|
||||||
"PaymentCenter/app/third/paymentService"
|
"PaymentCenter/app/third/paymentService"
|
||||||
)
|
)
|
||||||
|
|
||||||
type Pay struct {
|
type PayParam struct {
|
||||||
Merchant *merchantmodel.Merchant
|
Merchant *merchantmodel.Merchant
|
||||||
Channel *paychannelmodel.PayChannel
|
Channel *paychannelmodel.PayChannel
|
||||||
|
App_id int64
|
||||||
|
OutTradeNo string
|
||||||
|
Amount int
|
||||||
|
ExtJson string
|
||||||
|
Desc string
|
||||||
|
ClientIp string
|
||||||
|
}
|
||||||
|
|
||||||
paycheck *PayCheck
|
type Pay struct {
|
||||||
|
ctx *context.Context
|
||||||
|
PayParam *PayParam
|
||||||
|
RelationOrder *ordersmodel.Orders
|
||||||
Order *ordersmodel.Orders
|
Order *ordersmodel.Orders
|
||||||
PayCode int
|
PayCode int
|
||||||
Url string
|
Url string
|
||||||
}
|
}
|
||||||
|
|
||||||
func NewPay(paycheck *PayCheck) *Pay {
|
func NewPayWithPayCheck(paycheck *PayCheck) *Pay {
|
||||||
return &Pay{
|
return &Pay{
|
||||||
paycheck: paycheck,
|
ctx: paycheck.ctx,
|
||||||
|
PayParam: &PayParam{
|
||||||
|
Merchant: paycheck.Merchant,
|
||||||
|
Channel: paycheck.Channel,
|
||||||
|
App_id: paycheck.Reqs.AppId,
|
||||||
|
OutTradeNo: paycheck.Reqs.OutTradeNo,
|
||||||
|
Amount: paycheck.Reqs.Amount,
|
||||||
|
ExtJson: paycheck.Reqs.ExtJson,
|
||||||
|
Desc: paycheck.Reqs.Desc,
|
||||||
|
ClientIp: paycheck.AppCheck.Ip,
|
||||||
|
},
|
||||||
|
RelationOrder: paycheck.OldOrder,
|
||||||
PayCode: errorcode.Success,
|
PayCode: errorcode.Success,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -35,14 +57,14 @@ func (w *Pay) CreateOrder(order_type int) {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
w.Order, w.PayCode = services.OrderCreate(&ordersmodel.Orders{
|
w.Order, w.PayCode = services.OrderCreate(&ordersmodel.Orders{
|
||||||
MerchantId: w.paycheck.Merchant.Id,
|
MerchantId: w.PayParam.Merchant.Id,
|
||||||
PayChannelId: w.paycheck.Channel.Id,
|
PayChannelId: w.PayParam.Channel.Id,
|
||||||
AppId: w.paycheck.Reqs.AppId,
|
AppId: w.PayParam.App_id,
|
||||||
OutTreadNo: w.paycheck.Reqs.OutTradeNo,
|
OutTreadNo: w.PayParam.OutTradeNo,
|
||||||
OrderType: order_type,
|
OrderType: order_type,
|
||||||
Amount: w.paycheck.Reqs.Amount,
|
Amount: w.PayParam.Amount,
|
||||||
ExtJson: w.paycheck.Reqs.ExtJson,
|
ExtJson: w.PayParam.ExtJson,
|
||||||
Desc: w.paycheck.Reqs.Desc,
|
Desc: w.PayParam.Desc,
|
||||||
Status: common.ORDER_STATUS_WAITPAY,
|
Status: common.ORDER_STATUS_WAITPAY,
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
|
@ -54,23 +76,23 @@ func (w *Pay) PayUrl() (url string) {
|
||||||
ok bool
|
ok bool
|
||||||
)
|
)
|
||||||
thirdPay := &paymentService.PayOrderRequest{
|
thirdPay := &paymentService.PayOrderRequest{
|
||||||
PayChannelId: w.paycheck.Reqs.PayChannelId,
|
PayChannelId: w.PayParam.Channel.Id,
|
||||||
OrderId: w.Order.Id,
|
OrderId: w.Order.Id,
|
||||||
ChannelType: w.paycheck.Channel.ChannelType,
|
ChannelType: w.PayParam.Channel.ChannelType,
|
||||||
Description: w.Order.Desc,
|
Description: w.Order.Desc,
|
||||||
Amount: w.Order.Amount,
|
Amount: w.Order.Amount,
|
||||||
PayerClientIp: w.paycheck.AppCheck.Ip,
|
PayerClientIp: w.PayParam.ClientIp,
|
||||||
}
|
}
|
||||||
if payFunc, ok = PayWayList[w.paycheck.Channel.ChannelType]; !ok {
|
if payFunc, ok = PayWayList[w.PayParam.Channel.ChannelType]; !ok {
|
||||||
w.PayCode = errorcode.PayChannelNotBuild
|
w.PayCode = errorcode.PayChannelNotBuild
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
err := payFunc(thirdPay, w.paycheck.Channel)
|
err := payFunc(thirdPay, w.PayParam.Channel)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
w.PayCode = errorcode.PayChannelExtJsonError
|
w.PayCode = errorcode.PayChannelExtJsonError
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
res := paymentService.PaymentService(*w.paycheck.ctx, *thirdPay)
|
res := paymentService.PaymentService(*w.ctx, *thirdPay)
|
||||||
|
|
||||||
if res.Code == payCommon.PAY_SUCCESS_CODE {
|
if res.Code == payCommon.PAY_SUCCESS_CODE {
|
||||||
w.Order.Status = common.ORDER_STATUS_PAYING
|
w.Order.Status = common.ORDER_STATUS_PAYING
|
||||||
|
@ -93,21 +115,21 @@ func (w *Pay) Refund() {
|
||||||
)
|
)
|
||||||
thirdPayRefund := &paymentService.OrderRefundRequest{
|
thirdPayRefund := &paymentService.OrderRefundRequest{
|
||||||
OrderId: w.Order.Id,
|
OrderId: w.Order.Id,
|
||||||
RefundOrderId: w.paycheck.OldOrder.Id,
|
RefundOrderId: w.RelationOrder.Id,
|
||||||
RefundReason: w.paycheck.Reqs.Desc,
|
RefundReason: w.PayParam.Desc,
|
||||||
RefundAmount: int64(w.paycheck.Reqs.Amount),
|
RefundAmount: int64(w.PayParam.Amount),
|
||||||
PayChannel: w.paycheck.Channel.ChannelType,
|
PayChannel: w.PayParam.Channel.ChannelType,
|
||||||
}
|
}
|
||||||
if refundFunc, ok = RefundWayList[w.paycheck.Channel.ChannelType]; !ok {
|
if refundFunc, ok = RefundWayList[w.PayParam.Channel.ChannelType]; !ok {
|
||||||
w.PayCode = errorcode.PayChannelNotBuild
|
w.PayCode = errorcode.PayChannelNotBuild
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
err := refundFunc(thirdPayRefund, w.paycheck.Channel)
|
err := refundFunc(thirdPayRefund, w.PayParam.Channel)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
w.PayCode = errorcode.PayChannelExtJsonError
|
w.PayCode = errorcode.PayChannelExtJsonError
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
res := paymentService.OrderRefund(*w.paycheck.ctx, *thirdPayRefund)
|
res := paymentService.OrderRefund(*w.ctx, *thirdPayRefund)
|
||||||
if res.Code == payCommon.PAY_SUCCESS_CODE {
|
if res.Code == payCommon.PAY_SUCCESS_CODE {
|
||||||
w.Order.Status = common.ORDER_STATUS_PAYING
|
w.Order.Status = common.ORDER_STATUS_PAYING
|
||||||
code := services.OrderUpdate(w.Order, "status")
|
code := services.OrderUpdate(w.Order, "status")
|
||||||
|
|
|
@ -104,7 +104,7 @@ func (w *PayCheck) GetOrder() {
|
||||||
w.CheckCode = code
|
w.CheckCode = code
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
if code == errorcode.OrdersExist {
|
if code == errorcode.Success {
|
||||||
w.OldOrder = order
|
w.OldOrder = order
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -58,14 +58,14 @@ func ThirdPayRefund(ctx context.Context, refundReq *front.RefundReqs, appCheck *
|
||||||
if check.CheckCode != errorcode.Success {
|
if check.CheckCode != errorcode.Success {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
refund = thirdpay.NewPay(check)
|
refund = thirdpay.NewPayWithPayCheck(check)
|
||||||
refund.CreateOrder(common.ORDER_TYPE_REFUND)
|
refund.CreateOrder(common.ORDER_TYPE_REFUND)
|
||||||
refund.Refund()
|
refund.Refund()
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
func ThirdPay(check *thirdpay.PayCheck) (pay *thirdpay.Pay) {
|
func ThirdPay(check *thirdpay.PayCheck) (pay *thirdpay.Pay) {
|
||||||
pay = thirdpay.NewPay(check)
|
pay = thirdpay.NewPayWithPayCheck(check)
|
||||||
// 创建订单
|
// 创建订单
|
||||||
if &check.OldOrder != nil {
|
if &check.OldOrder != nil {
|
||||||
pay.CreateOrder(common.ORDER_TYPE_PAY)
|
pay.CreateOrder(common.ORDER_TYPE_PAY)
|
||||||
|
|
Loading…
Reference in New Issue