sleet alternatives and similar packages
Based on the "Financial" category.
Alternatively, view sleet alternatives based on common mentions on social networks and blogs.
-
Golang Crypto Trading Bot
A golang implementation of a console-based trading bot for cryptocurrency exchanges -
ach
ACH implements a reader, writer, and validator for Automated Clearing House (ACH) files. The HTTP server is available in a Docker image and the Go package is available. -
https://github.com/alpeb/go-finance
Go library containing a collection of financial functions for time value of money (annuities), cash flow, interest rate conversions, bonds and depreciation calculations. -
go-finnhub
Client for stock market, forex and crypto data from finnhub.io. Access real-time financial market data from 60+ stock exchanges, 10 forex brokers, and 15+ crypto exchanges.
WorkOS - The modern identity platform for B2B SaaS
Do you think we are missing an alternative of sleet or a related project?
README
Sleet
Payment abstraction library - interact with different Payment Service Providers (PsP) with one unified interface.
Installation
go get github.com/BoltApp/sleet
Methodology
Wherever possible, we try to use native Golang implementations of the PsP's API. We also assume that the caller can pass along raw credit card information (i.e. are PCI compliant)
Supported Gateway API Calls
- Authorize
- Capture
- Void
- Refund
Webhooks Support
We support abstracting PsP Webhook notifications into a common interface.
PsP Support Matrix
PsP | Gateway APIs | Webhooks |
---|---|---|
Adyen | โ | โ |
Authorize.Net | โ | โ |
Braintree | โ | โ |
CyberSource | โ | โ |
Checkout.com | โ | โ |
FirstData | โ | โ |
NMI | โ | โ |
Orbital | โ | โ |
RocketGate | โ | โ |
Stripe | โ | โ |
To run tests
Unit test
go test -v -tags=unit $(go list ./... | grep -v integration-tests)
Integration test
The following environment variables are needed in order to run tests
```shell script $ 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"
Then run tests with: `go test ./integration-tests/`
## Code Example for Auth + Capture
```go
import (
"github.com/BoltApp/sleet"
"github.com/BoltApp/sleet/gateways/authorize_net"
)
// Generate a client using your own credentials
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,
}
// To get specific response headers, add them to the request options.
// They will be attached to the 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)