Categorygithub.com/checkout/checkout-sdk-go
modulepackage
0.0.23
Repository: https://github.com/checkout/checkout-sdk-go.git
Documentation: pkg.go.dev

# README

Checkout.com Go SDK

Status

The official [Checkout][checkout] Go client library.

Getting started

Make sure your project is using Go Modules (it will have a go.mod file in its root if it already is):

go mod init
import (
    "github.com/checkout/checkout-sdk-go"
)

Run any of the normal go commands (build/install/test). The Go toolchain will resolve and fetch the checkout-sdk-go module automatically.

API Keys

This SDK can be used with two different pair of API keys provided by Checkout. However, using different API keys imply using specific API features. Please find in the table below the types of keys that can be used within this SDK.

Account SystemPublic Key (example)Secret Key (example)
defaultpk_g650ff27-7c42-4ce1-ae90-5691a188ee7bsk_gk3517a8-3z01-45fq-b4bd-4282384b0a64
Fourpk_pkhpdtvabcf7hdgpwnbhw7r2uicsk_m73dzypy7cf3gf5d2xr4k7sxo4e

Note: sandbox keys have a test_ or sbox_ identifier, for Default and Four accounts respectively.

If you don't have your own API keys, you can sign up for a test account here.

OAuth

The SDK doesn't support any OAuth authentication flow natively, however it supports OAuth authorization tokens that can be used as API keys. For more information about OAuth please refer to the official documentation.

How to use the SDK

The SDK is structured by different modules and each module gives you access to different business features. All these modules can be instantiated at once, or you can choose to create single modules separately.

import (
    "github.com/checkout/checkout-sdk-go"
    "github.com/checkout/checkout-sdk-go/client"
)

api := client.CheckoutApi(&secretKey, &publicKey, Sandbox) // or Production
var tokensClient = api.Tokens
import (
"github.com/checkout/checkout-sdk-go"
"github.com/checkout/checkout-sdk-go/client"
)

config, err := checkout.SdkConfig(&secretKey, &publicKey, Sandbox) // or Production
var tokensClient = tokens.NewClient(*config)

Tokens

import (
    "github.com/checkout/checkout-sdk-go"
    "github.com/checkout/checkout-sdk-go/tokens"
)

config, err := checkout.SdkConfig(&secretKey, &publicKey, Sandbox) // or Production
var client = tokens.NewClient(*config) // or api.Tokens
var card = &client.Card{
    Type:        common.Card,
    Number:      "4242424242424242",
    ExpiryMonth: 2,
    ExpiryYear:  2022,
    Name:        "Customer Name",
    CVV:         "100",
}
var request = &tokens.Request{
    Card: card,
}
response, err := client.Request(request)

Payments

import (
    "github.com/checkout/checkout-sdk-go"
    "github.com/checkout/checkout-sdk-go/payments"
)

config, err := checkout.SdkConfig(&secretKey, &publicKey, Sandbox) // or Production
var client = payments.NewClient(*config) // or api.Payments

var source = payments.TokenSource{
    Type:  common.Token.String(),
    Token: "tok_",
}
var request = &payments.Request{
    Source:   source,
    Amount:   "100",
    Currency: "USD",
    Reference: "Payment Reference",
    Customer: &payments.Customer{
        Email: "[email protected]",
        Name:  "First Name Last Name",
    },
    Metadata: map[string]string{
        "udf1": "User Define",
    },
}

idempotencyKey := checkout.NewIdempotencyKey()
params := checkout.Params{
    IdempotencyKey: &idempotencyKey,
}

response, err := client.Request(request, &params)

Payment Detail

import (
    "github.com/checkout/checkout-sdk-go"
    "github.com/checkout/checkout-sdk-go/payments"
)

config, err := checkout.SdkConfig(&secretKey, &publicKey, Sandbox) // or Production
var client = payments.NewClient(*config) // or api.Payments

response, err := client.Get("pay_")

Actions

import (
    "github.com/checkout/checkout-sdk-go"
    "github.com/checkout/checkout-sdk-go/payments"
)

config, err := checkout.SdkConfig(&secretKey, &publicKey, Sandbox) // or Production
var client = payments.NewClient(*config) // or api.Payments

response, err := client.Actions("pay_")

Captures

import (
    "github.com/checkout/checkout-sdk-go"
    "github.com/checkout/checkout-sdk-go/payments"
)

