修复 bug

This commit is contained in:
lwl0608 2024-01-08 21:24:45 +08:00
parent 2aef43b32a
commit 447ba67460
4 changed files with 31 additions and 9 deletions

View File

@ -18,9 +18,11 @@ func AlipayCallback(ctx *gin.Context) {
return
}
service.DefaultService.AlipayCallback(ctx, &vasproto.AlipayCallbackParamIn{
OrderId: bm.GetString("out_trade_no"),
AlipayOrderId: bm.GetString("trade_no"),
})
if bm.GetString("trade_status") == "TRADE_SUCCESS" {
service.DefaultService.AlipayCallback(ctx, &vasproto.AlipayCallbackParamIn{
OrderId: bm.GetString("out_trade_no"),
AlipayOrderId: bm.GetString("trade_no"),
})
}
ctx.String(200, "success")
}

View File

@ -219,6 +219,23 @@ func (m *Mysql) UpdateOrderStatus(ctx *gin.Context, tx *sqlx.Tx, orderId string,
return err
}
// 更新订单out_order_id
func (m *Mysql) UpdateOutOrderId(ctx *gin.Context, tx *sqlx.Tx, orderId string, outOrderId string) error {
var err error
sqlStr := "update " + TableOrder + " set out_order_id=? where id=?"
if tx != nil {
_, err = tx.ExecContext(ctx, sqlStr, outOrderId, orderId)
} else {
db := m.getDBVas()
_, err = db.ExecContext(ctx, sqlStr, outOrderId, orderId)
}
if err != nil {
logger.Error("UpdateOutOrderId fail, orderId: %v, outOrderId: %v, err: %v", orderId, outOrderId, err)
return err
}
return err
}
// 获取钱包 for update
func (m *Mysql) GetWalletForUpdate(ctx *gin.Context, tx *sqlx.Tx, mid int64) (wallet *dbstruct.Wallet, err error) {
var tmpWallet dbstruct.Wallet

View File

@ -1650,6 +1650,13 @@ func (v *Vas) AlipayCallback(ctx *gin.Context, p *vasproto.AlipayCallbackParamIn
}
afterStatus = dbstruct.VasOrderStatusPaySuccess
// 更新支付宝订单
err = v.store.UpdateOutOrderId(ctx, tx, orderId, alipayOrderId)
if err != nil {
logger.Error("UpdateOutOrderId fail, p: %v", util.ToJson(p))
return
}
// 商品判断
switch {
case product.Type == dbstruct.ProductTypeCoins:

View File

@ -59,12 +59,8 @@ func (c *AlipayClient) ParseNotify(req *http.Request) (notify gopay.BodyMap, 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 {
// logger.Error("VerifySign fail, bm: %v, err: %v", util.ToJson(notifyTmp), err)
// return
//}
ok, err := alipay.VerifySignWithCert("/app/wishpal-ironfan/etc/mix/alipaycert/alipayCertPublicKey_RSA2.crt", notifyTmp)
if !ok {
logger.Error("VerifySign fail, not ok, bm: %v", util.ToJson(notifyTmp))