This commit is contained in:
lwl0608 2024-02-18 23:47:58 +08:00
parent ef6538528d
commit c61abde23b
6 changed files with 54 additions and 17 deletions

View File

@ -12,7 +12,7 @@ import (
func AlipayCallback(ctx *gin.Context) {
//req, _ := ctx.GetRawData()
//logger.Info("_AlipayCallback req: %v", string(req))
bm, err := alipaycli.GetAlipayClient().ParseNotify(ctx.Request)
bm, err := alipaycli.GetDefaultAlipayClient().ParseNotify(ctx.Request)
if err != nil {
logger.Error("ParseNotify fail, req: %v, err: %v", util.ToJson(bm), err)
return

View File

@ -116,7 +116,7 @@ func (m *Mysql) CreateOrder(ctx *gin.Context, tx *sqlx.Tx, order *dbstruct.Order
" (id, mid, uid, product_id, pay_type, pay_amount, oid1, oid2, oid3, " +
" out_order_id, receipt_data, coins, order_status, order_from, " +
" ct, ut, ext, b_did, b_ver, b_osver, b_dt, b_ch, b_model, b_nt, ip) " +
" values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) "
" values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) "
if tx != nil {
_, err = tx.ExecContext(ctx, sqlStr,
order.GetID(), order.GetMid(), order.GetUid(), order.GetProductId(), order.GetPayType(), order.GetPayAmount(), order.GetOid1(), order.GetOid2(), order.GetOid3(),

View File

@ -168,7 +168,7 @@ func (v *Vas) CreateOrder(ctx *gin.Context, req *vasproto.CreateOrderReq) (data
case vasproto.PayTypeOp:
case vasproto.PayTypeAlipay:
alipayCli := alipaycli.GetAlipayClient()
alipayCli := alipaycli.GetDefaultAlipayClient()
appPayParam := &alipaycli.AppPayParam{
OutTradeNo: orderId,
Subject: product.Subject,
@ -182,7 +182,7 @@ func (v *Vas) CreateOrder(ctx *gin.Context, req *vasproto.CreateOrderReq) (data
}
req.Oid3 = alipayCli.AppId
case vasproto.PayTypeAlipayH5:
alipayCli := alipaycli.GetAlipayClient()
alipayCli := alipaycli.GetDefaultAlipayClient()
wapPayParam := &alipaycli.WapPayParam{
OutTradeNo: orderId,
Subject: product.Subject,
@ -1945,7 +1945,7 @@ func (v *Vas) WithdrawApply(ctx *gin.Context, req *vasproto.WithdrawApplyReq) (t
AlipayLoginId: alipayId,
AlipayName: alipayName,
}
transferResp, err = alipaycli.GetAlipayClient().UniTransfer(ctx, transferParam)
transferResp, err = alipaycli.GetDefaultAlipayClient().UniTransfer(ctx, transferParam)
if err != nil {
logger.Error("UniTransfer fail, param: %v, err: %v", util.ToJson(transferParam), err)
return
@ -2083,7 +2083,7 @@ func (v *Vas) DealOneOrder(ctx *gin.Context, orderId string) (err error) {
// 支付宝查询订单
switch order.GetPayType() {
case vasproto.PayTypeAlipayH5:
alipayCli := alipaycli.GetAlipayClient()
alipayCli := alipaycli.GetDefaultAlipayClient()
var alipayResp *alipay.TradeQueryResponse
alipayResp, err = alipayCli.QueryOrder(ctx, &alipaycli.QueryOrderParam{
OutTradeNo: orderId,

View File

@ -43,7 +43,6 @@ import (
"service/bizcommon/util"
"service/dbstruct"
"service/library/apollo"
"service/library/configcenter"
"service/library/contentaudit/imageaudit"
"service/library/contentaudit/textaudit"
"service/library/logger"
@ -129,10 +128,7 @@ func (s *Service) Init(c any) (err error) {
s.defaultMelody = melody.New()
err = alipaycli.InitMulti([]*configcenter.AlipayClientConfig{
cfg.Alipay,
cfg.AlipayMYTS,
})
err = alipaycli.InitMulti(cfg.Alipay, cfg.AlipayMYTS)
if err != nil {
logger.Error("alipaycli.Init fail, cfg: %v, err: %v", util.ToJson(cfg.Alipay), err)
return

View File

@ -24,16 +24,20 @@ const (
var allAlipayClients = map[string]*AlipayClient{}
func GetAlipayClient() *AlipayClient {
func GetDefaultAlipayClient() *AlipayClient {
return allAlipayClients[AppIdXinYiDaoLe]
}
func GetAlipayClientByAppId(appId string) *AlipayClient {
return allAlipayClients[appId]
}
type AlipayClient struct {
*alipay.Client
alipayPublicCertPath string
}
func InitMulti(cfgList []*configcenter.AlipayClientConfig) (err error) {
func InitMulti(cfgList ...*configcenter.AlipayClientConfig) (err error) {
for _, cfg := range cfgList {
var cli *AlipayClient
cli, err = NewAlipayClient(cfg)
@ -197,3 +201,26 @@ func (c *AlipayClient) QueryOrder(ctx context.Context, param *QueryOrderParam) (
}
return
}
// 退款申请
type RefundOneParam struct {
OutTradeNo string // 商家订单id我们自己的订单id
RefundAmount int64 // 退款金额,单位:分
RefundReason string // 退款理由
}
func (c *AlipayClient) RefundOne(ctx context.Context, param *RefundOneParam) (resp *alipay.TradeRefundResponse, err error) {
if len(param.RefundReason) <= 0 {
param.RefundReason = "退款"
}
bm := gopay.BodyMap{
"out_trade_no": param.OutTradeNo,
"refund_amount": fmt.Sprintf("%.2f", float64(param.RefundAmount)/100.0),
"refund_reason": param.RefundReason,
}
resp, err = c.TradeRefund(ctx, bm)
if err != nil {
return
}
return
}

View File

@ -13,12 +13,12 @@ import (
func TestMain(m *testing.M) {
cfg := new(conf.ConfigSt)
err := configcenter.LoadConfig("/Users/erwin/wishpalv2/service/etc/mix/mix-local.yaml", cfg)
err := configcenter.LoadConfig("/Users/erwin/wishpalv2/service/etc/mix/mix-prod.yaml", cfg)
if err != nil {
fmt.Printf("%v\n", err)
}
err = Init(cfg.AlipayMYTS)
err = InitMulti(cfg.Alipay, cfg.AlipayMYTS)
if err != nil {
fmt.Println(err)
os.Exit(1)
@ -27,7 +27,7 @@ func TestMain(m *testing.M) {
}
func TestAlipayClient_WapPay(t *testing.T) {
cli := GetAlipayClient()
cli := GetDefaultAlipayClient()
paramStr, err := cli.WapPay(context.Background(), &WapPayParam{
OutTradeNo: idgenerator.GenOrderId(),
Subject: "哈哈",
@ -42,7 +42,7 @@ func TestAlipayClient_WapPay(t *testing.T) {
}
func TestAlipayClient_QueryOrder(t *testing.T) {
cli := GetAlipayClient()
cli := GetDefaultAlipayClient()
resp, err := cli.QueryOrder(context.Background(), &QueryOrderParam{
OutTradeNo: "1750539072771731456",
})
@ -52,3 +52,17 @@ func TestAlipayClient_QueryOrder(t *testing.T) {
}
fmt.Println(util.ToJson(resp))
}
func TestAlipayClient_RefundOne(t *testing.T) {
cli := GetAlipayClientByAppId(AppIdXinYiDaoLe)
resp, err := cli.RefundOne(context.Background(), &RefundOneParam{
OutTradeNo: "1750539072771731456",
RefundAmount: 0,
RefundReason: "测试退款",
})
if err != nil {
fmt.Println(err.Error())
return
}
fmt.Println(util.ToJson(resp))
}