config, err := checkout.SdkConfig(&secretKey, &publicKey, Sandbox) // or Production
var client = payments.NewClient(*config) // or api.Payments

idempotencyKey := checkout.NewIdempotencyKey()
params := checkout.Params{
    IdempotencyKey: &idempotencyKey,
}

request := &client.CapturesRequest{
    Amount:    100,
    Reference: "Reference",
    Metadata: map[string]string{
        "udf1": "User Define",
    },
}
response, err := client.Captures("pay_", request, &params)

Voids

import (
    "github.com/checkout/checkout-sdk-go"
    "github.com/checkout/checkout-sdk-go/payments"
)

config, err := checkout.SdkConfig(&secretKey, &publicKey, Sandbox) // or Production
var client = payments.NewClient(*config) // or api.Payments

idempotencyKey := checkout.NewIdempotencyKey()
params := checkout.Params{
    IdempotencyKey: &idempotencyKey,
}

request := &client.VoidsRequest{
    Reference: "Reference",
    Metadata: map[string]string{
        "udf1": "User Define",
    },
}
response, err := client.Voids("pay_", request, &params)

Refunds

import (
    "github.com/checkout/checkout-sdk-go"
    "github.com/checkout/checkout-sdk-go/payments"
)

config, err := checkout.SdkConfig(&secretKey, &publicKey, Sandbox) // or Production
var client = payments.NewClient(*config) // or api.Payments

request := &payments.RefundsRequest{
    Amount:    100,
    Reference: "Reference",
    Metadata: map[string]string{
        "udf1": "User Define",
    },
}

idempotencyKey := checkout.NewIdempotencyKey()
params := checkout.Params{
    IdempotencyKey: &idempotencyKey,
}

response, err := client.Refunds("pay_", request, &params)

More documentation related to Checkout API and the SDK is available at:

The execution of integration tests require the following environment variables set in your system:

  • For Default account systems: CHECKOUT_PUBLIC_KEY & CHECKOUT_SECRET_KEY
  • For Four account systems: CHECKOUT_FOUR_PUBLIC_KEY & CHECKOUT_FOUR_SECRET_KEY

Code of Conduct

Please refer to Code of Conduct

Licensing

MIT

# Packages

No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author

# Functions

Bool returns a pointer to the bool value passed in.
BoolSlice returns a slice of bool pointers given a slice of bools.
BoolValue returns the value of the bool pointer passed in or false if the pointer is nil.
Deprecated: Please use SdkConfig.
Float64 returns a pointer to the float64 value passed in.
Float64Slice returns a slice of float64 pointers given a slice of float64s.
Float64Value returns the value of the float64 pointer passed in or 0 if the pointer is nil.
Int64 returns a pointer to the int64 value passed in.
Int64Value returns the value of the int64 pointer passed in or 0 if the pointer is nil.
NewIdempotencyKey -.
No description provided by the author
SetAppInfo sets app information.
String returns a pointer to the string value passed in.
StringSlice returns a slice of string pointers given a slice of strings.
StringValue returns the value of the string pointer passed in or "" if the pointer is nil.

# Constants

Access - OAuth Authorization.
CKORequestID ...
CKOVersion ...
ClientVersion ...
DefaultMaxNetworkRetries is the default maximum number of retries made by a Checkout.com client.
LevelDebug sets a logger to show information messages or anything more severe.
LevelError sets a logger to show error messages only.
LevelInfo sets a logger to show informational messages or anything more severe.
LevelNull sets a logger to show no messages at all.
LevelWarn sets a logger to show warning messages or anything more severe.
Production - Production.
Sandbox - Sandbox.
UnknownPlatform - Production.
UPAPI - Unified Payment API.

# Variables

DefaultLeveledLogger -.

# Structs

AppInfo ...
Config ...
Headers ...
LeveledLogger is a leveled logger implementation.
Params is the structure that contains the common properties of any *Params structure.
StatusResponse ...

# Interfaces

HTTPClient ...
LeveledLoggerInterface provides a basic leveled logging interface for printing debug, informational, warning, and error messages.
ParamsContainer is a general interface for which all parameter structs should comply.

# Type aliases

Level represents a logging level.
SupportedAPI is an enumeration of supported Checkout.com endpoints.
SupportedEnvironment is an enumeration of supported Checkout.com environment.