package localjx import ( "time" "git.rosy.net.cn/baseapi/platformapi/wxpay" "git.rosy.net.cn/baseapi/utils" "git.rosy.net.cn/jx-callback/business/jxutils" "git.rosy.net.cn/jx-callback/business/jxutils/jxcontext" "git.rosy.net.cn/jx-callback/business/model" "git.rosy.net.cn/jx-callback/business/model/dao" "git.rosy.net.cn/jx-callback/globals/api" ) func vendorPayType2WxpayType(vendorPayType string) string { return vendorPayType } func pay4OrderByWX(ctx *jxcontext.Context, order *model.GoodsOrder, vendorPayType string) (orderPay *model.OrderPay, err error) { payCreatedAt := time.Now() param := &wxpay.CreateOrderParam{ Body: "", NotifyURL: "http://callback.test.jxc4.com/wxpay/msg/", OutTradeNo: order.VendorOrderID, SpbillCreateIP: ctx.GetRealRemoteIP(), TradeType: vendorPayType2WxpayType(vendorPayType), TotalFee: int(order.ActualPayPrice), TimeStart: wxpay.Time2PayTime(payCreatedAt), // TimeExpire: wxpay.Time2PayTime(payCreatedAt.Add(PayWaitingTime)), } result, err := api.WxpayAPI.CreateUnifiedOrder(param) if err == nil { orderPay = &model.OrderPay{ VendorOrderID: order.VendorOrderID, VendorID: order.VendorID, PayType: model.PayTypeWX, VendorPayType: vendorPayType, Status: 0, PayCreatedAt: payCreatedAt, PrepayID: result.PrepayID, CodeURL: result.CodeURL, } dao.WrapAddIDCULDEntity(orderPay, ctx.GetUserName()) err = dao.CreateEntity(dao.GetDB(), orderPay) } return orderPay, err } func OnWxPayCallback(msg *wxpay.CallbackMsg) (err error) { return err } func onWxpayFinished(msg *wxpay.PayResultMsg) (err error) { orderPay := &model.OrderPay{ VendorOrderID: msg.OutTradeNo, VendorID: jxutils.GetPossibleVendorIDFromVendorOrderID(msg.OutTradeNo), PayType: model.PayTypeWX, } orderPay.DeletedAt = utils.DefaultTimeValue db := dao.GetDB() if err = dao.GetEntity(db, orderPay, "VendorOrderID", "VendorID", "PayType", "DeletedAt"); err == nil { orderPay.VendorPayType = msg.TradeType orderPay.PayFinishedAt = utils.Time2Pointer(wxpay.PayTime2Time(msg.TimeEnd)) orderPay.Status = model.PayStatusYes dao.UpdateEntity(db, orderPay) err = OnPayFinished(orderPay) } return err }