Merge branch 'develop' of https://gitee.com/fusenpack/fusenapi into feature/auth

This commit is contained in:
eson
2023-07-28 13:10:32 +08:00
31 changed files with 809 additions and 97 deletions

View File

@@ -0,0 +1,36 @@
package encryption_decryption
import (
"bytes"
"crypto/md5"
"encoding/hex"
"encoding/json"
"sort"
"strings"
)
func MakeSign(params map[string]interface{}) string {
// 排序
keys := make([]string, len(params))
i := 0
for k, _ := range params {
keys[i] = k
i++
}
sort.Strings(keys)
byteBuf := bytes.NewBuffer([]byte{})
encoder := json.NewEncoder(byteBuf)
encoder.SetEscapeHTML(false)
err := encoder.Encode(params)
if err != nil {
panic(err)
}
data := byteBuf.String()
h := md5.New()
h.Write([]byte(strings.TrimRight(data, "\n")))
return hex.EncodeToString(h.Sum(nil))
}

View File

@@ -24,6 +24,7 @@ type Pay interface {
}
type GeneratePrepaymentReq struct {
OrderSn string `json:"order_sn"` // 订单编号
Amount int64 `json:"amount"` // 支付金额
Currency string `json:"currency"` // 支付货币
ProductName string `json:"product_name"` // 商品名称
@@ -35,6 +36,8 @@ type GeneratePrepaymentReq struct {
}
type GeneratePrepaymentRes struct {
URL string `json:"url"` // 支付重定向地址
TradeNo string `json:"trade_no"` //交易ID
URL string `json:"url"` // 支付重定向地址
TradeNo string `json:"trade_no"` //交易ID
ClientSecret string `json:"clientSecret"` //交易密钥
SessionId string `json:"session_id"` //SessionId
}

View File

@@ -12,6 +12,7 @@ type Stripe struct {
// 生成预付款
func (stripePay *Stripe) GeneratePrepayment(req *GeneratePrepaymentReq) (res *GeneratePrepaymentRes, err error) {
var productData stripe.CheckoutSessionLineItemPriceDataProductDataParams
// productData.Metadata = map[string]string{"order_id": "33333333333333"}
if req.ProductName != "" {
productData.Name = stripe.String(req.ProductName)
@@ -30,7 +31,14 @@ func (stripePay *Stripe) GeneratePrepayment(req *GeneratePrepaymentReq) (res *Ge
// productData.Images = images
stripe.Key = stripePay.Key
// session 方式
params := &stripe.CheckoutSessionParams{
PaymentIntentData: &stripe.CheckoutSessionPaymentIntentDataParams{Metadata: map[string]string{"order_sn": req.OrderSn}},
// Params: stripe.Params{Metadata: map[string]string{"order_id": "1111111111111"}},
PaymentMethodTypes: stripe.StringSlice([]string{
"card",
// "ideal",
}),
LineItems: []*stripe.CheckoutSessionLineItemParams{
{
PriceData: &stripe.CheckoutSessionLineItemPriceDataParams{
@@ -47,12 +55,24 @@ func (stripePay *Stripe) GeneratePrepayment(req *GeneratePrepaymentReq) (res *Ge
}
result, err := session.New(params)
// 密钥方式
// params := &stripe.PaymentIntentParams{
// Amount: stripe.Int64(req.Amount),
// Currency: stripe.String(string(req.Currency)),
// AutomaticPaymentMethods: &stripe.PaymentIntentAutomaticPaymentMethodsParams{
// Enabled: stripe.Bool(true),
// },
// }
// result, err := paymentintent.New(params)
if err != nil {
return nil, err
}
return &GeneratePrepaymentRes{
URL: result.URL,
TradeNo: result.ID,
URL: result.URL,
//TradeNo: result.ID,
SessionId: result.ID,
// ClientSecret: result.ClientSecret,
}, err
}