1
This commit is contained in:
254
business/partner/purchase/jx/localjx/lakala_pay.go
Normal file
254
business/partner/purchase/jx/localjx/lakala_pay.go
Normal file
@@ -0,0 +1,254 @@
|
||||
package localjx
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"git.rosy.net.cn/baseapi/platformapi/lakala"
|
||||
"git.rosy.net.cn/baseapi/utils"
|
||||
"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/business/partner"
|
||||
"git.rosy.net.cn/jx-callback/globals/api"
|
||||
"strings"
|
||||
"time"
|
||||
)
|
||||
|
||||
// RefundBarCodeScannerOrderByLaKaLa 拉卡拉扫码枪退款
|
||||
func RefundBarCodeScannerOrderByLaKaLa(ctx *jxcontext.Context, vendorOrderId string, skuIds map[int]int, reason string) (err error) {
|
||||
db := dao.GetDB()
|
||||
txDB, _ := dao.Begin(db)
|
||||
defer func() {
|
||||
if r := recover(); r != nil || err != nil {
|
||||
dao.Rollback(db, txDB)
|
||||
if r != nil {
|
||||
panic(r)
|
||||
}
|
||||
}
|
||||
}()
|
||||
|
||||
goodsOrder, err := partner.CurOrderManager.LoadOrder(vendorOrderId, model.VendorIDJX)
|
||||
if err != nil {
|
||||
dao.Rollback(db, txDB)
|
||||
return err
|
||||
}
|
||||
|
||||
// 检查订单售后
|
||||
refundType, refundMoney, err := checkJxAfsOrder(db, goodsOrder, vendorOrderId, skuIds)
|
||||
if err != nil {
|
||||
dao.Rollback(db, txDB)
|
||||
return err
|
||||
}
|
||||
|
||||
// 本地添加售后数据
|
||||
afsOrder, orderSkuFinancial, afsOrderSkuFinancial, err := addRefundSku(ctx, goodsOrder, skuIds, reason, refundType)
|
||||
if err != nil {
|
||||
dao.Rollback(db, txDB)
|
||||
return err
|
||||
}
|
||||
|
||||
// 通知退款,等待回传
|
||||
incoming, err := dao.GetStoreInfoByMerchantID(db, "", goodsOrder.JxStoreID, "", "")
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
param := &lakala.RefundOrderReq{
|
||||
MerchantNo: incoming.MerchantNo,
|
||||
TermNo: incoming.TermNo,
|
||||
OutTradeNo: afsOrder.AfsOrderID,
|
||||
RefundAmount: utils.Int2Str(refundMoney),
|
||||
OriginBizType: "3",
|
||||
OriginTradeDate: goodsOrder.OrderCreatedAt.Format("20060102"),
|
||||
OriginLogNo: "",
|
||||
OriginTradeNo: "",
|
||||
OriginCardNo: "",
|
||||
LocationInfo: nil,
|
||||
RefundType: "",
|
||||
}
|
||||
|
||||
_, err = api.LaKaLaApi.RefundOrder(param)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
if err = dao.CreateEntity(db, afsOrder); err != nil {
|
||||
dao.Rollback(db, txDB)
|
||||
return err
|
||||
}
|
||||
if err = dao.CreateMultiEntities(db, orderSkuFinancial); err != nil {
|
||||
dao.Rollback(db, txDB)
|
||||
return err
|
||||
}
|
||||
if err = dao.CreateMultiEntities(db, afsOrderSkuFinancial); err != nil {
|
||||
dao.Rollback(db, txDB)
|
||||
return err
|
||||
}
|
||||
goodsOrder.TotalShopMoney -= int64(refundMoney)
|
||||
dao.UpdateEntity(db, goodsOrder, "TotalShopMoney")
|
||||
dao.Commit(db, txDB)
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
// QueryBarCodeRefundStatus 退款订单状态查询
|
||||
func QueryBarCodeRefundStatus(afsOrderID string) (resp []*lakala.RefundOrderQueryResp, err error) {
|
||||
db := dao.GetDB()
|
||||
txDB, _ := dao.Begin(db)
|
||||
defer func() {
|
||||
if r := recover(); r != nil || err != nil {
|
||||
dao.Rollback(db, txDB)
|
||||
if r != nil {
|
||||
panic(r)
|
||||
}
|
||||
}
|
||||
}()
|
||||
|
||||
afsOrder, err := partner.CurOrderManager.LoadAfsOrder(afsOrderID, model.VendorIDJX)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
goodsOrder, err := partner.CurOrderManager.LoadOrder(afsOrder.VendorOrderID, model.VendorIDJX)
|
||||
if err != nil {
|
||||
dao.Rollback(db, txDB)
|
||||
return nil, err
|
||||
}
|
||||
// 通知退款,等待回传
|
||||
incoming, err := dao.GetStoreInfoByMerchantID(db, "", goodsOrder.JxStoreID, "", "")
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
param := &lakala.RefundOrderQueryReq{
|
||||
MerchantNo: incoming.MerchantNo,
|
||||
TermNo: incoming.TermNo,
|
||||
OutTradeNo: lakala.GetOrderNumber(8),
|
||||
OriginTradeDate: afsOrder.AfsCreatedAt.Format("20060102"),
|
||||
OriginBizType: "3",
|
||||
OriginTradeNo: "",
|
||||
OriginTradeRefNo: "",
|
||||
OriginOutTradeNo: afsOrderID,
|
||||
}
|
||||
result, err := api.LaKaLaApi.RefundOrderQuery(param)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
for _, v := range result {
|
||||
if v.OutTradeNo == afsOrderID && v.TradeState == "SUCCESS" {
|
||||
afsOrder.Status = model.AfsOrderStatusFinished
|
||||
afsOrder.VendorStatus = v.TradeState
|
||||
afsOrder.AfsFinishedAt = time.Now()
|
||||
dao.UpdateEntity(db, afsOrder, "Status", "VendorStatus", "AfsFinishedAt")
|
||||
}
|
||||
}
|
||||
|
||||
return result, err
|
||||
}
|
||||
|
||||
// BarCodeScannerPayByLaKaLa 拉卡拉扫码枪扫码
|
||||
func BarCodeScannerPayByLaKaLa(ctx *jxcontext.Context, vendorOrderId, userPaymentLabel, ip string) (string, error) {
|
||||
db := dao.GetDB()
|
||||
goodsOrder, err := dao.GetSimpleOrder(db, vendorOrderId)
|
||||
if err != nil {
|
||||
return "", err
|
||||
}
|
||||
if goodsOrder.VendorID != model.VendorIDJX {
|
||||
return "", fmt.Errorf("此订单不是京西订单,无法使用该功能")
|
||||
}
|
||||
|
||||
merchantObj, err := dao.GetStoreInfoByMerchantID(db, "", goodsOrder.JxStoreID, "", "")
|
||||
if err != nil {
|
||||
return "", err
|
||||
}
|
||||
parma := &lakala.PayMicroPayReq{
|
||||
MerchantNo: merchantObj.MerchantNo,
|
||||
TermNo: merchantObj.TermNo,
|
||||
OutTradeNo: goodsOrder.VendorOrderID,
|
||||
AuthCode: userPaymentLabel,
|
||||
TotalAmount: utils.Int64ToStr(goodsOrder.ActualPayPrice),
|
||||
LocationInfo: lakala.LocationInfoObj{
|
||||
RequestIp: ip,
|
||||
},
|
||||
NotifyUrl: lakala.PayStatusCallback,
|
||||
SettleType: "1",
|
||||
Subject: fmt.Sprintf("感谢您在本店%s消费,欢迎下次再来", goodsOrder.StoreName),
|
||||
}
|
||||
code, msg, payOrderId, err := api.LaKaLaApi.ScannerPayMicroPay(parma)
|
||||
if code == lakala.PaySuccess {
|
||||
goodsOrder.Status = model.OrderStatusFinished
|
||||
goodsOrder.VendorStatus = code
|
||||
goodsOrder.OrderFinishedAt = time.Now()
|
||||
dao.UpdateEntity(db, goodsOrder, "Status", "VendorStatus", "OrderFinishedAt")
|
||||
return "支付成功", nil
|
||||
}
|
||||
|
||||
vendorPayType := ""
|
||||
if strings.Contains(userPaymentLabel, "101112131415") {
|
||||
vendorPayType = lakala.Wechat
|
||||
} else {
|
||||
vendorPayType = lakala.Alipay
|
||||
}
|
||||
payInfo := &model.OrderPay{
|
||||
PayOrderID: payOrderId,
|
||||
PayType: model.PayTypeLaKaLa,
|
||||
VendorPayType: vendorPayType,
|
||||
TransactionID: userPaymentLabel,
|
||||
VendorOrderID: goodsOrder.VendorOrderID,
|
||||
VendorID: goodsOrder.VendorID,
|
||||
Status: 0,
|
||||
PayCreatedAt: time.Now(),
|
||||
PrepayID: userPaymentLabel,
|
||||
CodeURL: "",
|
||||
TotalFee: int(goodsOrder.ActualPayPrice),
|
||||
}
|
||||
dao.WrapAddIDCULDEntity(payInfo, ctx.GetUserName())
|
||||
dao.CreateEntity(db, payInfo)
|
||||
|
||||
return msg, err
|
||||
}
|
||||
|
||||
// LaKaLaBarCodeScannerStatus 刷新当前订单的支付状态
|
||||
func LaKaLaBarCodeScannerStatus(vendorOrderId string) (vendorStatus string, err error) {
|
||||
db := dao.GetDB()
|
||||
goodsOrder, err := dao.GetSimpleOrder(db, vendorOrderId)
|
||||
if err != nil {
|
||||
return "", err
|
||||
}
|
||||
if goodsOrder.VendorID != model.VendorIDJX {
|
||||
return "", fmt.Errorf("此订单不是京西订单,无法使用该功能")
|
||||
}
|
||||
|
||||
merchantObj, err := dao.GetStoreInfoByMerchantID(db, "", goodsOrder.JxStoreID, "", "")
|
||||
if err != nil {
|
||||
return "", err
|
||||
}
|
||||
param := &lakala.PayStatusQueryReq{
|
||||
MerchantNo: merchantObj.MerchantNo,
|
||||
TermNo: merchantObj.TermNo,
|
||||
OutTradeNo: goodsOrder.VendorOrderID,
|
||||
TradeNo: "",
|
||||
}
|
||||
result, err := api.LaKaLaApi.PayStatusQuery(param)
|
||||
if err != nil {
|
||||
return "", err
|
||||
}
|
||||
|
||||
switch result.TradeState {
|
||||
case lakala.PayStatusINIT, lakala.PayStatusCREATE, lakala.PayStatusDEAL:
|
||||
goodsOrder.Status = model.OrderStatusWaitPay
|
||||
goodsOrder.VendorStatus = lakala.PayStatusINIT
|
||||
case lakala.PayStatusSUCCESS, lakala.PayStatusPARTREFUND:
|
||||
goodsOrder.Status = model.OrderStatusFinished
|
||||
goodsOrder.VendorStatus = lakala.PayStatusSUCCESS
|
||||
goodsOrder.OrderFinishedAt = time.Now()
|
||||
case lakala.PayStatusFAIL, lakala.PayStatusCLOSE, lakala.PayStatusREFUND:
|
||||
goodsOrder.Status = model.OrderStatusCanceled
|
||||
goodsOrder.VendorStatus = lakala.PayStatusFAIL
|
||||
goodsOrder.OrderFinishedAt = time.Now()
|
||||
case lakala.PayStatusUNKNOWN:
|
||||
|
||||
}
|
||||
dao.UpdateEntity(db, goodsOrder, "Status", "VendorStatus", "OrderFinishedAt")
|
||||
partner.CurOrderManager.OnOrderMsg(goodsOrder, result.TradeState, fmt.Sprintf("扫码枪扫码刷新结果:[code:%s,说明:%s,异常原因:%s],本地状态[%d]", result.TradeState, result.TradeStateDesc, "", goodsOrder.Status))
|
||||
|
||||
return result.TradeStateDesc, err
|
||||
}
|
||||
214
business/partner/purchase/jx/localjx/lakala_pay_mini.go
Normal file
214
business/partner/purchase/jx/localjx/lakala_pay_mini.go
Normal file
@@ -0,0 +1,214 @@
|
||||
package localjx
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
"git.rosy.net.cn/baseapi/platformapi/lakala"
|
||||
"git.rosy.net.cn/jx-callback/business/partner"
|
||||
"strings"
|
||||
"time"
|
||||
|
||||
"git.rosy.net.cn/jx-callback/globals"
|
||||
|
||||
"git.rosy.net.cn/baseapi/platformapi/tonglianpayapi"
|
||||
"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/business/model/dao"
|
||||
"git.rosy.net.cn/jx-callback/globals/api"
|
||||
"github.com/astaxie/beego/client/orm"
|
||||
)
|
||||
|
||||
func pay4OrderByLaKaLa(ctx *jxcontext.Context, order *model.GoodsOrder, payType int, vendorPayType, subAppID, code, source, ip string) (orderPay *model.OrderPay, err error) {
|
||||
merchantObj, err := dao.GetStoreInfoByMerchantID(dao.GetDB(), "", order.JxStoreID, "", "")
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
param := &lakala.AggregatePayReq{
|
||||
MerchantNo: merchantObj.MerchantNo,
|
||||
TermNo: merchantObj.TermNo,
|
||||
OutTradeNo: order.VendorOrderID,
|
||||
TotalAmount: utils.Int64ToStr(order.ActualPayPrice),
|
||||
LocationInfo: lakala.LocationInfoObj{
|
||||
RequestIp: ip,
|
||||
},
|
||||
NotifyUrl: lakala.PayStatusCallback,
|
||||
Subject: fmt.Sprintf("感谢您在本店%s消费,欢迎下次再来", order.StoreName),
|
||||
SettleType: "1",
|
||||
AccBusiFields: nil,
|
||||
}
|
||||
|
||||
if vendorPayType == tonglianpayapi.PayTypeWxXcx || vendorPayType == "JSAPI" || vendorPayType == tonglianpayapi.PayTypeWxCode {
|
||||
accBusiFeilds := &lakala.AccBusiFieldsByWeChat{
|
||||
TimeoutExpress: "15",
|
||||
SubAppid: subAppID,
|
||||
}
|
||||
if source == "pc" || vendorPayType == "JSAPI" {
|
||||
accBusiFeilds.DeviceInfo = "WEB"
|
||||
}
|
||||
switch vendorPayType {
|
||||
case "JSAPI":
|
||||
param.TransType = "51"
|
||||
case tonglianpayapi.PayTypeWxXcx:
|
||||
param.TransType = "71"
|
||||
}
|
||||
|
||||
authInfo, err := ctx.GetV2AuthInfo()
|
||||
// 微信小程序支付
|
||||
if err == nil && authInfo.GetAuthType() == weixin.AuthTypeMini && authInfo.GetAuthTypeID() == subAppID {
|
||||
accBusiFeilds.UserId = authInfo.GetAuthID()
|
||||
}
|
||||
if code != "" {
|
||||
appAuth := strings.Split(code, "_")
|
||||
sessionInfo, err := weixin.GetAPI(appAuth[0]).SNSCode2Session(appAuth[1])
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
accBusiFeilds.UserId = sessionInfo.OpenID
|
||||
}
|
||||
param.AccBusiFields = accBusiFeilds
|
||||
param.AccountType = lakala.Wechat
|
||||
}
|
||||
|
||||
// 支付宝暂时不关注小程序
|
||||
//if vendorPayType == tonglianpayapi.PayTypeZfbJS || vendorPayType == tonglianpayapi.PayTypeZfbApp {
|
||||
// accBusiFeilds := &lakala.AccBusiFieldsByAliPay{
|
||||
// TimeoutExpress: "15",
|
||||
// UserId: openId,
|
||||
// }
|
||||
// param.AccBusiFields = accBusiFeilds
|
||||
//}
|
||||
|
||||
result, err := api.LaKaLaApi.AggregatePay(param)
|
||||
if err == nil {
|
||||
orderPay = &model.OrderPay{
|
||||
PayOrderID: param.OutTradeNo,
|
||||
PayType: payType,
|
||||
VendorPayType: vendorPayType,
|
||||
TransactionID: result.LogNo,
|
||||
VendorOrderID: order.VendorOrderID,
|
||||
VendorID: order.VendorID,
|
||||
Status: 0,
|
||||
PayCreatedAt: time.Now(),
|
||||
PrepayID: result.TradeNo,
|
||||
CodeURL: "",
|
||||
TotalFee: int(order.ActualPayPrice),
|
||||
}
|
||||
if result.AccRespFields != nil {
|
||||
fields, _ := json.Marshal(result.AccRespFields)
|
||||
orderPay.CodeURL = utils.LimitUTF8StringLen(string(fields), 3200)
|
||||
}
|
||||
}
|
||||
return orderPay, err
|
||||
}
|
||||
|
||||
func OnLaKaLaPayCallback(call *lakala.PayStatusCallBack) (err error) {
|
||||
switch call.TradeStatus {
|
||||
case lakala.PayStatusSUCCESS, lakala.PayStatusFAIL: // 支付成功 FAIL-交易失败
|
||||
err = onLaKaLaPayFinished(call)
|
||||
case lakala.PayStatusCLOSE, lakala.PayStatusREVOKED, lakala.PayStatusREFUND: // CLOSE-订单关闭 REVOKED-订单撤销
|
||||
err = onLaKaLaOrderCancel(call)
|
||||
case lakala.PayStatusPARTREFUND: // PART_REFUND-部分退款 REFUND-全部退款
|
||||
err = onLaKaLaPayRefund(call)
|
||||
default:
|
||||
//INIT-初始化 CREATE-下单成功 DEAL-交易处理中 UNKNOWN-未知状态
|
||||
return nil
|
||||
}
|
||||
|
||||
return err
|
||||
}
|
||||
|
||||
// onLaKaLaPayFinished 订单支付成功或失败
|
||||
func onLaKaLaPayFinished(call *lakala.PayStatusCallBack) (err error) {
|
||||
orderPay := &model.OrderPay{
|
||||
PayOrderID: call.OutTradeNo,
|
||||
}
|
||||
orderPay.DeletedAt = utils.DefaultTimeValue
|
||||
db := dao.GetDB()
|
||||
if err = dao.GetEntity(db, orderPay, "PayOrderID", "DeletedAt"); err == nil {
|
||||
if orderPay.Status != 0 {
|
||||
return err
|
||||
}
|
||||
loc, _ := time.LoadLocation("Local")
|
||||
t1, _ := time.ParseInLocation("20060102150405", call.TradeTime, loc)
|
||||
orderPay.PayFinishedAt = utils.Time2Pointer(t1)
|
||||
orderPay.OriginalData = utils.Format4Output(call, true)
|
||||
if call.TradeStatus == lakala.PayStatusSUCCESS {
|
||||
orderPay.Status = model.PayStatusYes
|
||||
} else {
|
||||
orderPay.Status = model.PayStatusFailed
|
||||
}
|
||||
dao.UpdateEntity(db, orderPay)
|
||||
if call.TradeStatus == lakala.PayStatusSUCCESS {
|
||||
err = OnPayFinished(orderPay)
|
||||
}
|
||||
} else {
|
||||
globals.SugarLogger.Debugf("onTLpayFinished msg:%s, err:%v", utils.Format4Output(call, true), err)
|
||||
}
|
||||
return err
|
||||
}
|
||||
|
||||
// onLaKaLaOrderCancel 订单取消或撤单
|
||||
func onLaKaLaOrderCancel(call *lakala.PayStatusCallBack) (err error) {
|
||||
orderPay := &model.OrderPay{
|
||||
PayOrderID: call.OutTradeNo,
|
||||
}
|
||||
orderPay.DeletedAt = utils.DefaultTimeValue
|
||||
db := dao.GetDB()
|
||||
if err = dao.GetEntity(db, orderPay, "PayOrderID", "DeletedAt"); err == nil {
|
||||
orderPay.Status = model.RefundStatusFailed
|
||||
orderPay.PayFinishedAt = utils.Time2Pointer(time.Now())
|
||||
dao.UpdateEntity(db, orderPay, "Status", "PayFinishedAt")
|
||||
order, _ := partner.CurOrderManager.LoadOrder(orderPay.VendorOrderID, orderPay.VendorID)
|
||||
order.Status = model.OrderStatusCanceled
|
||||
order.VendorStatus = call.TradeStatus
|
||||
order.OrderFinishedAt = time.Now()
|
||||
dao.UpdateEntity(db, order, "Status", "VendorStatus", "OrderFinishedAt")
|
||||
}
|
||||
return err
|
||||
}
|
||||
|
||||
func onLaKaLaPayRefund(call *lakala.PayStatusCallBack) (err error) {
|
||||
orderPayRefund := &model.OrderPayRefund{
|
||||
RefundID: call.OutTradeNo,
|
||||
}
|
||||
db := dao.GetDB()
|
||||
if err = dao.GetEntity(db, orderPayRefund, "RefundID"); err != nil && err == orm.ErrNoRows {
|
||||
orderPayRefund = &model.OrderPayRefund{
|
||||
RefundID: call.OutTradeNo,
|
||||
VendorRefundID: call.AccTradeNo,
|
||||
VendorOrderID: call.OutTradeNo,
|
||||
VendorID: model.VendorIDJX,
|
||||
TransactionID: call.LogNo,
|
||||
Status: model.RefundStatusYes,
|
||||
RefundCreatedAt: time.Now(),
|
||||
RefundFinishedAt: utils.Time2Pointer(time.Now()),
|
||||
RefundFee: utils.Str2Int(call.PayerAmount),
|
||||
OriginalData: "",
|
||||
}
|
||||
dao.WrapAddIDCULDEntity(orderPayRefund, "system")
|
||||
dao.CreateEntity(db, orderPayRefund)
|
||||
}
|
||||
|
||||
order, _ := partner.CurOrderManager.LoadOrder(call.OutTradeNo, model.VendorIDJX)
|
||||
afsOrder, _ := partner.CurOrderManager.LoadAfsOrder(call.OutTradeNo, model.VendorIDJX)
|
||||
if call.TradeStatus == lakala.PayStatusREFUND {
|
||||
order.Status = model.OrderStatusCanceled
|
||||
orderPayRefund.Status = model.PayStatusRefund
|
||||
}
|
||||
order.OrderFinishedAt = time.Now()
|
||||
order.VendorStatus = call.TradeStatus
|
||||
|
||||
afsOrder.Status = model.AfsOrderStatusFinished
|
||||
afsOrder.AfsFinishedAt = time.Now()
|
||||
afsOrder.VendorStatus = call.TradeStatus
|
||||
|
||||
orderPayRefund.RefundFinishedAt = utils.Time2Pointer(time.Now())
|
||||
dao.UpdateEntity(db, order, "Status", "VendorStatus", "OrderFinishedAt")
|
||||
dao.UpdateEntity(db, afsOrder, "Status", "VendorStatus", "AfsFinishedAt")
|
||||
dao.UpdateEntity(db, orderPayRefund, "Status", "RefundFinishedAt")
|
||||
return err
|
||||
}
|
||||
@@ -4,6 +4,7 @@ import (
|
||||
"errors"
|
||||
"fmt"
|
||||
"math"
|
||||
"net"
|
||||
"regexp"
|
||||
"strings"
|
||||
"time"
|
||||
@@ -328,6 +329,12 @@ func Pay4Order(ctx *jxcontext.Context, orderID int64, payType int, vendorPayType
|
||||
dao.WrapAddIDCULDEntity(orderPay, ctx.GetUserName())
|
||||
err = dao.CreateEntity(dao.GetDB(), orderPay)
|
||||
}
|
||||
case model.PayTypeLaKaLa: //
|
||||
ip, _, _ := net.SplitHostPort(ctx.GetRequest().RemoteAddr)
|
||||
if orderPay, err = pay4OrderByLaKaLa(ctx, order, payType, vendorPayType, subAppID, "", "", ip); err == nil && orderPay != nil {
|
||||
dao.WrapAddIDCULDEntity(orderPay, ctx.GetUserName())
|
||||
err = dao.CreateEntity(dao.GetDB(), orderPay)
|
||||
}
|
||||
case model.PayTypeTicTok:
|
||||
if orderPay, err = pay4OrderByTT(ctx, order, vendorPayType, subAppID); err == nil && orderPay != nil {
|
||||
dao.WrapAddIDCULDEntity(orderPay, ctx.GetUserName())
|
||||
@@ -863,7 +870,7 @@ func generateOrder(ctx *jxcontext.Context, jxOrder *JxOrderInfo, addressID int64
|
||||
if jxOrder.OrderType != model.OrderTypeMatter || (jxOrder.OrderType == model.OrderTypeMatter && fromStoreID == -1) {
|
||||
outJxOrder.Skus = append(outJxOrder.Skus, jxSku)
|
||||
outJxOrder.OrderPrice += int64(jxSku.Count) * jxSku.SalePrice
|
||||
} else { //以下else为物料订单袋子金额和数量处理
|
||||
} else { //以下else为物料订单袋子金额和数量处理
|
||||
if !result.Flag { //只要flag是false就按原价申请,是true再按订单量
|
||||
outJxOrder.Skus = append(outJxOrder.Skus, jxSku)
|
||||
outJxOrder.OrderPrice += int64(jxSku.Count) * jxSku.SalePrice
|
||||
|
||||
@@ -280,6 +280,8 @@ func RefundBarCodeScannerOrder(ctx *jxcontext.Context, vendorOrderId string, sku
|
||||
dao.Rollback(db, txDB)
|
||||
return err
|
||||
}
|
||||
goodsOrder.TotalShopMoney -= int64(refundMoney)
|
||||
dao.UpdateEntity(db, goodsOrder, "TotalShopMoney")
|
||||
dao.Commit(db, txDB)
|
||||
default:
|
||||
return fmt.Errorf(errMsg)
|
||||
|
||||
Reference in New Issue
Block a user