golang统一多支付服务提供商接口的在线支付处理插件库sleet的使用
Golang统一多支付服务提供商接口的在线支付处理插件库Sleet的使用
简介
Sleet是一个支付抽象库,可以通过统一的接口与不同的支付服务提供商(Payment Service Providers, PsP)进行交互。
安装
go get github.com/BoltApp/sleet
方法原理
在可能的情况下,我们尽量使用PsP API的原生Golang实现。我们还假设调用者可以传递原始信用卡信息(即符合PCI标准)。
支持的网关API调用
- 授权(Authorize)
- 捕获(Capture)
- 作废(Void)
- 退款(Refund)
Webhooks支持
我们支持将PsP Webhook通知抽象为通用接口。
PsP支持矩阵
PsP | 网关API | Webhooks |
---|---|---|
Adyen | ✅ | ❌ |
Authorize.Net | ✅ | ❌ |
Braintree | ✅ | ❌ |
CyberSource | ✅ | ❌ |
Checkout.com | ✅ | ❌ |
FirstData | ✅ | ❌ |
NMI | ✅ | ❌ |
Orbital | ✅ | ❌ |
RocketGate | ✅ | ❌ |
Stripe | ✅ | ❌ |
运行测试
单元测试
go test -v -tags=unit $(go list ./... | grep -v integration-tests)
集成测试
需要设置以下环境变量:
export ADYEN_USERNAME="YOUR_ADYEN_WEBSERVICE_USERNAME"
export ADYEN_ACCOUNT="YOUR_ADYEN_MERCHANT_ACCOUNT"
export ADYEN_PASSWORD="YOUR_ADYEN_WEBSERVICE_PASSWORD"
export STRIPE_TEST_KEY="YOUR_STRIPE_API_KEY"
export AUTH_NET_LOGIN_ID="YOUR_AUTHNET_LOGIN"
export AUTH_NET_TXN_KEY="YOUR_AUTHNET_TXN_KEY"
export BRAINTREE_MERCHANT_ID="YOUR_BRAINTREE_MERCHANT_ACCOUNT"
export BRAINTREE_PUBLIC_KEY="YOUR_BRAINTREE_PUBLIC_KEY"
export BRAINTREE_PRIVATE_ID="YOUR_BRAINTREE_PRIVATE_KEY"
export CYBERSOURCE_ACCOUNT="YOUR_CYBS_ACCOUNT"
export CYBERSOURCE_API_KEY="YOUR_CYBS_KEY"
export CYBERSOURCE_SHARED_SECRET="YOUR_CYBS_SECRET"
export NMI_SECURITY_KEY="YOUR_NMI_PRIVATE_KEY"
export CHECKOUTCOM_TEST_KEY="YOUR_CHECKOUTCOM_PRIVATE_KEY"
export CHECKOUTCOM_TEST_KEY_WITH_PCID="YOUR_CHECKOUTCOM_PRIVATE_KEY_WITH_PROCESSING_CHANNEL_ID"
export CHECKOUTCOM_TEST_PCID="YOUR_CHECKOUTCOM_PROCESSING_CHANNEL_ID"
然后运行测试:
go test ./integration-tests/
授权+捕获代码示例
import (
"github.com/BoltApp/sleet"
"github.com/BoltApp/sleet/gateways/authorize_net"
)
// 使用自己的凭证生成客户端
client := authorize_net.NewClient("AUTH_NET_LOGIN_ID", "AUTH_NET_TXN_KEY")
amount := sleet.Amount{
Amount: 100,
Currency: "USD",
}
card := sleet.CreditCard{
FirstName: "Bolt",
LastName: "Checkout",
Number: "4111111111111111",
ExpMonth: 8,
EpxYear: 2010,
CVV: "000",
}
streetAddress := "22 Linda St."
locality := "Hoboken"
regionCode := "NJ"
postalCode := "07030"
countryCode := "US"
address := sleet.BillingAddress{
StreetAddress1: &streetAddress,
Locality: &locality,
RegionCode: ®ionCode,
PostalCode: &postalCode,
CountryCode: &countryCode,
}
// 要获取特定的响应头,将它们添加到请求选项中
// 它们将被附加到AuthorizationResponse
options := make(map[string]interface{})
options["ResponseHeader"] = []string{"x-test-header"}
authorizeRequest := sleet.AuthorizationRequest{
Amount: &amount,
CreditCard: &card,
BillingAddress: &address,
Options: options,
}
authorizeResponse, _ := client.Authorize(&authorizeRequest)
captureRequest := sleet.CaptureRequest{
Amount: &amount,
TransactionReference: authorizeResponse.TransactionReference,
}
client.Capture(&captureRequest)
这个示例展示了如何使用Sleet库与Authorize.Net支付网关进行交互,包括创建授权请求和捕获支付。你可以根据需要替换为其他支持的支付网关。
更多关于golang统一多支付服务提供商接口的在线支付处理插件库sleet的使用的实战教程也可以访问 https://www.itying.com/category-94-b0.html
1 回复