57 lines
2.0 KiB
Go
57 lines
2.0 KiB
Go
package payment
|
|
|
|
import (
|
|
"context"
|
|
"fmt"
|
|
bizpayment "kra/internal/biz/payment"
|
|
)
|
|
|
|
// Adapter is the provider boundary used by the payment repository. Provider
|
|
// SDK types stay in this package and are normalized to biz/payment results.
|
|
type Adapter interface {
|
|
Create(context.Context, *bizpayment.PaymentRequest, map[string]any) (*bizpayment.PaymentResult, error)
|
|
Query(context.Context, string, map[string]any) (*bizpayment.PaymentResult, error)
|
|
Refund(context.Context, *bizpayment.PaymentRefundRequest, map[string]any) (*bizpayment.PaymentResult, error)
|
|
Callback(context.Context, *bizpayment.PaymentCallback, map[string]any) (*bizpayment.PaymentResult, error)
|
|
}
|
|
|
|
// New constructs the SDK-backed adapter for a configured provider.
|
|
func New(provider string) (Adapter, error) {
|
|
switch provider {
|
|
case bizpayment.PaymentAlipay:
|
|
return &alipayAdapter{}, nil
|
|
case bizpayment.PaymentAlipayV3:
|
|
return &alipayV3Adapter{}, nil
|
|
case bizpayment.PaymentWechatV2:
|
|
return &wechatV2Adapter{}, nil
|
|
case bizpayment.PaymentWechatV3:
|
|
return &wechatV3Adapter{}, nil
|
|
case bizpayment.PaymentApple:
|
|
return &appleAdapter{}, nil
|
|
case bizpayment.PaymentDouyin:
|
|
return &douyinAdapter{}, nil
|
|
case bizpayment.PaymentQQ:
|
|
return &qqAdapter{}, nil
|
|
case bizpayment.PaymentAllinPay:
|
|
return &allinpayAdapter{}, nil
|
|
case bizpayment.PaymentLakala:
|
|
return &lakalaAdapter{}, nil
|
|
case bizpayment.PaymentPayPal:
|
|
return &paypalAdapter{}, nil
|
|
case bizpayment.PaymentSaobei:
|
|
return &saobeiAdapter{}, nil
|
|
case bizpayment.PaymentChinaums:
|
|
return newVendorAdapter(provider, vendorChinaums), nil
|
|
case bizpayment.PaymentSFT:
|
|
return newVendorAdapter(provider, vendorSFT), nil
|
|
case bizpayment.PaymentSuperPay:
|
|
return newVendorAdapter(provider, vendorSupperPay), nil
|
|
case bizpayment.PaymentWechatGame:
|
|
return newVendorAdapter(provider, vendorWechatGame), nil
|
|
case bizpayment.PaymentDouyinGame:
|
|
return newVendorAdapter(provider, vendorDouyinGame), nil
|
|
default:
|
|
return nil, fmt.Errorf("支付渠道 %s 没有适配器", provider)
|
|
}
|
|
}
|