This commit is contained in:
lwl0608 2023-12-29 20:47:34 +08:00
parent 9916c644de
commit 1277bbafc9
4 changed files with 21 additions and 4 deletions

View File

@ -40,6 +40,7 @@ type CreateOrderReq struct {
Oid1 string
Oid2 string
Oid3 string
ReturnUrl string
}
type CreateOrderData struct {
@ -122,7 +123,7 @@ type H5DirectUnlockWechatReq struct {
}
type H5DirectUnlockWechatData struct {
CoinEnough int `json:"coin_enough"` // 0:不够(用下面的支付宝参数)1:够
CoinEnough int32 `json:"coin_enough"` // 0:不够(用下面的支付宝参数)1:够
OrderId string `json:"order_id"` // 订单id
AlipayParamStr string `json:"alipay_param_str"` // 支付宝 app支付参数
AlipayH5ParamStr string `json:"alipay_h5_param_str"` // 支付宝 h5支付参数

View File

@ -148,7 +148,7 @@ func (v *Vas) CreateOrder(ctx *gin.Context, req *vasproto.CreateOrderReq) (data
OutTradeNo: orderId,
Subject: product.Subject,
TotalAmount: product.RealPrice,
TimeOutSeconds: 7200,
TimeOutSeconds: 900,
}
alipayParamStr, err = alipayCli.AppPay(ctx, appPayParam)
if err != nil {
@ -161,7 +161,8 @@ func (v *Vas) CreateOrder(ctx *gin.Context, req *vasproto.CreateOrderReq) (data
OutTradeNo: orderId,
Subject: product.Subject,
TotalAmount: product.RealPrice,
TimeOutSeconds: 7200,
TimeOutSeconds: 900,
ReturnUrl: req.ReturnUrl,
}
alipayH5ParamStr, err = alipayCli.WapPay(ctx, appPayParam)
if err != nil {
@ -1362,12 +1363,16 @@ func (v *Vas) H5DirectUnlockWechat(ctx *gin.Context, req *vasproto.H5DirectUnloc
// 金币够不够
if wallet.GetCoins() >= uVas.GetH5WechatCoinPrice() {
v.OneStepUnlockContact(ctx, &vasproto.OneStepUnlockContactReq{
_, _, _, err = v.OneStepUnlockContact(ctx, &vasproto.OneStepUnlockContactReq{
BaseRequest: req.BaseRequest,
ContactProductId: dbstruct.ProductIdContactWechat,
Uid: req.Uid,
InviterMid: req.InviterMid,
})
if err != nil {
logger.Error("OneStepUnlockContact fail, req: %v, err: %v", util.ToJson(req), err)
return
}
return
}
@ -1381,6 +1386,7 @@ func (v *Vas) H5DirectUnlockWechat(ctx *gin.Context, req *vasproto.H5DirectUnloc
CalcPrice: uVas.GetH5WechatCoinPrice() * 10,
Uid: uid,
Oid1: fmt.Sprintf("%d", uid),
ReturnUrl: "https://tiefen.fun/purchased",
})
if err != nil {
logger.Error("CreateOrder fail, req: %v, err: %v", util.ToJson(req), err)
@ -1440,6 +1446,10 @@ func (v *Vas) AlipayCallback(ctx *gin.Context, p *vasproto.AlipayCallbackParamIn
// ali_order_id检查
outOrder, err := v.store.GetOrderByOutOrderId(ctx, nil, alipayOrderId)
switch err {
case sql.ErrNoRows:
err = nil
}
if err != nil {
logger.Error("GetOrderByOutOrderId fail, p: %v, err: %v", util.ToJson(p), err)
return

View File

@ -920,6 +920,7 @@ func (s *Service) GetCoinsProductList(ctx *gin.Context, req *vasproto.GetCoinsPr
}
func (s *Service) CreateOrder(ctx *gin.Context, req *vasproto.CreateOrderReq) (data *vasproto.CreateOrderData, ec errcode.ErrCode) {
req.ReturnUrl = "https://tiefen.fun/pay"
data, err := _DefaultVas.CreateOrder(ctx, req)
ec, err = errs.DealVasErr(err)
if err != nil {

View File

@ -48,6 +48,7 @@ func (c *AlipayClient) ParseNotify(req *http.Request) (notify gopay.BodyMap, err
logger.Error("ParseNotifyToBodyMap fail, req: %v, err: %v", util.ToJson(req), err)
return
}
logger.Info("Alipay ParseNotify, %v", util.ToJson(notifyTmp))
// 验签
ok, err := alipay.VerifySign("MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAl9Pj5j6cNRdaDyWTWWFkcBViDqw/py1bDrqe7VykND1JywgLsFogeKGG0YhJfTfEeExAlGlP2DUV7z0uc8QhCMF7N+qdfXNb/RemFIpSs71i9kkaFIJEl20JnWipps96LwZLDpNRck3Nho/Xnbs4wuft3sQtd7T0sB2zEYyl7OyuTqehcoz3uAQp0JOYBosVPpgofaD6BN2RSZQ33QvqS37w3xHLif8P7hfYXdeIe+JxeHmchzQK22dRzJinYfU+pKE5J2Wm+dq1l3/ls4w8Xc3RyqvvW2UMx2lOMtSg2WWXDDi1skmHn/l1BbBP/uogNq4Avf50eoZ1UE6JxPrZpQIDAQAB", notifyTmp)
if err != nil {
@ -95,6 +96,7 @@ type WapPayParam struct {
Subject string // 主题
TotalAmount int64 // 金额,单位:分
TimeOutSeconds int // 订单有效时间,单位:秒
ReturnUrl string // 支付宝return_url
}
func (c *AlipayClient) WapPay(ctx context.Context, param *WapPayParam) (alipayWapParamStr string, err error) {
@ -108,6 +110,9 @@ func (c *AlipayClient) WapPay(ctx context.Context, param *WapPayParam) (alipayWa
"time_expire": time.Now().Add(time.Second * time.Duration(param.TimeOutSeconds)).Format("2006-01-02 15:04:05"),
"notify_url": c.NotifyUrl,
}
if len(param.ReturnUrl) > 0 {
bm["return_url"] = param.ReturnUrl
}
alipayWapParamStr, err = c.TradeWapPay(ctx, bm)
if err != nil {
return