1
This commit is contained in:
@@ -12,7 +12,7 @@ import (
|
||||
"time"
|
||||
)
|
||||
|
||||
// RefundBarCodeScannerOrderByLaKaLa 拉卡拉扫码枪退款
|
||||
// RefundBarCodeScannerOrderByLaKaLa 拉卡拉退款
|
||||
func RefundBarCodeScannerOrderByLaKaLa(ctx *jxcontext.Context, vendorOrderId string, skuIds map[int]int, reason string, refund string) (resp interface{}, err error) {
|
||||
db := dao.GetDB()
|
||||
txDB, _ := dao.Begin(db)
|
||||
@@ -45,49 +45,6 @@ func RefundBarCodeScannerOrderByLaKaLa(ctx *jxcontext.Context, vendorOrderId str
|
||||
return nil, err
|
||||
}
|
||||
|
||||
// 通知退款,等待回传
|
||||
incoming, err := dao.GetStoreInfoByMerchantID(db, "", goodsOrder.JxStoreID, "", "")
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
switch refund {
|
||||
case "toStore": // 收银台
|
||||
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: "",
|
||||
}
|
||||
|
||||
resp, err = api.LaKaLaApi.RefundOrder(param)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
case "aggregate": // 聚合支付
|
||||
param := &lakala.AggregateRefundReq{
|
||||
MerchantNo: incoming.MerchantNo,
|
||||
TermNo: incoming.TermNo,
|
||||
OutTradeNo: afsOrder.AfsOrderID,
|
||||
RefundAmount: utils.Int2Str(refundMoney),
|
||||
RefundReason: reason,
|
||||
OriginOutTradeNo: goodsOrder.VendorOrderID,
|
||||
OriginTradeNo: "",
|
||||
OriginLogNo: "",
|
||||
LocationInfo: lakala.LocationInfoObj{RequestIp: ctx.GetRealRemoteIP()},
|
||||
}
|
||||
resp, err = api.LaKaLaApi.AggregateRefund(param)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
}
|
||||
|
||||
if err = dao.CreateEntity(db, afsOrder); err != nil {
|
||||
dao.Rollback(db, txDB)
|
||||
return nil, err
|
||||
@@ -107,6 +64,102 @@ func RefundBarCodeScannerOrderByLaKaLa(ctx *jxcontext.Context, vendorOrderId str
|
||||
return resp, nil
|
||||
}
|
||||
|
||||
func RefundOrderByLaKaLa(ctx *jxcontext.Context, orderPay *model.OrderPay, afsOrder *model.AfsOrder, refundID string, refundFee int, refundDesc string) (orderPayRefund *model.OrderPayRefund, err error) {
|
||||
var (
|
||||
db = dao.GetDB()
|
||||
)
|
||||
order, err := partner.CurOrderManager.LoadOrder(orderPay.VendorOrderID, orderPay.VendorID)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
// 通知退款,等待回传
|
||||
incoming, err := dao.GetStoreInfoByMerchantID(db, "", order.JxStoreID, "", "")
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
switch orderPay.VendorPayType {
|
||||
case lakala.PayWayAPP: // 收银台
|
||||
param := &lakala.RefundOrderReq{
|
||||
MerchantNo: incoming.MerchantNo2,
|
||||
TermNo: incoming.TermNo,
|
||||
OutTradeNo: afsOrder.AfsOrderID,
|
||||
RefundAmount: utils.Int2Str(refundFee),
|
||||
OriginBizType: "3",
|
||||
OriginTradeDate: order.OrderCreatedAt.Format("20060102"),
|
||||
OriginLogNo: "",
|
||||
OriginTradeNo: order.VendorOrderID,
|
||||
OriginCardNo: "",
|
||||
LocationInfo: nil,
|
||||
RefundType: "",
|
||||
}
|
||||
|
||||
resp, err := api.LaKaLaApi.RefundOrder(param)
|
||||
orderPayRefund = &model.OrderPayRefund{
|
||||
RefundID: refundID,
|
||||
VendorRefundID: resp.OriginTradeNo,
|
||||
VendorOrderID: orderPay.VendorOrderID,
|
||||
VendorID: orderPay.VendorID,
|
||||
Status: model.RefundStatusYes,
|
||||
TransactionID: resp.LogNo,
|
||||
RefundFee: refundFee,
|
||||
RefundCreatedAt: time.Now(),
|
||||
}
|
||||
if err == nil {
|
||||
orderPayRefund.Status = model.RefundStatusYes
|
||||
orderPayRefund.OriginalData = utils.Format4Output(resp, true)
|
||||
orderPay.Status = model.PayStatusRefund
|
||||
dao.UpdateEntity(db, orderPay, "Status")
|
||||
} else {
|
||||
orderPayRefund.Status = model.RefundStatusNo
|
||||
orderPayRefund.OriginalData = err.Error()
|
||||
}
|
||||
dao.WrapAddIDCULDEntity(orderPayRefund, ctx.GetUserName())
|
||||
dao.CreateEntity(db, orderPayRefund)
|
||||
case lakala.PayWayMini, lakala.PayWayRegister: // 主扫被扫
|
||||
param := &lakala.AggregateRefundReq{
|
||||
MerchantNo: incoming.MerchantNo2,
|
||||
TermNo: incoming.TermNo,
|
||||
OutTradeNo: afsOrder.AfsOrderID,
|
||||
RefundAmount: utils.Int2Str(refundFee),
|
||||
RefundReason: refundDesc,
|
||||
OriginOutTradeNo: order.VendorOrderID,
|
||||
OriginTradeNo: "",
|
||||
OriginLogNo: "",
|
||||
LocationInfo: lakala.LocationInfoObj{RequestIp: ctx.GetRealRemoteIP()},
|
||||
}
|
||||
resp, err := api.LaKaLaApi.AggregateRefund(param)
|
||||
orderPayRefund = &model.OrderPayRefund{
|
||||
RefundID: refundID,
|
||||
VendorRefundID: resp.OriginTradeNo,
|
||||
VendorOrderID: orderPay.VendorOrderID,
|
||||
VendorID: orderPay.VendorID,
|
||||
Status: model.RefundStatusYes,
|
||||
TransactionID: orderPay.TransactionID,
|
||||
RefundFee: refundFee,
|
||||
RefundCreatedAt: time.Now(),
|
||||
}
|
||||
if err == nil {
|
||||
orderPayRefund.Status = model.RefundStatusYes
|
||||
orderPayRefund.OriginalData = utils.Format4Output(resp, true)
|
||||
orderPay.Status = model.PayStatusRefund
|
||||
dao.UpdateEntity(db, orderPay, "Status")
|
||||
} else {
|
||||
orderPayRefund.Status = model.RefundStatusNo
|
||||
orderPayRefund.OriginalData = err.Error()
|
||||
}
|
||||
|
||||
dao.WrapAddIDCULDEntity(orderPayRefund, ctx.GetUserName())
|
||||
dao.CreateEntity(db, orderPayRefund)
|
||||
}
|
||||
|
||||
if order.TotalShopMoney == int64(refundFee) && err == nil {
|
||||
order.Status = model.OrderStatusCanceled
|
||||
order.VendorStatus = "laKaLaRefund"
|
||||
dao.UpdateEntity(db, order, "Status", "VendorStatus")
|
||||
}
|
||||
return orderPayRefund, err
|
||||
}
|
||||
|
||||
// QueryBarCodeRefundStatus 退款订单状态查询
|
||||
func QueryBarCodeRefundStatus(afsOrderID string) (resp []*lakala.RefundOrderQueryResp, err error) {
|
||||
db := dao.GetDB()
|
||||
|
||||
@@ -3,6 +3,7 @@ package localjx
|
||||
import (
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
"git.rosy.net.cn/jx-callback/business/partner"
|
||||
"strings"
|
||||
"time"
|
||||
|
||||
@@ -202,6 +203,16 @@ func RefundOrderByTL(ctx *jxcontext.Context, orderPay *model.OrderPay, refundID
|
||||
|
||||
orderPay.Status = model.PayStatusRefund
|
||||
dao.UpdateEntity(db, orderPay)
|
||||
|
||||
order, err := partner.CurOrderManager.LoadOrder(orderPay.VendorOrderID, orderPay.VendorID)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
if order.TotalShopMoney == int64(refundFee) {
|
||||
order.Status = model.OrderStatusCanceled
|
||||
order.VendorStatus = "laKaLaRefund"
|
||||
dao.UpdateEntity(db, order, "Status", "VendorStatus")
|
||||
}
|
||||
}
|
||||
return orderPayRefund, err
|
||||
}
|
||||
|
||||
@@ -50,6 +50,9 @@ func (c *PurchaseHandler) AgreeOrRefuseRefund(ctx *jxcontext.Context, order *mod
|
||||
if orderPays[0].PayType == model.PayTypeKuaiShou {
|
||||
_, err = localjx.RefundOrderByKS(ctx, orderPays[0], order.VendorOrderID, int(order.SkuUserMoney), reason)
|
||||
}
|
||||
if orderPays[0].PayType == model.PayTypeLaKaLa {
|
||||
_, err = localjx.RefundOrderByLaKaLa(ctx, orderPays[0], order, order.VendorOrderID, int(order.SkuUserMoney), reason)
|
||||
}
|
||||
if err != nil {
|
||||
return err
|
||||
} else {
|
||||
|
||||
Reference in New Issue
Block a user