feat: payment refund
This commit is contained in:
@@ -78,12 +78,13 @@ func (l *PayLogic) Pay(in *payment.PayReq) (*payment.Response, error) {
|
||||
|
||||
switch channelCode {
|
||||
case pkgpay.ChannelWechat:
|
||||
openid, oErr := loadOpenID(l.ctx, l.svcCtx.UserSvcName, loginUser.ID)
|
||||
if oErr != nil || openid == utils.StringEmpty {
|
||||
l.Errorf("pay openid: %v", oErr)
|
||||
return outResponse(utils.Fail, "未绑定微信openid"), nil
|
||||
if client == pkgpay.ClientApp {
|
||||
break
|
||||
}
|
||||
prepayReq.OpenID = openid
|
||||
if in.Openid == utils.StringEmpty {
|
||||
return outResponse(utils.ErrorParams, "openid不能为空"), nil
|
||||
}
|
||||
prepayReq.OpenID = in.Openid
|
||||
case pkgpay.ChannelAlipay, pkgpay.ChannelBank:
|
||||
return outResponse(utils.Fail, "支付渠道暂未开通"), nil
|
||||
}
|
||||
|
||||
@@ -1,35 +0,0 @@
|
||||
package logic
|
||||
|
||||
import (
|
||||
"context"
|
||||
"fmt"
|
||||
|
||||
"lone-services/pkg/utils"
|
||||
userpb "lone-services/rpc/user/pb"
|
||||
"lone-services/services/payment/internal/svc"
|
||||
)
|
||||
|
||||
func loadOpenID(ctx context.Context, userSvcName string, userID int64) (string, error) {
|
||||
if userSvcName == utils.StringEmpty {
|
||||
return utils.StringEmpty, fmt.Errorf("user service not configured")
|
||||
}
|
||||
if userID < utils.NumberOne {
|
||||
return utils.StringEmpty, fmt.Errorf("invalid user id")
|
||||
}
|
||||
|
||||
cli, err := svc.GetRpcClient(userSvcName)
|
||||
if err != nil {
|
||||
return utils.StringEmpty, err
|
||||
}
|
||||
info, err := userpb.NewUserClient(cli.Conn()).InternalGetUserInfo(ctx, &userpb.InternalGetUserInfoReq{
|
||||
UserId: userID,
|
||||
CredentialType: "openid",
|
||||
})
|
||||
if err != nil {
|
||||
return utils.StringEmpty, err
|
||||
}
|
||||
if info == nil || info.Identifier == utils.StringEmpty {
|
||||
return utils.StringEmpty, fmt.Errorf("openid credential not found")
|
||||
}
|
||||
return info.Identifier, nil
|
||||
}
|
||||
@@ -7,7 +7,7 @@ package server
|
||||
import (
|
||||
"context"
|
||||
|
||||
"lone-services/rpc/payment/pb"
|
||||
payment "lone-services/rpc/payment/pb"
|
||||
"lone-services/services/payment/internal/logic"
|
||||
"lone-services/services/payment/internal/svc"
|
||||
)
|
||||
@@ -23,31 +23,26 @@ func NewPaymentServer(svcCtx *svc.ServiceContext) *PaymentServer {
|
||||
}
|
||||
}
|
||||
|
||||
// 发起支付
|
||||
func (s *PaymentServer) Pay(ctx context.Context, in *payment.PayReq) (*payment.Response, error) {
|
||||
l := logic.NewPayLogic(ctx, s.svcCtx)
|
||||
return l.Pay(in)
|
||||
}
|
||||
|
||||
// 查询支付状态
|
||||
func (s *PaymentServer) Query(ctx context.Context, in *payment.QueryReq) (*payment.Response, error) {
|
||||
l := logic.NewQueryLogic(ctx, s.svcCtx)
|
||||
return l.Query(in)
|
||||
}
|
||||
|
||||
// 关闭支付
|
||||
func (s *PaymentServer) Close(ctx context.Context, in *payment.CloseReq) (*payment.Response, error) {
|
||||
l := logic.NewCloseLogic(ctx, s.svcCtx)
|
||||
return l.Close(in)
|
||||
}
|
||||
|
||||
// 退款
|
||||
func (s *PaymentServer) Refund(ctx context.Context, in *payment.RefundReq) (*payment.Response, error) {
|
||||
l := logic.NewRefundLogic(ctx, s.svcCtx)
|
||||
return l.Refund(in)
|
||||
}
|
||||
|
||||
// 支付回调(由 BFF/网关转发原始 body + headers)
|
||||
func (s *PaymentServer) Notify(ctx context.Context, in *payment.NotifyReq) (*payment.Response, error) {
|
||||
l := logic.NewNotifyLogic(ctx, s.svcCtx)
|
||||
return l.Notify(in)
|
||||
|
||||
Reference in New Issue
Block a user