fix:
This commit is contained in:
parent
09685704f5
commit
81e54ea039
|
@ -361,7 +361,7 @@ func PostagePackageBuy(c *gin.Context) {
|
||||||
|
|
||||||
orderSn := model.GetOrderSn()
|
orderSn := model.GetOrderSn()
|
||||||
err = model.UserOpenMemberRecord{Uid: uc.Uid, OpenNo: orderSn, MemberLevel: user.MemberLevel,
|
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 {
|
if err != nil {
|
||||||
logger.Error(errors.New("web pay err"))
|
logger.Error(errors.New("web pay err"))
|
||||||
RespJson(c, status.InternalServerError, nil)
|
RespJson(c, status.InternalServerError, nil)
|
||||||
|
@ -373,9 +373,15 @@ func PostagePackageBuy(c *gin.Context) {
|
||||||
RespJson(c, status.InternalServerError, nil)
|
RespJson(c, status.InternalServerError, nil)
|
||||||
return
|
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 {
|
if err != nil {
|
||||||
logger.Error(errors.New("web pay err"))
|
logger.Error(errors.New("WebPay err"))
|
||||||
RespJson(c, status.InternalServerError, nil)
|
RespJson(c, status.InternalServerError, nil)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
|
@ -23,6 +23,7 @@ import (
|
||||||
"mh-server/lib/wxpay"
|
"mh-server/lib/wxpay"
|
||||||
"mh-server/model"
|
"mh-server/model"
|
||||||
"sort"
|
"sort"
|
||||||
|
"strconv"
|
||||||
"strings"
|
"strings"
|
||||||
"time"
|
"time"
|
||||||
)
|
)
|
||||||
|
@ -1089,6 +1090,817 @@ func PushWXPayNotice(c *gin.Context) {
|
||||||
RespBodyXML(c, ret)
|
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 {
|
type WxPayRefundPlaintext struct {
|
||||||
Mchid string `json:"mchid"`
|
Mchid string `json:"mchid"`
|
||||||
OutTradeNo string `json:"out_trade_no"`
|
OutTradeNo string `json:"out_trade_no"`
|
||||||
|
|
|
@ -289,15 +289,21 @@ func MallOrderCreate(c *gin.Context) {
|
||||||
RespJson(c, status.InternalServerError, nil)
|
RespJson(c, status.InternalServerError, nil)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
webPay, err := wxpay.WebPay(order.SerialNo, order.Rm, user.WxOpenID, "N",
|
//webPay, err := wxpay.WebPay(order.SerialNo, order.Rm, user.WxOpenID, "N",
|
||||||
wxpay.WxPayBuyGoods, configInfo.NotifyUrl)
|
// 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 {
|
if err != nil {
|
||||||
logger.Error(errors.New("WebPay err"))
|
logger.Error(errors.New("WebPay err"))
|
||||||
RespJson(c, status.InternalServerError, nil)
|
RespJson(c, status.InternalServerError, nil)
|
||||||
return
|
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 {
|
if err != nil {
|
||||||
logger.Error(errors.New("WebPay err"))
|
logger.Error(errors.New("WebPay err"))
|
||||||
RespJson(c, status.InternalServerError, nil)
|
RespJson(c, status.InternalServerError, nil)
|
||||||
|
|
|
@ -497,13 +497,26 @@ func RentCardOrderCreate(c *gin.Context) {
|
||||||
RespJson(c, status.InternalServerError, nil)
|
RespJson(c, status.InternalServerError, nil)
|
||||||
return
|
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 {
|
if err != nil {
|
||||||
logger.Error(errors.New("WebPay err"))
|
logger.Error(errors.New("WebPay err"))
|
||||||
RespJson(c, status.InternalServerError, nil)
|
RespJson(c, status.InternalServerError, nil)
|
||||||
return
|
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)
|
//webPay, err := wxpay.HmJsPayUnifiedOrder(order.OrderSn, req.Price, user.WxOpenID, "N", wxpay.WxPayRentCard, configInfo.NotifyUrl)
|
||||||
//if err != nil {
|
//if err != nil {
|
||||||
// logger.Error(errors.New("WebPay err"))
|
// logger.Error(errors.New("WebPay err"))
|
||||||
|
@ -524,13 +537,6 @@ func RentCardOrderCreate(c *gin.Context) {
|
||||||
// return
|
// 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{}{
|
ret := map[string]interface{}{
|
||||||
"web_pay": webPay,
|
"web_pay": webPay,
|
||||||
"order_id": order.ID,
|
"order_id": order.ID,
|
||||||
|
@ -681,7 +687,21 @@ func OrderPay(c *gin.Context) {
|
||||||
RespJson(c, status.InternalServerError, nil)
|
RespJson(c, status.InternalServerError, nil)
|
||||||
return
|
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 {
|
if err != nil {
|
||||||
logger.Error(errors.New("WebPay err"))
|
logger.Error(errors.New("WebPay err"))
|
||||||
RespJson(c, status.InternalServerError, nil)
|
RespJson(c, status.InternalServerError, nil)
|
||||||
|
|
|
@ -307,7 +307,7 @@ func OpenMember(c *gin.Context) {
|
||||||
//orderSn := utils.GetSerialNo32HEXString()
|
//orderSn := utils.GetSerialNo32HEXString()
|
||||||
orderSn := model.GetOrderSn()
|
orderSn := model.GetOrderSn()
|
||||||
err = model.UserOpenMemberRecord{Uid: uc.Uid, OpenNo: orderSn, MemberLevel: req.MemberLevel,
|
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 {
|
if err != nil {
|
||||||
logger.Error(errors.New("WebPay err"))
|
logger.Error(errors.New("WebPay err"))
|
||||||
RespJson(c, status.InternalServerError, nil)
|
RespJson(c, status.InternalServerError, nil)
|
||||||
|
@ -326,7 +326,7 @@ func OpenMember(c *gin.Context) {
|
||||||
// return
|
// 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 {
|
if err != nil {
|
||||||
logger.Error(errors.New("WebPay err"))
|
logger.Error(errors.New("WebPay err"))
|
||||||
RespJson(c, status.InternalServerError, nil)
|
RespJson(c, status.InternalServerError, nil)
|
||||||
|
@ -498,7 +498,7 @@ func UpgradeMember(c *gin.Context) {
|
||||||
orderSn := model.GetOrderSn()
|
orderSn := model.GetOrderSn()
|
||||||
err = model.UserOpenMemberRecord{Uid: uc.Uid, OpenNo: orderSn,
|
err = model.UserOpenMemberRecord{Uid: uc.Uid, OpenNo: orderSn,
|
||||||
MemberLevel: req.MemberLevel, OrderType: 9, MemberExpire: memberExpire,
|
MemberLevel: req.MemberLevel, OrderType: 9, MemberExpire: memberExpire,
|
||||||
UserCouponId: req.UserCouponId}.Insert()
|
UserCouponId: req.UserCouponId, Attach: wxpay.WxPayUpgradeMember}.Insert()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
logger.Error(errors.New("WebPay err"))
|
logger.Error(errors.New("WebPay err"))
|
||||||
RespJson(c, status.InternalServerError, nil)
|
RespJson(c, status.InternalServerError, nil)
|
||||||
|
@ -510,14 +510,19 @@ func UpgradeMember(c *gin.Context) {
|
||||||
RespJson(c, status.InternalServerError, nil)
|
RespJson(c, status.InternalServerError, nil)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
webPay, err := wxpay.WebPay(orderSn, uint32(totalFee), user.WxOpenID, "N", wxpay.WxPayUpgradeMember,
|
//webPay, err := wxpay.WebPay(orderSn, uint32(totalFee), user.WxOpenID, "N", wxpay.WxPayUpgradeMember,
|
||||||
configInfo.NotifyUrl)
|
// 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 {
|
if err != nil {
|
||||||
logger.Error(errors.New("WebPay err"))
|
logger.Error(errors.New("WebPay err"))
|
||||||
RespJson(c, status.InternalServerError, nil)
|
RespJson(c, status.InternalServerError, nil)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
RespOK(c, webPay)
|
RespOK(c, webPay)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -671,7 +676,7 @@ func PayDeposit(c *gin.Context) {
|
||||||
|
|
||||||
user := model.GetUserByUid(uc.Uid)
|
user := model.GetUserByUid(uc.Uid)
|
||||||
orderSn := model.GetOrderSn()
|
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 {
|
if err != nil {
|
||||||
logger.Error(errors.New("WebPay err"))
|
logger.Error(errors.New("WebPay err"))
|
||||||
RespJson(c, status.InternalServerError, nil)
|
RespJson(c, status.InternalServerError, nil)
|
||||||
|
@ -706,13 +711,18 @@ func PayDeposit(c *gin.Context) {
|
||||||
RespJson(c, status.InternalServerError, nil)
|
RespJson(c, status.InternalServerError, nil)
|
||||||
return
|
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 {
|
if err != nil {
|
||||||
logger.Error(errors.New("WebPay err"))
|
logger.Error(errors.New("WebPay err"))
|
||||||
RespJson(c, status.InternalServerError, nil)
|
RespJson(c, status.InternalServerError, nil)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
RespOK(c, webPay)
|
RespOK(c, webPay)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -862,19 +872,25 @@ func UserMemberExpireDelayingPay(c *gin.Context) {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
orderSn := model.GetOrderSn()
|
orderSn := model.GetOrderSn()
|
||||||
webPay, err := wxpay.WebPay(orderSn, uint32(userMemberExpireDelay.DelayAmount), user.WxOpenID, "N", wxpay.WxPayMemberExpireDelay, configInfo.NotifyUrl)
|
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
|
|
||||||
}
|
|
||||||
err = model.UserOpenMemberRecord{Uid: uc.Uid, OpenNo: orderSn, OrderId: 0, OrderType: 3}.Insert()
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
logger.Error(errors.New("WebPay err"))
|
logger.Error(errors.New("WebPay err"))
|
||||||
RespJson(c, status.InternalServerError, nil)
|
RespJson(c, status.InternalServerError, nil)
|
||||||
return
|
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 := make(map[string]interface{}, 0)
|
||||||
ret["is_surrender"] = 1
|
ret["is_surrender"] = 1
|
||||||
ret["expire_days"] = userMemberExpireDelay.ExpireDays
|
ret["expire_days"] = userMemberExpireDelay.ExpireDays
|
||||||
|
|
|
@ -410,14 +410,19 @@ func ShareCardRetrieveCreate(c *gin.Context) {
|
||||||
RespJson(c, status.InternalServerError, nil)
|
RespJson(c, status.InternalServerError, nil)
|
||||||
return
|
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 {
|
if err != nil {
|
||||||
logger.Error(errors.New("WebPay err"))
|
logger.Error(errors.New("WebPay err"))
|
||||||
RespJson(c, status.InternalServerError, nil)
|
RespJson(c, status.InternalServerError, nil)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
webPay, err := wxpay.HmJsPayUnifiedOrder(retrieve.OrderSn, req.Amount, user.WxOpenID, configInfo.NotifyUrl)
|
||||||
err = model.UserOpenMemberRecord{Uid: uc.Uid, OpenNo: retrieve.OrderSn, OrderId: retrieve.ID, OrderType: 1}.Insert()
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
logger.Error(errors.New("WebPay err"))
|
logger.Error(errors.New("WebPay err"))
|
||||||
RespJson(c, status.InternalServerError, nil)
|
RespJson(c, status.InternalServerError, nil)
|
||||||
|
|
|
@ -1039,7 +1039,7 @@ type HmPayUnifiedOrderRsp struct {
|
||||||
}
|
}
|
||||||
|
|
||||||
//hm 微信支付
|
//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()
|
now := time.Now().Local()
|
||||||
strTime := fmt.Sprintf("%04d%02d%02d%02d%02d%02d", now.Year(), now.Month(), now.Day(), now.Hour(),
|
strTime := fmt.Sprintf("%04d%02d%02d%02d%02d%02d", now.Year(), now.Month(), now.Day(), now.Hour(),
|
||||||
now.Minute(), now.Second())
|
now.Minute(), now.Second())
|
||||||
|
|
|
@ -5,9 +5,11 @@ import (
|
||||||
"errors"
|
"errors"
|
||||||
"fmt"
|
"fmt"
|
||||||
"github.com/codinl/go-logger"
|
"github.com/codinl/go-logger"
|
||||||
|
"github.com/gin-gonic/gin"
|
||||||
"github.com/jinzhu/gorm"
|
"github.com/jinzhu/gorm"
|
||||||
"github.com/rs/zerolog/log"
|
"github.com/rs/zerolog/log"
|
||||||
"mh-server/lib/utils"
|
"mh-server/lib/utils"
|
||||||
|
"net/url"
|
||||||
"sort"
|
"sort"
|
||||||
"strconv"
|
"strconv"
|
||||||
"strings"
|
"strings"
|
||||||
|
@ -1070,3 +1072,51 @@ func UpdateDeliverTaskSubStateCancel(orderId uint32) {
|
||||||
// logger.Error("commit err:", err)
|
// 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{},
|
&UserActionLog{},
|
||||||
&UserCoupon{},
|
&UserCoupon{},
|
||||||
&ShopperPromotionCode{},
|
&ShopperPromotionCode{},
|
||||||
|
&UserOpenMemberRecord{},
|
||||||
)
|
)
|
||||||
|
|
||||||
fmt.Println("DB init success")
|
fmt.Println("DB init success")
|
||||||
|
@ -211,6 +212,7 @@ func InitDBProd() {
|
||||||
|
|
||||||
&ShopperPromotionCode{},
|
&ShopperPromotionCode{},
|
||||||
&UserCoupon{},
|
&UserCoupon{},
|
||||||
|
&UserOpenMemberRecord{},
|
||||||
)
|
)
|
||||||
|
|
||||||
if err := DBProd.DB().Ping(); err != nil {
|
if err := DBProd.DB().Ping(); err != nil {
|
||||||
|
@ -2114,7 +2116,7 @@ func TestSha1withRsa(t *testing.T) {
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestHmJsPayUnifiedOrder(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 {
|
if err != nil {
|
||||||
fmt.Println("err:", err)
|
fmt.Println("err:", err)
|
||||||
}
|
}
|
||||||
|
|
|
@ -288,7 +288,7 @@ type UserOpenMemberRecord struct {
|
||||||
Order *Order `json:"order" gorm:"-"`
|
Order *Order `json:"order" gorm:"-"`
|
||||||
ShareCardRetrieve *ShareCardRetrieve `json:"share_card_retrieve" gorm:"-"`
|
ShareCardRetrieve *ShareCardRetrieve `json:"share_card_retrieve" gorm:"-"`
|
||||||
GoodsOrder *GoodsOrder `json:"goods_order" gorm:"-"`
|
GoodsOrder *GoodsOrder `json:"goods_order" gorm:"-"`
|
||||||
//Attach string `json:"attach"`
|
Attach string `json:"attach"`
|
||||||
}
|
}
|
||||||
|
|
||||||
func (o *UserOpenMemberRecord) TableName() string {
|
func (o *UserOpenMemberRecord) TableName() string {
|
||||||
|
|
|
@ -30,7 +30,8 @@ func ConfigAppRouter(r gin.IRouter) {
|
||||||
// //api.POST("sys/config", controller.SysConfig) // 配置
|
// //api.POST("sys/config", controller.SysConfig) // 配置
|
||||||
// api.POST("step/config", controller.StepConfig) // 步数配置
|
// api.POST("step/config", controller.StepConfig) // 步数配置
|
||||||
// //api.POST("upload_user_info", controller.UploadUserInfo) // 上传用户信息
|
// //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("wxpay_refund/notice", controller.PushWXPayRefundNotice) // 微信推送支付退款通知
|
||||||
api.POST("aliyun/sts_token", controller.AliyunStsTokenGet) // 阿里云上传图片token
|
api.POST("aliyun/sts_token", controller.AliyunStsTokenGet) // 阿里云上传图片token
|
||||||
api.POST("auto_reply/focus", controller.AutoReplyFocusMsg) // 自动回复
|
api.POST("auto_reply/focus", controller.AutoReplyFocusMsg) // 自动回复
|
||||||
|
|
Loading…
Reference in New Issue
Block a user