package localjx import ( "encoding/json" "time" "git.rosy.net.cn/jx-callback/globals" "git.rosy.net.cn/baseapi/platformapi/tonglianpayapi" "git.rosy.net.cn/baseapi/platformapi/wxpayapi" "git.rosy.net.cn/baseapi/utils" "git.rosy.net.cn/jx-callback/business/auth2/authprovider/weixin" "git.rosy.net.cn/jx-callback/business/jxutils/jxcontext" "git.rosy.net.cn/jx-callback/business/model" "git.rosy.net.cn/jx-callback/globals/api" ) func pay4OrderByTL(ctx *jxcontext.Context, order *model.GoodsOrder, vendorPayType string) (orderPay *model.OrderPay, err error) { payCreatedAt := time.Now() // param := &wxpayapi.CreateOrderParam{ // OutTradeNo: utils.Int64ToStr(GenPayOrderID(order)), // Body: getOrderBrief(order), // NotifyURL: globals.TLPayNotifyURL, // SpbillCreateIP: ctx.GetRealRemoteIP(), // TradeType: vendorPayType2WxpayType(vendorPayType), // TotalFee: int(order.ActualPayPrice), // TimeStart: wxpayapi.Time2PayTime(payCreatedAt), // // TimeExpire: wxpayapi.Time2PayTime(payCreatedAt.Add(PayWaitingTime)), // ProfitSharing: wxpayapi.OptYes, // } param := &tonglianpayapi.CreateUnitorderOrderParam{ Trxamt: int(order.ActualPayPrice), NotifyUrl: globals.TLPayNotifyURL, Reqsn: order.VendorOrderID, } if authInfo, err := ctx.GetV2AuthInfo(); err == nil && authInfo.GetAuthType() == weixin.AuthTypeMini { param.Acct = authInfo.GetAuthID() } result, err := api.TLpayAPI.CreateUnitorderOrder(param) if err == nil { result2 := &wxpayapi.CreateOrderResult{} json.Unmarshal([]byte(result.PayInfo), &result2) orderPay = &model.OrderPay{ PayOrderID: param.Reqsn, PayType: model.PayTypeTL, VendorPayType: vendorPayType, VendorOrderID: order.VendorOrderID, VendorID: order.VendorID, Status: 0, PayCreatedAt: payCreatedAt, PrepayID: result2.PrepayID, CodeURL: utils.LimitUTF8StringLen(result.PayInfo, 3200), TotalFee: int(order.ActualPayPrice), } } return orderPay, err } func OnTLPayCallback(msg *wxpayapi.CallbackMsg) (err error) { globals.SugarLogger.Debugf("OnTLPayCallback msg:%s", utils.Format4Output(msg, true)) switch msg.MsgType { case wxpayapi.MsgTypePay: err = onWxpayFinished(msg.Data.(*wxpayapi.PayResultMsg)) case wxpayapi.MsgTypeRefund: err = onWxpayRefund(msg.Data.(*wxpayapi.RefundResultMsg)) } return err }