67 lines
1.7 KiB
Go
67 lines
1.7 KiB
Go
package do
|
|
|
|
import (
|
|
"PaymentCenter/app/constants/common"
|
|
"PaymentCenter/app/constants/errorcode"
|
|
"PaymentCenter/app/services"
|
|
|
|
"PaymentCenter/app/models/ordersmodel"
|
|
"PaymentCenter/app/third/paymentService"
|
|
)
|
|
|
|
type Pay struct {
|
|
paycheck *PayCheck
|
|
Order *ordersmodel.Orders
|
|
PayCode int
|
|
}
|
|
|
|
func NewPay(paycheck *PayCheck) *Pay {
|
|
return &Pay{
|
|
paycheck: paycheck,
|
|
PayCode: errorcode.Success,
|
|
}
|
|
}
|
|
|
|
func (w *Pay) CreateOrder() {
|
|
w.Order, w.PayCode = services.OrderCreate(&ordersmodel.Orders{
|
|
MerchantId: w.paycheck.Merchant.Id,
|
|
PayChannelId: w.paycheck.Channel.Id,
|
|
AppId: w.paycheck.Channel.Id,
|
|
OutTreadNo: w.paycheck.WebPayReqs.OutTradeNo,
|
|
OrderType: w.paycheck.WebPayReqs.OrderType,
|
|
Amount: w.paycheck.WebPayReqs.Amount,
|
|
ExtJson: w.paycheck.WebPayReqs.ExtJson,
|
|
Desc: w.paycheck.WebPayReqs.Desc,
|
|
Status: common.ORDER_STATUS_WAITPAY,
|
|
},
|
|
)
|
|
}
|
|
|
|
func (w *Pay) Pay() {
|
|
var (
|
|
payFunc func(commonPayInfo *paymentService.PayOrderRequest, ExtJson string) error
|
|
ok bool
|
|
)
|
|
thirdPay := &paymentService.PayOrderRequest{
|
|
PayChannelId: w.paycheck.WebPayReqs.PayChannelId,
|
|
OrderId: w.Order.Id,
|
|
ChannelType: w.paycheck.Channel.ChannelType,
|
|
Description: w.Order.Desc,
|
|
Amount: w.Order.Amount,
|
|
PayerClientIp: w.paycheck.AppCheck.Ip,
|
|
}
|
|
if payFunc, ok = PayWayList[w.paycheck.Channel.ChannelType]; !ok {
|
|
w.PayCode = errorcode.PayChannelNotBuild
|
|
return
|
|
}
|
|
err := payFunc(thirdPay, w.paycheck.Channel.ExtJson)
|
|
if err != nil {
|
|
w.PayCode = errorcode.PayChannelExtJsonError
|
|
return
|
|
}
|
|
res := paymentService.PaymentService(*w.paycheck.ctx, *thirdPay)
|
|
// payCommon.PAY_SUCCESS_CODE
|
|
w.PayCode = res.Code
|
|
return
|
|
}
|