fix:调整支付方式

This commit is contained in:
momo 2023-09-11 13:59:16 +08:00
parent 48a6ae9888
commit 1a6822da64

View File

@ -3,12 +3,14 @@ package pay
import ( import (
"github.com/stripe/stripe-go/v74" "github.com/stripe/stripe-go/v74"
"github.com/stripe/stripe-go/v74/checkout/session" "github.com/stripe/stripe-go/v74/checkout/session"
"github.com/stripe/stripe-go/v74/paymentintent"
"github.com/stripe/stripe-go/v74/refund" "github.com/stripe/stripe-go/v74/refund"
"github.com/zeromicro/go-zero/core/logx" "github.com/zeromicro/go-zero/core/logx"
) )
type Stripe struct { type Stripe struct {
Key string `json:"key"` Key string `json:"key"`
PayType string `json:"pay_type"`
} }
// 生成退款 // 生成退款
@ -43,49 +45,70 @@ func (stripePay *Stripe) GeneratePrepayment(req *GeneratePrepaymentReq) (res *Ge
// images[0] = stripe.String(image) // images[0] = stripe.String(image)
// productData.Images = images // productData.Images = images
stripe.Key = stripePay.Key stripe.Key = stripePay.Key
var resultPayment resultPayment
// session 方式 switch stripePay.PayType {
params := &stripe.CheckoutSessionParams{ case "session":
PaymentIntentData: &stripe.CheckoutSessionPaymentIntentDataParams{Metadata: map[string]string{"order_sn": req.OrderSn}}, // session 方式
// Params: stripe.Params{Metadata: map[string]string{"order_id": "1111111111111"}}, params := &stripe.CheckoutSessionParams{
PaymentMethodTypes: stripe.StringSlice([]string{ PaymentIntentData: &stripe.CheckoutSessionPaymentIntentDataParams{Metadata: map[string]string{"order_sn": req.OrderSn}},
"card", // Params: stripe.Params{Metadata: map[string]string{"order_id": "1111111111111"}},
// "ideal", PaymentMethodTypes: stripe.StringSlice([]string{
}), "card",
LineItems: []*stripe.CheckoutSessionLineItemParams{ // "ideal",
{ }),
PriceData: &stripe.CheckoutSessionLineItemPriceDataParams{ LineItems: []*stripe.CheckoutSessionLineItemParams{
Currency: stripe.String(req.Currency), {
ProductData: &productData, PriceData: &stripe.CheckoutSessionLineItemPriceDataParams{
UnitAmount: stripe.Int64(req.Amount), Currency: stripe.String(req.Currency),
ProductData: &productData,
UnitAmount: stripe.Int64(req.Amount),
},
Quantity: stripe.Int64(req.Quantity),
}, },
Quantity: stripe.Int64(req.Quantity),
}, },
}, Mode: stripe.String(string(stripe.CheckoutSessionModePayment)),
Mode: stripe.String(string(stripe.CheckoutSessionModePayment)), SuccessURL: stripe.String(req.SuccessURL),
SuccessURL: stripe.String(req.SuccessURL), CancelURL: stripe.String(req.CancelURL),
CancelURL: stripe.String(req.CancelURL), }
} resCheckoutSession, err := session.New(params)
result, err := session.New(params) if err != nil {
return nil, err
// 密钥方式 }
// params := &stripe.PaymentIntentParams{ resultPayment.Url = resCheckoutSession.URL
// Amount: stripe.Int64(req.Amount), resultPayment.SessionId = resCheckoutSession.ID
// Currency: stripe.String(string(req.Currency)), case "intent":
// AutomaticPaymentMethods: &stripe.PaymentIntentAutomaticPaymentMethodsParams{ // 密钥方式
// Enabled: stripe.Bool(true), params := &stripe.PaymentIntentParams{
// }, Amount: stripe.Int64(req.Amount),
// } Currency: stripe.String(string(req.Currency)),
// result, err := paymentintent.New(params) AutomaticPaymentMethods: &stripe.PaymentIntentAutomaticPaymentMethodsParams{
Enabled: stripe.Bool(true),
if err != nil { },
return nil, err PaymentMethodTypes: stripe.StringSlice([]string{
"card",
// "ideal",
}),
}
resPaymentintent, err := paymentintent.New(params)
if err != nil {
return nil, err
}
resultPayment.TradeNo = resPaymentintent.ID
resultPayment.ClientSecret = resPaymentintent.ClientSecret
default:
} }
return &GeneratePrepaymentRes{ return &GeneratePrepaymentRes{
URL: result.URL, URL: resultPayment.Url,
//TradeNo: result.ID, SessionId: resultPayment.SessionId,
SessionId: result.ID, TradeNo: resultPayment.TradeNo,
// ClientSecret: result.ClientSecret, ClientSecret: resultPayment.ClientSecret,
}, err }, err
} }
type resultPayment struct {
Url string
SessionId string
TradeNo string
ClientSecret string
}