fix:
This commit is contained in:
parent
09685704f5
commit
81e54ea039
|
@ -361,7 +361,7 @@ func PostagePackageBuy(c *gin.Context) {
|
|||
|
||||
orderSn := model.GetOrderSn()
|
||||
err = model.UserOpenMemberRecord{Uid: uc.Uid, OpenNo: orderSn, MemberLevel: user.MemberLevel,
|
||||
OrderType: 11, UserCouponId: 0}.Insert()
|
||||
OrderType: 11, UserCouponId: 0, Attach: wxpay.WxPayPostagePackage}.Insert()
|
||||
if err != nil {
|
||||
logger.Error(errors.New("web pay err"))
|
||||
RespJson(c, status.InternalServerError, nil)
|
||||
|
@ -373,9 +373,15 @@ func PostagePackageBuy(c *gin.Context) {
|
|||
RespJson(c, status.InternalServerError, nil)
|
||||
return
|
||||
}
|
||||
webPay, err := wxpay.WebPay(orderSn, info.PostagePackageFee, user.WxOpenID, "N", wxpay.WxPayPostagePackage, configInfo.NotifyUrl)
|
||||
//webPay, err := wxpay.WebPay(orderSn, info.PostagePackageFee, user.WxOpenID, "N", wxpay.WxPayPostagePackage, configInfo.NotifyUrl)
|
||||
//if err != nil {
|
||||
// logger.Error(errors.New("web pay err"))
|
||||
// RespJson(c, status.InternalServerError, nil)
|
||||
// return
|
||||
//}
|
||||
webPay, err := wxpay.HmJsPayUnifiedOrder(orderSn, info.PostagePackageFee, user.WxOpenID, configInfo.NotifyUrl)
|
||||
if err != nil {
|
||||
logger.Error(errors.New("web pay err"))
|
||||
logger.Error(errors.New("WebPay err"))
|
||||
RespJson(c, status.InternalServerError, nil)
|
||||
return
|
||||
}
|
||||
|
|
|
@ -23,6 +23,7 @@ import (
|
|||
"mh-server/lib/wxpay"
|
||||
"mh-server/model"
|
||||
"sort"
|
||||
"strconv"
|
||||
"strings"
|
||||
"time"
|
||||
)
|
||||
|
@ -1089,6 +1090,817 @@ func PushWXPayNotice(c *gin.Context) {
|
|||
RespBodyXML(c, ret)
|
||||
}
|
||||
|
||||
type HmPushWXPayNoticeReq struct {
|
||||
AppId string `json:"app_id" form:"app_id"`
|
||||
BankOrderNo string `json:"bank_order_no" form:"bank_order_no"`
|
||||
BankTrxNo string `json:"bank_trx_no" form:"bank_trx_no"`
|
||||
BankWayCode string `json:"bank_way_code" form:"bank_way_code"`
|
||||
BuyerId string `json:"buyer_id" form:"buyer_id"`
|
||||
BuyerTradeFundBillDetail string `json:"buyer_trade_fund_bill_detail" form:"buyer_trade_fund_bill_detail"`
|
||||
NotifyType string `json:"notify_type" form:"notify_type"`
|
||||
OutOrderNo string `json:"out_order_no" form:"out_order_no"`
|
||||
PayAmount string `json:"pay_amount" form:"pay_amount"`
|
||||
PayModeCode string `json:"pay_mode_code" form:"pay_mode_code"`
|
||||
PaySuccessTime string `json:"pay_success_time" form:"pay_success_time"`
|
||||
PayWayCode string `json:"pay_way_code" form:"pay_way_code"`
|
||||
PlatTrxNo string `json:"plat_trx_no" form:"plat_trx_no"`
|
||||
SettleAmount string `json:"settle_amount" form:"settle_amount"`
|
||||
SettleAppId string `json:"settle_app_id" form:"settle_app_id"`
|
||||
Sign string `json:"sign" form:"sign"`
|
||||
SignType string `json:"sign_type" form:"sign_type"`
|
||||
}
|
||||
|
||||
// 微信推送支付通知
|
||||
func HmPushWXPayNotice(c *gin.Context) {
|
||||
fmt.Println("微信推送支付通知")
|
||||
|
||||
bankOrderNo := c.Query("bank_order_no")
|
||||
outOrderNo := c.Query("out_order_no")
|
||||
payAmount := c.Query("pay_amount")
|
||||
sign := c.Query("sign")
|
||||
tradeStatus := c.Query("trade_status")
|
||||
if tradeStatus != "SUCCESS" {
|
||||
logger.Error("tradeStatus err:")
|
||||
RespOK(c, "Error")
|
||||
return
|
||||
}
|
||||
//fmt.Println("URL:", c.Request.URL.String())
|
||||
//fmt.Println("sign-----", sign)
|
||||
substance, err := model.ParaToSubstance(c, sign)
|
||||
if err != nil {
|
||||
logger.Error("substance err:", err)
|
||||
RespOK(c, "Error")
|
||||
return
|
||||
}
|
||||
|
||||
err = wxpay.HmVerifySha1Rsa(substance, sign)
|
||||
if err != nil {
|
||||
logger.Error("HmVerifySha1Rsa err:", err)
|
||||
RespOK(c, "Error")
|
||||
return
|
||||
}
|
||||
|
||||
record := &model.UserOpenMemberRecord{OpenNo: outOrderNo}
|
||||
err = record.GetByOpenNo()
|
||||
if err != nil {
|
||||
logger.Error("err:", err)
|
||||
}
|
||||
if record.State == 2 {
|
||||
RespOK(c, "SUCCESS")
|
||||
return
|
||||
}
|
||||
|
||||
fundRecord := new(model.FundRecord)
|
||||
payAmountFloat, err := strconv.ParseFloat(payAmount, 64)
|
||||
if err != nil {
|
||||
logger.Error("parse err:", err)
|
||||
}
|
||||
fundRecord.Amount = int64(payAmountFloat * 100)
|
||||
|
||||
if record.Attach == wxpay.WxPayRentCard {
|
||||
logger.Info("租借游戏卡 支付成功:")
|
||||
var order model.Order
|
||||
err := model.NewOrderQuerySet(model.DB).OrderSnEq(outOrderNo).
|
||||
PayStatusEq(PayStatusUnPay).CardStatusNe(OrderCardStatusCancel).One(&order)
|
||||
if err != nil {
|
||||
logger.Error("err:", err)
|
||||
return
|
||||
}
|
||||
//orderJson, _ := json.Marshal(&order)
|
||||
//fmt.Println("orderJson:", string(orderJson))
|
||||
|
||||
begin := model.DB.Begin()
|
||||
err = model.NewOrderQuerySet(begin).IDEq(order.ID).GetUpdater().
|
||||
SetPayStatus(model.PayStatusPaid).SetPayTime(time.Now()).Update()
|
||||
if err != nil {
|
||||
begin.Rollback()
|
||||
logger.Error("err:", err)
|
||||
return
|
||||
}
|
||||
//model.OrderCard{}
|
||||
_, err = model.NewOrderCardQuerySet(begin).OrderIdEq(order.ID).GetUpdater().
|
||||
SetPayStatus(model.PayStatusPaid).UpdateNum()
|
||||
if err != nil {
|
||||
begin.Rollback()
|
||||
logger.Error("err:", err)
|
||||
return
|
||||
}
|
||||
|
||||
sub := model.DeliverTaskSub{
|
||||
Uid: uint32(order.Uid),
|
||||
UserAddressId: uint32(order.UserAddressId),
|
||||
OrderType: 1,
|
||||
OrderId: order.ID,
|
||||
StoreId: uint32(order.StoreId),
|
||||
}
|
||||
err = sub.Add()
|
||||
if err != nil {
|
||||
logger.Error("deliver task sub add err:", err)
|
||||
}
|
||||
|
||||
err = order.InventoryReduction(begin)
|
||||
if err != nil {
|
||||
begin.Rollback()
|
||||
logger.Error("err:", err)
|
||||
if order.PostageType == 1 {
|
||||
// 库存不足取消订单
|
||||
orderSn := model.GetOrderSn()
|
||||
memberRecord := &model.UserOpenMemberRecord{OpenNo: orderSn, OrderType: 2, Order: &order}
|
||||
err = memberRecord.OrderRefund(outOrderNo)
|
||||
if err != nil {
|
||||
logger.Error("err:", err)
|
||||
return
|
||||
}
|
||||
}
|
||||
|
||||
// TODO
|
||||
if order.PostageType == 2 {
|
||||
var userCoupon model.UserCoupon
|
||||
err = model.NewUserCouponQuerySet(model.DB).ActivityTypeEq(3).UidEq(uint32(order.Uid)).
|
||||
StateEq(2).OrderAscByID().Limit(1).One(&userCoupon)
|
||||
if err != nil && err != model.RecordNotFound {
|
||||
logger.Error("user coupon err:", err)
|
||||
RespJson(c, status.InternalServerError, nil)
|
||||
return
|
||||
}
|
||||
err = model.NewUserCouponQuerySet(model.DB).IDEq(userCoupon.ID).GetUpdater().SetState(1).Update()
|
||||
if err != nil {
|
||||
logger.Error("user coupon err:", err)
|
||||
}
|
||||
}
|
||||
|
||||
_, err := model.NewOrderQuerySet(model.DB).IDEq(order.ID).GetUpdater().
|
||||
SetCardStatus(OrderCardStatusCancel).UpdateNum()
|
||||
if err != nil {
|
||||
logger.Error("err:", err)
|
||||
return
|
||||
}
|
||||
_, err = model.NewOrderCardQuerySet(model.DB).OrderIdEq(order.ID).GetUpdater().
|
||||
SetCardStatus(OrderCardStatusCancel).UpdateNum()
|
||||
if err != nil {
|
||||
logger.Error("err:", err)
|
||||
return
|
||||
}
|
||||
|
||||
return
|
||||
}
|
||||
err = begin.Commit().Error
|
||||
if err != nil {
|
||||
begin.Rollback()
|
||||
logger.Error("err:", err)
|
||||
return
|
||||
}
|
||||
go model.ShoppingCartCreateOrderByOrder(order)
|
||||
|
||||
fundRecord.Uid = uint32(order.Uid)
|
||||
fundRecord.FundType = model.FundTypeExpressFee
|
||||
fundRecord.Remark = "借卡邮费"
|
||||
|
||||
}
|
||||
|
||||
if record.Attach == wxpay.WxPayMember {
|
||||
logger.Info("开通会员 支付成功:")
|
||||
logger.Info("用户uid:", outOrderNo)
|
||||
|
||||
remark := ""
|
||||
if record.MemberLevel == 2 {
|
||||
remark = "黄金会员费"
|
||||
} else if record.MemberLevel == 4 {
|
||||
remark = "白金会员费"
|
||||
} else if record.MemberLevel == 5 {
|
||||
remark = "黑金会员费"
|
||||
}
|
||||
fundRecord.Uid = uint32(record.Uid)
|
||||
fundRecord.FundType = model.FundTypeMemberFee
|
||||
fundRecord.Remark = remark
|
||||
memberRecord := &model.UserMemberRecord{
|
||||
Uid: record.Uid,
|
||||
AfterMemberLevel: record.MemberLevel,
|
||||
}
|
||||
newTime := time.Now()
|
||||
var spendType uint32
|
||||
var user model.User
|
||||
err = model.NewUserQuerySet(model.DB).UidEq(record.Uid).One(&user)
|
||||
if err != nil {
|
||||
logger.Error("err:", err)
|
||||
return
|
||||
} else {
|
||||
spendType = uint32(2)
|
||||
if !user.OpenMemberTime.IsZero() {
|
||||
spendType = 3
|
||||
}
|
||||
expireTime := newTime.AddDate(1, 0, 0)
|
||||
if user.MemberExpire.After(newTime) {
|
||||
expireTime = user.MemberExpire.AddDate(1, 0, 0)
|
||||
}
|
||||
memberRecord.BeforeMemberLevel = user.MemberLevel
|
||||
memberRecord.BeforeMemberExpire = user.MemberExpire
|
||||
memberRecord.Serial = uint32(user.MemberExpire.Unix())
|
||||
memberRecord.AfterMemberExpire = expireTime
|
||||
if user.IsMember() {
|
||||
memberRecord.OpenMemberLevel = user.OpenMemberLevel
|
||||
memberRecord.OpenMemberTime = user.OpenMemberTime
|
||||
} else {
|
||||
memberRecord.OpenMemberLevel = record.MemberLevel
|
||||
memberRecord.OpenMemberTime = newTime
|
||||
}
|
||||
memberConfig, err := model.GetMemberConfig(record.MemberLevel)
|
||||
if err != nil {
|
||||
logger.Error("GetMemberConfig err:", err)
|
||||
return
|
||||
}
|
||||
//openMemberTime := newTime
|
||||
userUpdateQs := model.NewUserQuerySet(model.DB).UidEq(record.Uid).GetUpdater().SetMemberLevel(record.MemberLevel).
|
||||
SetMemberExpire(expireTime).SetDeposit(memberConfig.MemberDeposit)
|
||||
if user.OpenMemberTime.IsZero() {
|
||||
//openMemberTime = user.OpenMemberTime
|
||||
userUpdateQs = userUpdateQs.SetOpenMemberTime(newTime).SetOpenMemberLevel(record.MemberLevel)
|
||||
memberRecord.Type = model.GetUserMemberRecordType(record.MemberLevel, 1)
|
||||
} else {
|
||||
memberRecord.Type = model.GetUserMemberRecordType(record.MemberLevel, 2)
|
||||
}
|
||||
_, err = userUpdateQs.UpdateNum()
|
||||
if err != nil {
|
||||
logger.Error("err:", err)
|
||||
return
|
||||
}
|
||||
|
||||
if record.UserCouponId > 0 {
|
||||
err = model.NewUserCouponQuerySet(model.DB).IDEq(record.UserCouponId).GetUpdater().
|
||||
SetState(2).SetUseTime(utils.Now()).Update()
|
||||
if err != nil {
|
||||
logger.Error("update user coupon state err:", err)
|
||||
}
|
||||
|
||||
var userCoupon model.UserCoupon
|
||||
err = model.NewUserCouponQuerySet(model.DB).IDEq(record.UserCouponId).One(&userCoupon)
|
||||
if err != nil {
|
||||
logger.Error("user coupon err:", err)
|
||||
} else {
|
||||
if userCoupon.Approach == 1 {
|
||||
err = model.StorePromotion(userCoupon.PromotionalSales, userCoupon.Uid, nil, &user)
|
||||
if err != nil {
|
||||
logger.Error("store promotion err:", err)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// 邀请记录
|
||||
var invite model.UserInvite
|
||||
//err = model.NewUserInviteQuerySet(model.DB).ToUidEq(record.Uid).OrderDescByID().Limit(1).One(&invite)
|
||||
err = model.NewUserInviteQuerySet(model.DB).ToUidEq(record.Uid).OrderDescByCreatedAt().Limit(1).One(&invite)
|
||||
if err != nil && err != model.RecordNotFound {
|
||||
logger.Error("err:", err)
|
||||
} else {
|
||||
//if err == model.RecordNotFound {
|
||||
// userInvite := &model.UserInvite{
|
||||
// FromUid: 0,
|
||||
// UserType: 0,
|
||||
// StoreId: 0,
|
||||
// MemberOpenTime: newTime,
|
||||
// MemberType: 2,
|
||||
// ToUid: record.Uid,
|
||||
// MemberStatus: 2,
|
||||
// MemberLevel: record.MemberLevel,
|
||||
// Action: 1,
|
||||
// SpendType: 1,
|
||||
// }
|
||||
// err := userInvite.Create(model.DB)
|
||||
// if err != nil {
|
||||
// logger.Error("err:", err)
|
||||
// }
|
||||
// err = model.SendUserVm(record.Uid, record.MemberLevel, 100)
|
||||
// if err != nil {
|
||||
// logger.Error("send user vm err:", err)
|
||||
// }
|
||||
//}
|
||||
|
||||
if err == nil {
|
||||
//qs := model.NewUserInviteQuerySet(model.DB).ToUidEq(record.Uid).GetUpdater()
|
||||
if invite.Action != 2 {
|
||||
qs := model.NewUserInviteQuerySet(model.DB).IDEq(invite.ID).GetUpdater()
|
||||
// SpendType 类型
|
||||
//if user.MemberLevel != 2 {
|
||||
// qs = qs.SetMemberOpenTime(newTime).SetMemberLevel(record.MemberLevel)
|
||||
//}
|
||||
qs = qs.SetMemberOpenTime(newTime).SetMemberLevel(record.MemberLevel)
|
||||
_, err = qs.SetMemberType(2).SetMemberStatus(2).
|
||||
SetAction(2).SetSpendType(spendType).UpdateNum()
|
||||
if err != nil {
|
||||
logger.Error("update user invite action spend type err:", err)
|
||||
}
|
||||
if invite.UserInviteRecordId != 0 {
|
||||
go func() {
|
||||
err = model.NewUserInviteRecordQuerySet(model.DB).IDEq(invite.UserInviteRecordId).GetUpdater().
|
||||
SetAction(2).SetSpendType(spendType).SetMemberLevel(record.MemberLevel).
|
||||
SetActionTime(newTime).Update()
|
||||
if err != nil {
|
||||
logger.Error("update user invite record err:", err)
|
||||
}
|
||||
}()
|
||||
}
|
||||
} else {
|
||||
inviteRecordNew := &model.UserInviteRecord{
|
||||
ToUid: invite.ToUid,
|
||||
FromUid: invite.FromUid,
|
||||
Action: 2,
|
||||
SpendType: spendType,
|
||||
MemberLevel: record.MemberLevel,
|
||||
First: 0,
|
||||
Scan: 0, // 自动生成
|
||||
ActionTime: newTime,
|
||||
}
|
||||
err = model.DB.Create(inviteRecordNew).Error
|
||||
if err != nil {
|
||||
logger.Error("create invite record err:", err)
|
||||
}
|
||||
|
||||
userInviteNew := &model.UserInvite{
|
||||
FromUid: invite.FromUid,
|
||||
UserType: invite.UserType,
|
||||
StoreId: invite.StoreId,
|
||||
//MemberOpenTime: invite.MemberOpenTime,
|
||||
MemberOpenTime: time.Now(),
|
||||
MemberType: 2,
|
||||
MemberStatus: 2,
|
||||
ToUid: invite.ToUid,
|
||||
StoreType: invite.StoreType,
|
||||
Action: 2,
|
||||
SpendType: spendType,
|
||||
MemberLevel: record.MemberLevel,
|
||||
UserInviteRecordId: inviteRecordNew.ID,
|
||||
FirstInvite: 0,
|
||||
}
|
||||
err = model.DB.Create(userInviteNew).Error
|
||||
if err != nil {
|
||||
logger.Error("create invite record err:", err)
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
if invite.FromUid != 0 {
|
||||
inviteUser := model.GetUserByUid(invite.FromUid)
|
||||
if inviteUser != nil {
|
||||
if inviteUser.UserType != 2 /*不是店员*/ && user.MemberLevel != 2 { // 邀请 新用户推送一次
|
||||
err = model.SendUserVm(inviteUser.Uid, record.MemberLevel, 1)
|
||||
if err != nil {
|
||||
logger.Error("send user vm err:", err)
|
||||
}
|
||||
}
|
||||
|
||||
if spendType == 2 {
|
||||
err = model.SendUserVm(user.Uid, record.MemberLevel, 0)
|
||||
if err != nil {
|
||||
logger.Error("send user vm err:", err)
|
||||
}
|
||||
}
|
||||
|
||||
openMemberChannel := model.OpenMemberChannelUserInvite
|
||||
userQs := model.NewUserQuerySet(model.DB).UidEq(record.Uid).GetUpdater()
|
||||
|
||||
if inviteUser.UserType == 2 {
|
||||
openMemberChannel = model.OpenMemberChannelStorePromotion
|
||||
if !user.OpenMemberTime.IsZero() {
|
||||
userQs = userQs.SetCooperativeBusinessId(inviteUser.CooperativeBusinessId).
|
||||
SetCooperativeName(inviteUser.CooperativeName)
|
||||
|
||||
fmt.Println("用户续费---")
|
||||
model.AddCooperativeMemberRenewal(inviteUser.CooperativeBusinessId,
|
||||
uint32(inviteUser.StoreId), inviteUser.Uid, int(record.MemberLevel))
|
||||
|
||||
} else {
|
||||
fmt.Println("用户开通------")
|
||||
model.AddCooperativeMemberPromotion(inviteUser.CooperativeBusinessId,
|
||||
uint32(inviteUser.StoreId), inviteUser.Uid, int(record.MemberLevel))
|
||||
}
|
||||
}
|
||||
|
||||
_, err = userQs.SetOpenMemberChannel(openMemberChannel).UpdateNum()
|
||||
if err != nil {
|
||||
logger.Error("err:", err)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if user.MemberLevel != 2 {
|
||||
}
|
||||
go func() {
|
||||
err = model.DB.Create(memberRecord).Error
|
||||
if err != nil {
|
||||
logger.Error("create member record err:", err)
|
||||
}
|
||||
}()
|
||||
model.CreateUserRentCardByMemberLevel(record.Uid, record.MemberLevel, memberConfig.CardMax)
|
||||
}
|
||||
_, err = model.NewUserOpenMemberRecordQuerySet(model.DB).IDEq(record.ID).
|
||||
GetUpdater().SetState(2).UpdateNum()
|
||||
if err != nil {
|
||||
logger.Error("update user open member record state:err", err)
|
||||
}
|
||||
fmt.Println("notify.TotalFee:", fundRecord.Amount)
|
||||
fmt.Println("notify.OutTradeNo:", outOrderNo)
|
||||
|
||||
}
|
||||
|
||||
if record.Attach == wxpay.WxPayDeposit {
|
||||
//record := &model.UserOpenMemberRecord{OpenNo: notifyInfo.OutTradeNo}
|
||||
//err := record.GetByOpenNo()
|
||||
//if err != nil {
|
||||
// logger.Error("err:", err)
|
||||
// return
|
||||
//}
|
||||
//if record.State == 2 {
|
||||
// ret.ReturnCode = "SUCCESS"
|
||||
// RespBodyXML(c, ret)
|
||||
// return
|
||||
//}
|
||||
|
||||
//if record.State != 2 {
|
||||
user := model.GetUserByUid(record.Uid)
|
||||
if user == nil {
|
||||
logger.Error("user nil")
|
||||
return
|
||||
}
|
||||
|
||||
memberConfig, err := model.GetMemberConfig(user.MemberLevel)
|
||||
if err != nil {
|
||||
logger.Error("err:", err)
|
||||
return
|
||||
}
|
||||
|
||||
remark := ""
|
||||
if user.MemberLevel == 2 {
|
||||
remark = "黄金会员押金"
|
||||
} else if user.MemberLevel == 4 {
|
||||
remark = "白金会员押金"
|
||||
} else if user.MemberLevel == 5 {
|
||||
remark = "黑金会员押金"
|
||||
}
|
||||
fundRecord.Uid = uint32(record.Uid)
|
||||
fundRecord.FundType = model.FundTypeMemberDeposit
|
||||
fundRecord.Remark = remark
|
||||
|
||||
num, err := model.NewUserQuerySet(model.DB).UidEq(record.Uid).GetUpdater().
|
||||
SetDeposit(memberConfig.MemberDeposit).UpdateNum()
|
||||
if err != nil {
|
||||
logger.Error("update deposit err:", err)
|
||||
}
|
||||
if num == 0 {
|
||||
logger.Error("update deposit num is 0")
|
||||
}
|
||||
_, err = model.NewUserOpenMemberRecordQuerySet(model.DB).IDEq(record.ID).GetUpdater().SetState(2).UpdateNum()
|
||||
if err != nil {
|
||||
logger.Error("update user open member record state:err", err)
|
||||
}
|
||||
//}
|
||||
}
|
||||
|
||||
if record.Attach == wxpay.WxPayBuyGoods {
|
||||
_, err = model.NewGoodsOrderQuerySet(model.DB).SerialNoEq(outOrderNo).GetUpdater().
|
||||
SetPayTime(time.Now()).
|
||||
SetPayStatus(model.PayStatusOK).
|
||||
SetState(model.GoodsOrderStateOnDeliver).UpdateNum()
|
||||
|
||||
if err != nil {
|
||||
logger.Error("err:", err)
|
||||
}
|
||||
var goodsOrder model.GoodsOrder
|
||||
err = model.NewGoodsOrderQuerySet(model.DB).SerialNoEq(outOrderNo).One(&goodsOrder)
|
||||
if err != nil {
|
||||
logger.Error("err:", err)
|
||||
}
|
||||
|
||||
err = model.OrderUpdateGoodsStock(goodsOrder.GoodsAttributeId, goodsOrder.Quantity, model.DB)
|
||||
if err != nil {
|
||||
logger.Error("err:", err)
|
||||
}
|
||||
|
||||
err = model.UserVmUpdate(goodsOrder.Uid, int(goodsOrder.Vm)*-1, model.VmEventBuyGoods, "购买商品积分抵扣")
|
||||
if err != nil {
|
||||
logger.Error("err:", err)
|
||||
}
|
||||
sub := model.DeliverTaskSub{
|
||||
Uid: uint32(goodsOrder.Uid),
|
||||
UserAddressId: uint32(goodsOrder.AddressId),
|
||||
OrderType: 2,
|
||||
OrderId: goodsOrder.OrderId,
|
||||
StoreId: 13,
|
||||
}
|
||||
err = sub.Add()
|
||||
if err != nil {
|
||||
logger.Error("deliver task sub add err:", err)
|
||||
}
|
||||
fundRecord.Uid = uint32(goodsOrder.Uid)
|
||||
fundRecord.FundType = model.FundTypeBuyGoods
|
||||
fundRecord.Remark = "商城购买"
|
||||
}
|
||||
|
||||
if record.Attach == wxpay.WxPayUpgradeMember {
|
||||
//record := &model.UserOpenMemberRecord{OpenNo: notifyInfo.OutTradeNo}
|
||||
//err := record.GetByOpenNo()
|
||||
//if err != nil {
|
||||
// logger.Error("err:", err)
|
||||
//}
|
||||
//if record.State == 2 {
|
||||
// ret.ReturnCode = "SUCCESS"
|
||||
// RespBodyXML(c, ret)
|
||||
// return
|
||||
//}
|
||||
|
||||
fmt.Println("UpgradeMember:", record.Uid)
|
||||
var user model.User
|
||||
err = model.NewUserQuerySet(model.DB).UidEq(record.Uid).One(&user)
|
||||
if err != nil {
|
||||
logger.Error("user err:", err)
|
||||
return
|
||||
}
|
||||
|
||||
memberRecord := &model.UserMemberRecord{
|
||||
Uid: record.Uid,
|
||||
BeforeMemberLevel: user.MemberLevel,
|
||||
AfterMemberLevel: record.MemberLevel,
|
||||
BeforeMemberExpire: user.MemberExpire,
|
||||
AfterMemberExpire: record.MemberExpire,
|
||||
InviteUid: 0,
|
||||
DeductionDays: record.DeductionDays,
|
||||
DeductionFee: record.DeductionFee,
|
||||
CouponId: record.UserCouponId,
|
||||
Serial: uint32(user.MemberExpire.Unix()),
|
||||
Type: model.GetUserMemberRecordType(record.MemberLevel, 3),
|
||||
OpenMemberLevel: user.OpenMemberLevel,
|
||||
OpenMemberTime: user.OpenMemberTime,
|
||||
}
|
||||
memberRecord.Add()
|
||||
|
||||
memberConfig, err := model.GetMemberConfig(record.MemberLevel)
|
||||
if err != nil {
|
||||
logger.Error("GetMemberConfig err:", err)
|
||||
return
|
||||
}
|
||||
var fundRecordRecord model.FundRecord
|
||||
err = model.NewFundRecordQuerySet(model.DB).UidEq(record.Uid).FundTypeEq(model.FundTypeMemberFee).
|
||||
CreatedAtGte(time.Now().Add(-10 * time.Minute)).One(&fundRecordRecord)
|
||||
if err == nil && fundRecordRecord.OutTradeNo != "" {
|
||||
var userOpenMemberRecord model.UserOpenMemberRecord
|
||||
err := model.NewUserOpenMemberRecordQuerySet(model.DB).OpenNoEq(fundRecordRecord.OutTradeNo).One(&userOpenMemberRecord)
|
||||
if err != nil {
|
||||
logger.Error("user open member record err:", err)
|
||||
return
|
||||
}
|
||||
if userOpenMemberRecord.CreatedAt.After(record.CreatedAt) {
|
||||
record.MemberExpire = record.MemberExpire.AddDate(1, 0, 0)
|
||||
}
|
||||
}
|
||||
|
||||
_, err = model.NewUserQuerySet(model.DB).UidEq(record.Uid).GetUpdater().SetMemberLevel(record.MemberLevel).
|
||||
SetMemberExpire(record.MemberExpire).SetDeposit(memberConfig.MemberDeposit).UpdateNum()
|
||||
//err = model.UserUpdate(&model.User{Uid: uint32(record.Uid), MemberLevel: record.MemberLevel, MemberExpire: expireTime, Deposit: memberConfig.MemberDeposit})
|
||||
if err != nil {
|
||||
logger.Error("err:", err)
|
||||
return
|
||||
}
|
||||
// 添加会员时长 等级 借卡数量
|
||||
var userRentCard model.UserRentCard
|
||||
err = model.NewUserRentCardQuerySet(model.DB).UidEq(record.Uid).One(&userRentCard)
|
||||
if err != nil {
|
||||
logger.Error("err:", err)
|
||||
return
|
||||
}
|
||||
|
||||
_, err = model.NewUserRentCardQuerySet(model.DB).UidEq(record.Uid).GetUpdater().SetMemberLevel(record.MemberLevel).
|
||||
SetLevelRentCount(memberConfig.CardMax).SetCanRentCount(memberConfig.CardMax - userRentCard.HaveRentCount).UpdateNum()
|
||||
if err != nil {
|
||||
logger.Error("err:", err)
|
||||
return
|
||||
}
|
||||
|
||||
model.CreateUserRentCardByMemberLevel(record.Uid, record.MemberLevel, memberConfig.CardMax)
|
||||
|
||||
if record.UserCouponId > 0 {
|
||||
_, err = model.NewUserCouponQuerySet(model.DB).IDEq(record.UserCouponId).GetUpdater().
|
||||
SetState(2).SetUseTime(utils.Now()).UpdateNum()
|
||||
if err != nil {
|
||||
logger.Error("update user coupon state err:", err)
|
||||
}
|
||||
}
|
||||
_, err = model.NewUserOpenMemberRecordQuerySet(model.DB).IDEq(record.ID).GetUpdater().SetState(2).UpdateNum()
|
||||
if err != nil {
|
||||
logger.Error("update user open member record state:err", err)
|
||||
}
|
||||
|
||||
fundRecord.Uid = uint32(record.Uid)
|
||||
fundRecord.FundType = model.FundTypeUpgradeMember
|
||||
fundRecord.Remark = "升级会员"
|
||||
}
|
||||
|
||||
if record.Attach == wxpay.WxPayMemberExpireDelay {
|
||||
//record := &model.UserOpenMemberRecord{OpenNo: notifyInfo.OutTradeNo}
|
||||
//err := record.GetByOpenNo()
|
||||
//if err != nil {
|
||||
// logger.Error("err:", err)
|
||||
// return
|
||||
//}
|
||||
//if record.State == 2 {
|
||||
// ret.ReturnCode = "SUCCESS"
|
||||
// RespBodyXML(c, ret)
|
||||
// return
|
||||
//}
|
||||
|
||||
var user model.User
|
||||
err = model.NewUserQuerySet(model.DB).UidEq(record.Uid).One(&user)
|
||||
if err != nil {
|
||||
logger.Error("err:", err)
|
||||
return
|
||||
}
|
||||
|
||||
_, err = model.NewUserMemberExpireDelayQuerySet(model.DB).UidEq(record.Uid).MemberExpireEq(user.MemberExpire).
|
||||
GetUpdater().SetIsPay(1).UpdateNum()
|
||||
if err != nil {
|
||||
logger.Error("err:", err)
|
||||
return
|
||||
}
|
||||
_, err = model.NewUserOpenMemberRecordQuerySet(model.DB).IDEq(record.ID).GetUpdater().SetState(2).UpdateNum()
|
||||
if err != nil {
|
||||
logger.Error("update user open member record state:err", err)
|
||||
}
|
||||
fundRecord.Uid = uint32(record.Uid)
|
||||
fundRecord.FundType = model.FundTypeMemberExpireDelay
|
||||
fundRecord.Remark = "会员过期滞纳金"
|
||||
}
|
||||
|
||||
if record.Attach == wxpay.WxPayShareCardRetrieve {
|
||||
//record := &model.UserOpenMemberRecord{OpenNo: notifyInfo.OutTradeNo}
|
||||
//err := record.GetByOpenNo()
|
||||
//if err != nil {
|
||||
// logger.Error("err:", err)
|
||||
//}
|
||||
//if record.State == 2 {
|
||||
// ret.ReturnCode = "SUCCESS"
|
||||
// RespBodyXML(c, ret)
|
||||
// return
|
||||
//}
|
||||
fmt.Println("UpgradeMember:", record.Uid)
|
||||
|
||||
_, err = model.NewShareCardRetrieveQuerySet(model.DB).IDEq(record.OrderId).
|
||||
GetUpdater().SetPayState(2).UpdateNum()
|
||||
if err != nil {
|
||||
logger.Error("update pay state err:", err)
|
||||
}
|
||||
_, err = model.NewShareCardRetrieveCardQuerySet(model.DB).ShareCardRetrieveIdEq(record.OrderId).GetUpdater().
|
||||
SetPayState(2).UpdateNum()
|
||||
if err != nil {
|
||||
logger.Error("update pay state err:", err)
|
||||
}
|
||||
|
||||
var share model.ShareCardRetrieve
|
||||
err = model.NewShareCardRetrieveQuerySet(model.DB).IDEq(record.ID).One(&share)
|
||||
if err != nil {
|
||||
log.Error().Msgf("share card retrieve err:%#v", err)
|
||||
}
|
||||
if err == nil {
|
||||
sub := model.DeliverTaskSub{
|
||||
Uid: share.Uid,
|
||||
UserAddressId: share.AddressId,
|
||||
OrderType: 3,
|
||||
OrderId: share.ID,
|
||||
}
|
||||
err = sub.Add()
|
||||
if err != nil {
|
||||
logger.Error("deliver task sub add err:", err)
|
||||
}
|
||||
}
|
||||
_, err = model.NewUserOpenMemberRecordQuerySet(model.DB).IDEq(record.ID).GetUpdater().SetState(2).UpdateNum()
|
||||
if err != nil {
|
||||
logger.Error("update user open member record state:err", err)
|
||||
}
|
||||
fundRecord.Uid = uint32(record.Uid)
|
||||
fundRecord.FundType = model.FundTypeExpressFee
|
||||
fundRecord.Remark = "共享卡收回卡快递费"
|
||||
}
|
||||
|
||||
if record.Attach == wxpay.WxPayPostagePackage {
|
||||
//record := &model.UserOpenMemberRecord{OpenNo: notifyInfo.OutTradeNo}
|
||||
//err := record.GetByOpenNo()
|
||||
//if err != nil {
|
||||
// logger.Error("err:", err)
|
||||
//}
|
||||
//if record.State == 2 {
|
||||
// ret.ReturnCode = "SUCCESS"
|
||||
// RespBodyXML(c, ret)
|
||||
// return
|
||||
//}
|
||||
var activity model.Activity
|
||||
err = model.NewActivityQuerySet(model.DB).IDEq(3).One(&activity)
|
||||
if err != nil {
|
||||
logger.Error("coupon err:", err)
|
||||
return
|
||||
}
|
||||
var coupon model.Coupon
|
||||
err = model.NewCouponQuerySet(model.DB).ActivityTypeEq(activity.ActivityType).One(&coupon)
|
||||
if err != nil {
|
||||
logger.Error("coupon err:", err)
|
||||
//ret.ReturnCode = "Error"
|
||||
//RespBodyXML(c, ret)
|
||||
RespOK(c, "Error")
|
||||
return
|
||||
}
|
||||
|
||||
defer func() {
|
||||
if err := recover(); err != nil {
|
||||
logger.Error("err:", err)
|
||||
}
|
||||
}()
|
||||
|
||||
//info, err := model.PostagePackageFeeConfigInfo()
|
||||
//if err != nil {
|
||||
// logger.Error("postage package fee config err")
|
||||
// ret.ReturnCode = "Error"
|
||||
// RespBodyXML(c, ret)
|
||||
// return
|
||||
//}
|
||||
|
||||
//originalMemberConfig, err := model.GetMemberConfig(record.MemberLevel)
|
||||
//if err != nil {
|
||||
// logger.Error("err:", err)
|
||||
// ret.ReturnCode = "Error"
|
||||
// RespBodyXML(c, ret)
|
||||
// return
|
||||
//}
|
||||
//days := (info.PostagePackageFee * 365) / originalMemberConfig.MemberFee
|
||||
user := model.GetUserByUid(record.Uid)
|
||||
days := model.GetPostagePackageMemberDuration(user.MemberLevel)
|
||||
durationRecord := &model.UserMemberDurationRecord{
|
||||
Uid: record.Uid,
|
||||
Duration: days,
|
||||
EventType: 1,
|
||||
MemberLevel: record.MemberLevel,
|
||||
}
|
||||
nowTime := time.Now()
|
||||
|
||||
go func() {
|
||||
begin := model.DB.Begin()
|
||||
for i := 0; i < 10; i++ {
|
||||
userCoupon := &model.UserCoupon{
|
||||
Uid: record.Uid,
|
||||
CouponId: coupon.ID,
|
||||
CouponType: coupon.CouponType,
|
||||
ActivityType: activity.ActivityType,
|
||||
ActivityId: activity.ID,
|
||||
Value: coupon.Value,
|
||||
State: 1,
|
||||
ActiveStart: nowTime,
|
||||
ActiveEnd: nowTime.AddDate(10, 0, 0),
|
||||
MemberLevel: record.MemberLevel,
|
||||
}
|
||||
err = begin.Create(userCoupon).Error
|
||||
if err != nil {
|
||||
begin.Rollback()
|
||||
logger.Error("user coupon err:", err)
|
||||
return
|
||||
}
|
||||
}
|
||||
|
||||
memberExpire := user.MemberExpire.AddDate(0, 0, int(days))
|
||||
err := model.NewUserQuerySet(begin).UidEq(record.Uid).GetUpdater().SetMemberExpire(memberExpire).Update()
|
||||
if err != nil {
|
||||
begin.Rollback()
|
||||
logger.Error("update member expire err:", err)
|
||||
return
|
||||
}
|
||||
|
||||
err = begin.Create(durationRecord).Error
|
||||
if err != nil {
|
||||
logger.Error("create duration record err:", err)
|
||||
return
|
||||
}
|
||||
|
||||
err = begin.Commit().Error
|
||||
if err != nil {
|
||||
begin.Rollback()
|
||||
logger.Error("commit err:", err)
|
||||
return
|
||||
}
|
||||
}()
|
||||
|
||||
fundRecord.Uid = uint32(record.Uid)
|
||||
fundRecord.FundType = model.FundTypePostagePackageFee
|
||||
fundRecord.Remark = "购买运费包"
|
||||
}
|
||||
|
||||
fundRecord.TransactionId = bankOrderNo
|
||||
fundRecord.OutTradeNo = outOrderNo
|
||||
fundRecord.Status = 2
|
||||
err = model.DB.Create(&fundRecord).Error
|
||||
if err != nil {
|
||||
logger.Error("create fund record err:", err)
|
||||
}
|
||||
logger.Debug("微信推动支付通知")
|
||||
RespOK(c, "SUCCESS")
|
||||
}
|
||||
|
||||
type WxPayRefundPlaintext struct {
|
||||
Mchid string `json:"mchid"`
|
||||
OutTradeNo string `json:"out_trade_no"`
|
||||
|
|
|
@ -289,15 +289,21 @@ func MallOrderCreate(c *gin.Context) {
|
|||
RespJson(c, status.InternalServerError, nil)
|
||||
return
|
||||
}
|
||||
webPay, err := wxpay.WebPay(order.SerialNo, order.Rm, user.WxOpenID, "N",
|
||||
wxpay.WxPayBuyGoods, configInfo.NotifyUrl)
|
||||
//webPay, err := wxpay.WebPay(order.SerialNo, order.Rm, user.WxOpenID, "N",
|
||||
// wxpay.WxPayBuyGoods, configInfo.NotifyUrl)
|
||||
//if err != nil {
|
||||
// logger.Error(errors.New("WebPay err"))
|
||||
// RespJson(c, status.InternalServerError, nil)
|
||||
// return
|
||||
//}
|
||||
err = model.UserOpenMemberRecord{Uid: uc.Uid, OpenNo: order.SerialNo, OrderId: order.OrderId, OrderType: 6, Attach: wxpay.WxPayBuyGoods}.Insert()
|
||||
if err != nil {
|
||||
logger.Error(errors.New("WebPay err"))
|
||||
RespJson(c, status.InternalServerError, nil)
|
||||
return
|
||||
}
|
||||
|
||||
err = model.UserOpenMemberRecord{Uid: uc.Uid, OpenNo: order.SerialNo, OrderId: order.OrderId, OrderType: 6}.Insert()
|
||||
webPay, err := wxpay.HmJsPayUnifiedOrder(order.SerialNo, order.Rm, user.WxOpenID, configInfo.NotifyUrl)
|
||||
if err != nil {
|
||||
logger.Error(errors.New("WebPay err"))
|
||||
RespJson(c, status.InternalServerError, nil)
|
||||
|
|
|
@ -497,13 +497,26 @@ func RentCardOrderCreate(c *gin.Context) {
|
|||
RespJson(c, status.InternalServerError, nil)
|
||||
return
|
||||
}
|
||||
webPay, err := wxpay.WebPay(order.OrderSn, req.Price, user.WxOpenID, "N", wxpay.WxPayRentCard, configInfo.NotifyUrl)
|
||||
|
||||
err = model.UserOpenMemberRecord{Uid: uc.Uid, OpenNo: orderSn, OrderId: order.ID, OrderType: 1, Attach: wxpay.WxPayRentCard}.Insert()
|
||||
if err != nil {
|
||||
logger.Error(errors.New("WebPay err"))
|
||||
RespJson(c, status.InternalServerError, nil)
|
||||
return
|
||||
}
|
||||
|
||||
//webPay, err := wxpay.WebPay(order.OrderSn, req.Price, user.WxOpenID, "N", wxpay.WxPayRentCard, configInfo.NotifyUrl)
|
||||
//if err != nil {
|
||||
// logger.Error(errors.New("WebPay err"))
|
||||
// RespJson(c, status.InternalServerError, nil)
|
||||
// return
|
||||
//}
|
||||
webPay, err := wxpay.HmJsPayUnifiedOrder(order.OrderSn, req.Price, user.WxOpenID, configInfo.NotifyUrl)
|
||||
if err != nil {
|
||||
logger.Error(errors.New("WebPay err"))
|
||||
RespJson(c, status.InternalServerError, nil)
|
||||
return
|
||||
}
|
||||
//webPay, err := wxpay.HmJsPayUnifiedOrder(order.OrderSn, req.Price, user.WxOpenID, "N", wxpay.WxPayRentCard, configInfo.NotifyUrl)
|
||||
//if err != nil {
|
||||
// logger.Error(errors.New("WebPay err"))
|
||||
|
@ -524,13 +537,6 @@ func RentCardOrderCreate(c *gin.Context) {
|
|||
// return
|
||||
//}
|
||||
|
||||
err = model.UserOpenMemberRecord{Uid: uc.Uid, OpenNo: orderSn, OrderId: order.ID, OrderType: 1}.Insert()
|
||||
if err != nil {
|
||||
logger.Error(errors.New("WebPay err"))
|
||||
RespJson(c, status.InternalServerError, nil)
|
||||
return
|
||||
}
|
||||
|
||||
ret := map[string]interface{}{
|
||||
"web_pay": webPay,
|
||||
"order_id": order.ID,
|
||||
|
@ -681,7 +687,21 @@ func OrderPay(c *gin.Context) {
|
|||
RespJson(c, status.InternalServerError, nil)
|
||||
return
|
||||
}
|
||||
webPay, err := wxpay.WebPay(order.OrderSn, order.PayPrice, user.WxOpenID, "N", wxpay.WxPayRentCard, configInfo.NotifyUrl)
|
||||
//webPay, err := wxpay.WebPay(order.OrderSn, order.PayPrice, user.WxOpenID, "N", wxpay.WxPayRentCard, configInfo.NotifyUrl)
|
||||
//if err != nil {
|
||||
// logger.Error(errors.New("WebPay err"))
|
||||
// RespJson(c, status.InternalServerError, nil)
|
||||
// return
|
||||
//}
|
||||
orderSn := model.GetOrderSn()
|
||||
err = model.UserOpenMemberRecord{Uid: uint32(order.Uid), OpenNo: orderSn, OrderId: order.ID, OrderType: 1, Attach: wxpay.WxPayRentCard}.Insert()
|
||||
if err != nil {
|
||||
logger.Error(errors.New("WebPay err"))
|
||||
RespJson(c, status.InternalServerError, nil)
|
||||
return
|
||||
}
|
||||
|
||||
webPay, err := wxpay.HmJsPayUnifiedOrder(order.OrderSn, order.PayPrice, user.WxOpenID, configInfo.NotifyUrl)
|
||||
if err != nil {
|
||||
logger.Error(errors.New("WebPay err"))
|
||||
RespJson(c, status.InternalServerError, nil)
|
||||
|
|
|
@ -307,7 +307,7 @@ func OpenMember(c *gin.Context) {
|
|||
//orderSn := utils.GetSerialNo32HEXString()
|
||||
orderSn := model.GetOrderSn()
|
||||
err = model.UserOpenMemberRecord{Uid: uc.Uid, OpenNo: orderSn, MemberLevel: req.MemberLevel,
|
||||
UserCouponId: req.UserCouponId}.Insert()
|
||||
UserCouponId: req.UserCouponId, Attach: wxpay.WxPayMember}.Insert()
|
||||
if err != nil {
|
||||
logger.Error(errors.New("WebPay err"))
|
||||
RespJson(c, status.InternalServerError, nil)
|
||||
|
@ -326,7 +326,7 @@ func OpenMember(c *gin.Context) {
|
|||
// return
|
||||
//}
|
||||
|
||||
webPay, err := wxpay.HmJsPayUnifiedOrder(orderSn, totalFee, user.WxOpenID, "N", wxpay.WxPayRentCard, configInfo.NotifyUrl)
|
||||
webPay, err := wxpay.HmJsPayUnifiedOrder(orderSn, totalFee, user.WxOpenID, configInfo.NotifyUrl)
|
||||
if err != nil {
|
||||
logger.Error(errors.New("WebPay err"))
|
||||
RespJson(c, status.InternalServerError, nil)
|
||||
|
@ -498,7 +498,7 @@ func UpgradeMember(c *gin.Context) {
|
|||
orderSn := model.GetOrderSn()
|
||||
err = model.UserOpenMemberRecord{Uid: uc.Uid, OpenNo: orderSn,
|
||||
MemberLevel: req.MemberLevel, OrderType: 9, MemberExpire: memberExpire,
|
||||
UserCouponId: req.UserCouponId}.Insert()
|
||||
UserCouponId: req.UserCouponId, Attach: wxpay.WxPayUpgradeMember}.Insert()
|
||||
if err != nil {
|
||||
logger.Error(errors.New("WebPay err"))
|
||||
RespJson(c, status.InternalServerError, nil)
|
||||
|
@ -510,14 +510,19 @@ func UpgradeMember(c *gin.Context) {
|
|||
RespJson(c, status.InternalServerError, nil)
|
||||
return
|
||||
}
|
||||
webPay, err := wxpay.WebPay(orderSn, uint32(totalFee), user.WxOpenID, "N", wxpay.WxPayUpgradeMember,
|
||||
configInfo.NotifyUrl)
|
||||
//webPay, err := wxpay.WebPay(orderSn, uint32(totalFee), user.WxOpenID, "N", wxpay.WxPayUpgradeMember,
|
||||
// configInfo.NotifyUrl)
|
||||
//if err != nil {
|
||||
// logger.Error(errors.New("WebPay err"))
|
||||
// RespJson(c, status.InternalServerError, nil)
|
||||
// return
|
||||
//}
|
||||
webPay, err := wxpay.HmJsPayUnifiedOrder(orderSn, uint32(totalFee), user.WxOpenID, configInfo.NotifyUrl)
|
||||
if err != nil {
|
||||
logger.Error(errors.New("WebPay err"))
|
||||
RespJson(c, status.InternalServerError, nil)
|
||||
return
|
||||
}
|
||||
|
||||
RespOK(c, webPay)
|
||||
}
|
||||
|
||||
|
@ -671,7 +676,7 @@ func PayDeposit(c *gin.Context) {
|
|||
|
||||
user := model.GetUserByUid(uc.Uid)
|
||||
orderSn := model.GetOrderSn()
|
||||
err := model.UserOpenMemberRecord{Uid: uc.Uid, OpenNo: orderSn}.Insert()
|
||||
err := model.UserOpenMemberRecord{Uid: uc.Uid, OpenNo: orderSn, Attach: wxpay.WxPayDeposit}.Insert()
|
||||
if err != nil {
|
||||
logger.Error(errors.New("WebPay err"))
|
||||
RespJson(c, status.InternalServerError, nil)
|
||||
|
@ -706,13 +711,18 @@ func PayDeposit(c *gin.Context) {
|
|||
RespJson(c, status.InternalServerError, nil)
|
||||
return
|
||||
}
|
||||
webPay, err := wxpay.WebPay(orderSn, totalFee, user.WxOpenID, "N", wxpay.WxPayDeposit, configInfo.NotifyUrl)
|
||||
//webPay, err := wxpay.WebPay(orderSn, totalFee, user.WxOpenID, "N", wxpay.WxPayDeposit, configInfo.NotifyUrl)
|
||||
//if err != nil {
|
||||
// logger.Error(errors.New("WebPay err"))
|
||||
// RespJson(c, status.InternalServerError, nil)
|
||||
// return
|
||||
//}
|
||||
webPay, err := wxpay.HmJsPayUnifiedOrder(orderSn, totalFee, user.WxOpenID, configInfo.NotifyUrl)
|
||||
if err != nil {
|
||||
logger.Error(errors.New("WebPay err"))
|
||||
RespJson(c, status.InternalServerError, nil)
|
||||
return
|
||||
}
|
||||
|
||||
RespOK(c, webPay)
|
||||
}
|
||||
|
||||
|
@ -862,19 +872,25 @@ func UserMemberExpireDelayingPay(c *gin.Context) {
|
|||
return
|
||||
}
|
||||
orderSn := model.GetOrderSn()
|
||||
webPay, err := wxpay.WebPay(orderSn, uint32(userMemberExpireDelay.DelayAmount), user.WxOpenID, "N", wxpay.WxPayMemberExpireDelay, configInfo.NotifyUrl)
|
||||
if err != nil {
|
||||
logger.Error(errors.New("WebPay err"))
|
||||
RespJson(c, status.InternalServerError, nil)
|
||||
return
|
||||
}
|
||||
err = model.UserOpenMemberRecord{Uid: uc.Uid, OpenNo: orderSn, OrderId: 0, OrderType: 3}.Insert()
|
||||
err = model.UserOpenMemberRecord{Uid: uc.Uid, OpenNo: orderSn, OrderId: 0, OrderType: 3, Attach: wxpay.WxPayMemberExpireDelay}.Insert()
|
||||
if err != nil {
|
||||
logger.Error(errors.New("WebPay err"))
|
||||
RespJson(c, status.InternalServerError, nil)
|
||||
return
|
||||
}
|
||||
|
||||
//webPay, err := wxpay.WebPay(orderSn, uint32(userMemberExpireDelay.DelayAmount), user.WxOpenID, "N", wxpay.WxPayMemberExpireDelay, configInfo.NotifyUrl)
|
||||
//if err != nil {
|
||||
// logger.Error(errors.New("WebPay err"))
|
||||
// RespJson(c, status.InternalServerError, nil)
|
||||
// return
|
||||
//}
|
||||
webPay, err := wxpay.HmJsPayUnifiedOrder(orderSn, uint32(userMemberExpireDelay.DelayAmount), user.WxOpenID, configInfo.NotifyUrl)
|
||||
if err != nil {
|
||||
logger.Error(errors.New("WebPay err"))
|
||||
RespJson(c, status.InternalServerError, nil)
|
||||
return
|
||||
}
|
||||
ret := make(map[string]interface{}, 0)
|
||||
ret["is_surrender"] = 1
|
||||
ret["expire_days"] = userMemberExpireDelay.ExpireDays
|
||||
|
|
|
@ -410,14 +410,19 @@ func ShareCardRetrieveCreate(c *gin.Context) {
|
|||
RespJson(c, status.InternalServerError, nil)
|
||||
return
|
||||
}
|
||||
webPay, err := wxpay.WebPay(retrieve.OrderSn, req.Amount, user.WxOpenID, "N", wxpay.WxPayShareCardRetrieve, configInfo.NotifyUrl)
|
||||
//webPay, err := wxpay.WebPay(retrieve.OrderSn, req.Amount, user.WxOpenID, "N", wxpay.WxPayShareCardRetrieve, configInfo.NotifyUrl)
|
||||
//if err != nil {
|
||||
// logger.Error(errors.New("WebPay err"))
|
||||
// RespJson(c, status.InternalServerError, nil)
|
||||
// return
|
||||
//}
|
||||
err = model.UserOpenMemberRecord{Uid: uc.Uid, OpenNo: retrieve.OrderSn, OrderId: retrieve.ID, OrderType: 1, Attach: wxpay.WxPayShareCardRetrieve}.Insert()
|
||||
if err != nil {
|
||||
logger.Error(errors.New("WebPay err"))
|
||||
RespJson(c, status.InternalServerError, nil)
|
||||
return
|
||||
}
|
||||
|
||||
err = model.UserOpenMemberRecord{Uid: uc.Uid, OpenNo: retrieve.OrderSn, OrderId: retrieve.ID, OrderType: 1}.Insert()
|
||||
webPay, err := wxpay.HmJsPayUnifiedOrder(retrieve.OrderSn, req.Amount, user.WxOpenID, configInfo.NotifyUrl)
|
||||
if err != nil {
|
||||
logger.Error(errors.New("WebPay err"))
|
||||
RespJson(c, status.InternalServerError, nil)
|
||||
|
|
|
@ -1039,7 +1039,7 @@ type HmPayUnifiedOrderRsp struct {
|
|||
}
|
||||
|
||||
//hm 微信支付
|
||||
func HmJsPayUnifiedOrder(orderId string, totalFee uint32, openId, profitSharing, attach, notifyUrl string) (*HmPayUnifiedOrderPayData, error) {
|
||||
func HmJsPayUnifiedOrder(orderId string, totalFee uint32, openId, notifyUrl string) (*HmPayUnifiedOrderPayData, error) {
|
||||
now := time.Now().Local()
|
||||
strTime := fmt.Sprintf("%04d%02d%02d%02d%02d%02d", now.Year(), now.Month(), now.Day(), now.Hour(),
|
||||
now.Minute(), now.Second())
|
||||
|
|
|
@ -5,9 +5,11 @@ import (
|
|||
"errors"
|
||||
"fmt"
|
||||
"github.com/codinl/go-logger"
|
||||
"github.com/gin-gonic/gin"
|
||||
"github.com/jinzhu/gorm"
|
||||
"github.com/rs/zerolog/log"
|
||||
"mh-server/lib/utils"
|
||||
"net/url"
|
||||
"sort"
|
||||
"strconv"
|
||||
"strings"
|
||||
|
@ -1070,3 +1072,51 @@ func UpdateDeliverTaskSubStateCancel(orderId uint32) {
|
|||
// logger.Error("commit err:", err)
|
||||
//}
|
||||
}
|
||||
|
||||
func ParaToSubstance(c *gin.Context, sign string) (string, error) {
|
||||
urlString := c.Request.URL.String()
|
||||
urlPara, err := url.QueryUnescape(urlString)
|
||||
if err != nil {
|
||||
return "", errors.New("url query unescape err")
|
||||
}
|
||||
if !strings.Contains(urlPara, "/api/v1/wxpay/notice?") {
|
||||
return "", errors.New("url err")
|
||||
}
|
||||
|
||||
para := strings.Replace(urlPara, "/api/v1/wxpay/notice?", "", -1)
|
||||
//fmt.Println("para--", para)
|
||||
conspire := strings.Split(para, "&")
|
||||
signConspire := make([]string, 0, len(conspire))
|
||||
for i, _ := range conspire {
|
||||
|
||||
if !strings.Contains(conspire[i], "sign=") {
|
||||
//fmt.Println("conspire---------", conspire[i])
|
||||
signConspire = append(signConspire, conspire[i])
|
||||
}
|
||||
}
|
||||
sort.Strings(signConspire)
|
||||
|
||||
//signDataJson2, _ := json.MarshalIndent(&signData, "", " ")
|
||||
//fmt.Println("signDataJson2", string(signDataJson2))
|
||||
|
||||
signStr := strings.Join(signConspire, "&")
|
||||
//signStr = signStr + "&key=" + payKey
|
||||
logger.Info("签字符串1 :", signStr)
|
||||
return signStr, nil
|
||||
}
|
||||
|
||||
//paramMap := make(map[string]string, 0)
|
||||
|
||||
//appId := c.Param("app_id")
|
||||
//bankTrxNo := c.Param("bank_trx_no")
|
||||
//bankWayCode := c.Param("bank_way_code")
|
||||
//buyerId := c.Param("buyer_id")
|
||||
//billDetail := c.Param("buyer_trade_fund_bill_detail")
|
||||
//notifyType := c.Param("notify_type")
|
||||
//payModeCode := c.Param("pay_mode_code")
|
||||
//paySuccessTime := c.Param("pay_success_time")
|
||||
//payWayCode := c.Param("pay_way_code")
|
||||
//platTrxNo := c.Param("plat_trx_no")
|
||||
//settleAmount := c.Param("settle_amount")
|
||||
//settleAppId := c.Param("settle_app_id")
|
||||
//signType := c.Param("sign_type")
|
||||
|
|
|
@ -164,6 +164,7 @@ func InitTestDB() {
|
|||
&UserActionLog{},
|
||||
&UserCoupon{},
|
||||
&ShopperPromotionCode{},
|
||||
&UserOpenMemberRecord{},
|
||||
)
|
||||
|
||||
fmt.Println("DB init success")
|
||||
|
@ -211,6 +212,7 @@ func InitDBProd() {
|
|||
|
||||
&ShopperPromotionCode{},
|
||||
&UserCoupon{},
|
||||
&UserOpenMemberRecord{},
|
||||
)
|
||||
|
||||
if err := DBProd.DB().Ping(); err != nil {
|
||||
|
@ -2114,7 +2116,7 @@ func TestSha1withRsa(t *testing.T) {
|
|||
}
|
||||
|
||||
func TestHmJsPayUnifiedOrder(t *testing.T) {
|
||||
order, err := wxpay.HmJsPayUnifiedOrder("84FDC15BCC", 2, "ohuHh4riVVPxwKHrYHsWwZRpxVMk", "N", wxpay.WxPayRentCard, "https://dev.switch.deovo.com:8004/api/v1/wxpay/notice")
|
||||
order, err := wxpay.HmJsPayUnifiedOrder("84FDC15BCC", 2, "ohuHh4riVVPxwKHrYHsWwZRpxVMk", "https://dev.switch.deovo.com:8004/api/v1/wxpay/notice")
|
||||
if err != nil {
|
||||
fmt.Println("err:", err)
|
||||
}
|
||||
|
|
|
@ -288,7 +288,7 @@ type UserOpenMemberRecord struct {
|
|||
Order *Order `json:"order" gorm:"-"`
|
||||
ShareCardRetrieve *ShareCardRetrieve `json:"share_card_retrieve" gorm:"-"`
|
||||
GoodsOrder *GoodsOrder `json:"goods_order" gorm:"-"`
|
||||
//Attach string `json:"attach"`
|
||||
Attach string `json:"attach"`
|
||||
}
|
||||
|
||||
func (o *UserOpenMemberRecord) TableName() string {
|
||||
|
|
|
@ -30,7 +30,8 @@ func ConfigAppRouter(r gin.IRouter) {
|
|||
// //api.POST("sys/config", controller.SysConfig) // 配置
|
||||
// api.POST("step/config", controller.StepConfig) // 步数配置
|
||||
// //api.POST("upload_user_info", controller.UploadUserInfo) // 上传用户信息
|
||||
api.POST("wxpay/notice", controller.PushWXPayNotice) // 微信推送支付通知
|
||||
//api.POST("wxpay/notice", controller.PushWXPayNotice) // 微信推送支付通知
|
||||
api.GET("wxpay/notice", controller.HmPushWXPayNotice) // 微信推送支付通知
|
||||
api.POST("wxpay_refund/notice", controller.PushWXPayRefundNotice) // 微信推送支付退款通知
|
||||
api.POST("aliyun/sts_token", controller.AliyunStsTokenGet) // 阿里云上传图片token
|
||||
api.POST("auto_reply/focus", controller.AutoReplyFocusMsg) // 自动回复
|
||||
|
|
Loading…
Reference in New Issue
Block a user