优化结构
This commit is contained in:
@@ -6,42 +6,42 @@ import (
|
||||
"strings"
|
||||
)
|
||||
|
||||
// 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 = bizpayment.PaymentAdapter
|
||||
|
||||
type Factory struct{}
|
||||
|
||||
func NewFactory() *Factory { return &Factory{} }
|
||||
|
||||
type adapterFactory func() Adapter
|
||||
type adapterFactory func() bizpayment.PaymentAdapter
|
||||
|
||||
// adapterFactories is the single payment integration registration point.
|
||||
// Keep constructors zero-state: provider configuration belongs to each call,
|
||||
// so an adapter can never accidentally retain secrets or order data.
|
||||
var adapterFactories = map[string]adapterFactory{
|
||||
bizpayment.PaymentAlipay: func() Adapter { return &alipayAdapter{} },
|
||||
bizpayment.PaymentAlipayV3: func() Adapter { return &alipayV3Adapter{} },
|
||||
bizpayment.PaymentWechatV2: func() Adapter { return &wechatV2Adapter{} },
|
||||
bizpayment.PaymentWechatV3: func() Adapter { return &wechatV3Adapter{} },
|
||||
bizpayment.PaymentApple: func() Adapter { return &appleAdapter{} },
|
||||
bizpayment.PaymentDouyin: func() Adapter { return &douyinAdapter{} },
|
||||
bizpayment.PaymentQQ: func() Adapter { return &qqAdapter{} },
|
||||
bizpayment.PaymentAllinPay: func() Adapter { return &allinpayAdapter{} },
|
||||
bizpayment.PaymentLakala: func() Adapter { return &lakalaAdapter{} },
|
||||
bizpayment.PaymentPayPal: func() Adapter { return &paypalAdapter{} },
|
||||
bizpayment.PaymentSaobei: func() Adapter { return &saobeiAdapter{} },
|
||||
bizpayment.PaymentChinaums: func() Adapter { return newVendorAdapter(bizpayment.PaymentChinaums, vendorChinaums) },
|
||||
bizpayment.PaymentSFT: func() Adapter { return newVendorAdapter(bizpayment.PaymentSFT, vendorSFT) },
|
||||
bizpayment.PaymentSuperPay: func() Adapter { return newVendorAdapter(bizpayment.PaymentSuperPay, vendorSupperPay) },
|
||||
bizpayment.PaymentWechatGame: func() Adapter { return newVendorAdapter(bizpayment.PaymentWechatGame, vendorWechatGame) },
|
||||
bizpayment.PaymentDouyinGame: func() Adapter { return newVendorAdapter(bizpayment.PaymentDouyinGame, vendorDouyinGame) },
|
||||
bizpayment.PaymentAlipay: func() bizpayment.PaymentAdapter { return &alipayAdapter{} },
|
||||
bizpayment.PaymentAlipayV3: func() bizpayment.PaymentAdapter { return &alipayV3Adapter{} },
|
||||
bizpayment.PaymentWechatV2: func() bizpayment.PaymentAdapter { return &wechatV2Adapter{} },
|
||||
bizpayment.PaymentWechatV3: func() bizpayment.PaymentAdapter { return &wechatV3Adapter{} },
|
||||
bizpayment.PaymentApple: func() bizpayment.PaymentAdapter { return &appleAdapter{} },
|
||||
bizpayment.PaymentDouyin: func() bizpayment.PaymentAdapter { return &douyinAdapter{} },
|
||||
bizpayment.PaymentQQ: func() bizpayment.PaymentAdapter { return &qqAdapter{} },
|
||||
bizpayment.PaymentAllinPay: func() bizpayment.PaymentAdapter { return &allinpayAdapter{} },
|
||||
bizpayment.PaymentLakala: func() bizpayment.PaymentAdapter { return &lakalaAdapter{} },
|
||||
bizpayment.PaymentPayPal: func() bizpayment.PaymentAdapter { return &paypalAdapter{} },
|
||||
bizpayment.PaymentSaobei: func() bizpayment.PaymentAdapter { return &saobeiAdapter{} },
|
||||
bizpayment.PaymentChinaums: func() bizpayment.PaymentAdapter { return newVendorAdapter(bizpayment.PaymentChinaums, vendorChinaums) },
|
||||
bizpayment.PaymentSFT: func() bizpayment.PaymentAdapter { return newVendorAdapter(bizpayment.PaymentSFT, vendorSFT) },
|
||||
bizpayment.PaymentSuperPay: func() bizpayment.PaymentAdapter { return newVendorAdapter(bizpayment.PaymentSuperPay, vendorSupperPay) },
|
||||
bizpayment.PaymentWechatGame: func() bizpayment.PaymentAdapter {
|
||||
return newVendorAdapter(bizpayment.PaymentWechatGame, vendorWechatGame)
|
||||
},
|
||||
bizpayment.PaymentDouyinGame: func() bizpayment.PaymentAdapter {
|
||||
return newVendorAdapter(bizpayment.PaymentDouyinGame, vendorDouyinGame)
|
||||
},
|
||||
}
|
||||
|
||||
// New constructs the SDK-backed adapter for a configured provider. Provider
|
||||
// identifiers are normalized at this I/O boundary so direct callers get the
|
||||
// same behavior as the configuration and business layers.
|
||||
func New(provider string) (Adapter, error) {
|
||||
func (*Factory) New(provider string) (bizpayment.PaymentAdapter, error) {
|
||||
provider = strings.ToLower(strings.TrimSpace(provider))
|
||||
factory, ok := adapterFactories[provider]
|
||||
if !ok {
|
||||
@@ -49,7 +49,3 @@ func New(provider string) (Adapter, error) {
|
||||
}
|
||||
return factory(), nil
|
||||
}
|
||||
|
||||
func (*Factory) New(provider string) (bizpayment.PaymentAdapter, error) {
|
||||
return New(provider)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user