package pay

import (
	"github.com/stripe/stripe-go/v74"
	"github.com/stripe/stripe-go/v74/checkout/session"
)

type Stripe struct {
	Key string `json:"key"`
}

// 生成预付款
func (stripePay *Stripe) GeneratePrepayment(req *GeneratePrepaymentReq) (res *GeneratePrepaymentRes, err error) {
	var productData stripe.CheckoutSessionLineItemPriceDataProductDataParams

	if req.ProductName != "" {
		productData.Name = stripe.String(req.ProductName)
	}

	if req.ProductDescription != "" {
		productData.Description = stripe.String(req.ProductDescription)
	}

	if len(req.ProductImages) > 0 {
		productData.Images = req.ProductImages
	}
	// var images = make([]*string, 1)
	// var image string = "https://img2.woyaogexing.com/2023/07/25/133132a32b9f79cfad84965a4bea57e0.jpg"
	// images[0] = stripe.String(image)
	// productData.Images = images
	stripe.Key = stripePay.Key

	params := &stripe.CheckoutSessionParams{
		LineItems: []*stripe.CheckoutSessionLineItemParams{
			{
				PriceData: &stripe.CheckoutSessionLineItemPriceDataParams{
					Currency:    stripe.String(req.Currency),
					ProductData: &productData,
					UnitAmount:  stripe.Int64(req.Amount),
				},
				Quantity: stripe.Int64(req.Quantity),
			},
		},
		Mode:       stripe.String(string(stripe.CheckoutSessionModePayment)),
		SuccessURL: stripe.String(req.SuccessURL),
		CancelURL:  stripe.String(req.CancelURL),
	}
	result, err := session.New(params)

	if err != nil {
		return nil, err
	}

	return &GeneratePrepaymentRes{
		URL:     result.URL,
		TradeNo: result.ID,
	}, err
}