The official library for accessing the BlockChyp Terminal and Gateway APIs
Project description
BlockChyp Python SDK
The official library for accessing the BlockChyp Terminal and Gateway APIs from Python.
Installation
BlockChyp can be simply installed by running:
pip install blockchyp
The Rest APIs
All BlockChyp SDKs provide a convenient way of accessing the BlockChyp REST APIs. You can checkout the REST API documentation via the links below.
Other SDKs
BlockChyp has officially supported SDKs for eight different development platforms and counting. Here's the full list with links to their GitHub repositories.
Getting a Developer Kit
In order to test your integration with real terminals, you'll need a BlockChyp Developer Kit. Our kits include a fully functioning payment terminal with test pin encryption keys. Every kit includes a comprehensive set of test cards with test cards for every major card brand and entry method, including Contactless and Contact EMV and mag stripe cards. Each kit also includes test gift cards for our blockchain gift card system.
Access to BlockChyp's developer program is currently invite only, but you can request an invitation by contacting our engineering team at nerds@blockchyp.com.
You can also view a number of long form demos and learn more about us on our YouTube Channel.
Transaction Code Examples
You don't want to read words. You want examples. Here's a quick rundown of the stuff you can do with the BlockChyp Python SDK and a few basic examples.
Charge
Executes a standard direct preauth and capture.
import os
import blockchyp
# initialize a client.
client = blockchyp.Client(
api_key=os.environ["BC_API_KEY"],
bearer_token=os.environ["BC_BEARER_TOKEN"],
signing_key=os.environ["BC_SIGNING_KEY"],
)
# populate request parameters.
request = {
"test": True,
"terminalName": "Test Terminal",
"amount": "55.00",
}
# run the transaction.
response = client.charge(request)
print("Response: %r" % response)
Preauthorization
Executes a preauthorization intended to be captured later.
import os
import blockchyp
# initialize a client.
client = blockchyp.Client(
api_key=os.environ["BC_API_KEY"],
bearer_token=os.environ["BC_BEARER_TOKEN"],
signing_key=os.environ["BC_SIGNING_KEY"],
)
# populate request parameters.
request = {
"test": True,
"terminalName": "Test Terminal",
"amount": "27.00",
}
# run the transaction.
response = client.preauth(request)
print("Response: %r" % response)
Terminal Ping
Tests connectivity with a payment terminal.
import os
import blockchyp
# initialize a client.
client = blockchyp.Client(
api_key=os.environ["BC_API_KEY"],
bearer_token=os.environ["BC_BEARER_TOKEN"],
signing_key=os.environ["BC_SIGNING_KEY"],
)
# populate request parameters.
request = {
"terminalName": "Test Terminal",
}
# run the transaction.
response = client.ping(request)
print("Response: %r" % response)
Balance
Checks the remaining balance on a payment method.
import os
import blockchyp
# initialize a client.
client = blockchyp.Client(
api_key=os.environ["BC_API_KEY"],
bearer_token=os.environ["BC_BEARER_TOKEN"],
signing_key=os.environ["BC_SIGNING_KEY"],
)
# populate request parameters.
request = {
"test": True,
"terminalName": "Test Terminal",
"cardType": blockchyp.CardType.EBT,
}
# run the transaction.
response = client.balance(request)
print("Response: %r" % response)
Terminal Clear
Clears the line item display and any in progress transaction.
import os
import blockchyp
# initialize a client.
client = blockchyp.Client(
api_key=os.environ["BC_API_KEY"],
bearer_token=os.environ["BC_BEARER_TOKEN"],
signing_key=os.environ["BC_SIGNING_KEY"],
)
# populate request parameters.
request = {
"test": True,
"terminalName": "Test Terminal",
}
# run the transaction.
response = client.clear(request)
print("Response: %r" % response)
Terms & Conditions Capture
Prompts the user to accept terms and conditions.
import os
import blockchyp
# initialize a client.
client = blockchyp.Client(
api_key=os.environ["BC_API_KEY"],
bearer_token=os.environ["BC_BEARER_TOKEN"],
signing_key=os.environ["BC_SIGNING_KEY"],
)
# populate request parameters.
request = {
"test": True,
"terminalName": "Test Terminal",
# Alias for a Terms and Conditions template configured in the BlockChyp
# dashboard.
"tcAlias": "hippa",
# Name of the contract or document if not using an alias.
"tcName": "HIPPA Disclosure",
# Full text of the contract or disclosure if not using an alias.
"tcContent": "Full contract text",
# File format for the signature image.
"sigFormat": blockchyp.SignatureFormat.PNG,
# Width of the signature image in pixels.
"sigWidth": 200,
# Whether or not a signature is required. Defaults to true.
"sigRequired": True,
}
# run the transaction.
response = client.terms_and_conditions(request)
print("Response: %r" % response)
Update Transaction Display
Appends items to an existing transaction display Subtotal, Tax, and Total are overwritten by the request. Items with the same description are combined into groups.
import os
import blockchyp
# initialize a client.
client = blockchyp.Client(
api_key=os.environ["BC_API_KEY"],
bearer_token=os.environ["BC_BEARER_TOKEN"],
signing_key=os.environ["BC_SIGNING_KEY"],
)
# populate request parameters.
request = {
"test": True,
"terminalName": "Test Terminal",
"transaction": {
"subtotal": "60.00",
"tax": "5.00",
"total": "65.00",
"items": [
{
"description": "Leki Trekking Poles",
"price": "35.00",
"quantity": 2,
"extended": "70.00",
"discounts": [
{
"description": "memberDiscount",
"amount": "10.00",
},
],
},
],
},
}
# run the transaction.
response = client.update_transaction_display(request)
print("Response: %r" % response)
New Transaction Display
Displays a new transaction on the terminal.
import os
import blockchyp
# initialize a client.
client = blockchyp.Client(
api_key=os.environ["BC_API_KEY"],
bearer_token=os.environ["BC_BEARER_TOKEN"],
signing_key=os.environ["BC_SIGNING_KEY"],
)
# populate request parameters.
request = {
"test": True,
"terminalName": "Test Terminal",
"transaction": {
"subtotal": "60.00",
"tax": "5.00",
"total": "65.00",
"items": [
{
"description": "Leki Trekking Poles",
"price": "35.00",
"quantity": 2,
"extended": "70.00",
"discounts": [
{
"description": "memberDiscount",
"amount": "10.00",
},
],
},
],
},
}
# run the transaction.
response = client.new_transaction_display(request)
print("Response: %r" % response)
Text Prompt
Asks the consumer text based question.
import os
import blockchyp
# initialize a client.
client = blockchyp.Client(
api_key=os.environ["BC_API_KEY"],
bearer_token=os.environ["BC_BEARER_TOKEN"],
signing_key=os.environ["BC_SIGNING_KEY"],
)
# populate request parameters.
request = {
"test": True,
"terminalName": "Test Terminal",
# Type of prompt. Can be 'email', 'phone', 'customer-number', or
# 'rewards-number'.
"promptType": blockchyp.PromptType.EMAIL,
}
# run the transaction.
response = client.text_prompt(request)
print("Response: %r" % response)
Boolean Prompt
Asks the consumer a yes/no question.
import os
import blockchyp
# initialize a client.
client = blockchyp.Client(
api_key=os.environ["BC_API_KEY"],
bearer_token=os.environ["BC_BEARER_TOKEN"],
signing_key=os.environ["BC_SIGNING_KEY"],
)
# populate request parameters.
request = {
"test": True,
"terminalName": "Test Terminal",
"prompt": "Would you like to become a member?",
"yesCaption": "Yes",
"noCaption": "No",
}
# run the transaction.
response = client.boolean_prompt(request)
print("Response: %r" % response)
Display Message
Displays a short message on the terminal.
import os
import blockchyp
# initialize a client.
client = blockchyp.Client(
api_key=os.environ["BC_API_KEY"],
bearer_token=os.environ["BC_BEARER_TOKEN"],
signing_key=os.environ["BC_SIGNING_KEY"],
)
# populate request parameters.
request = {
"test": True,
"terminalName": "Test Terminal",
"message": "Thank you for your business.",
}
# run the transaction.
response = client.message(request)
print("Response: %r" % response)
Refund
Executes a refund.
import os
import blockchyp
# initialize a client.
client = blockchyp.Client(
api_key=os.environ["BC_API_KEY"],
bearer_token=os.environ["BC_BEARER_TOKEN"],
signing_key=os.environ["BC_SIGNING_KEY"],
)
# populate request parameters.
request = {
"terminalName": "Test Terminal",
"transactionId": "<PREVIOUS TRANSACTION ID>",
# Optional amount for partial refunds.
"amount": "5.00",
}
# run the transaction.
response = client.refund(request)
print("Response: %r" % response)
Enroll
Adds a new payment method to the token vault.
import os
import blockchyp
# initialize a client.
client = blockchyp.Client(
api_key=os.environ["BC_API_KEY"],
bearer_token=os.environ["BC_BEARER_TOKEN"],
signing_key=os.environ["BC_SIGNING_KEY"],
)
# populate request parameters.
request = {
"test": True,
"terminalName": "Test Terminal",
}
# run the transaction.
response = client.enroll(request)
print("Response: %r" % response)
Gift Card Activation
Activates or recharges a gift card.
import os
import blockchyp
# initialize a client.
client = blockchyp.Client(
api_key=os.environ["BC_API_KEY"],
bearer_token=os.environ["BC_BEARER_TOKEN"],
signing_key=os.environ["BC_SIGNING_KEY"],
)
# populate request parameters.
request = {
"test": True,
"terminalName": "Test Terminal",
"amount": "50.00",
}
# run the transaction.
response = client.gift_activate(request)
print("Response: %r" % response)
Time Out Reversal
Executes a manual time out reversal.
We love time out reversals. Don't be afraid to use them whenever a request to a BlockChyp terminal times out. You have up to two minutes to reverse any transaction. The only caveat is that you must assign transactionRef values when you build the original request. Otherwise, we have no real way of knowing which transaction you're trying to reverse because we may not have assigned it an id yet. And if we did assign it an id, you wouldn't know what it is because your request to the terminal timed out before you got a response.
import os
import blockchyp
# initialize a client.
client = blockchyp.Client(
api_key=os.environ["BC_API_KEY"],
bearer_token=os.environ["BC_BEARER_TOKEN"],
signing_key=os.environ["BC_SIGNING_KEY"],
)
# populate request parameters.
request = {
"terminalName": "Test Terminal",
"transactionRef": "<LAST TRANSACTION REF>",
}
# run the transaction.
response = client.reverse(request)
print("Response: %r" % response)
Capture Preauthorization
Captures a preauthorization.
import os
import blockchyp
# initialize a client.
client = blockchyp.Client(
api_key=os.environ["BC_API_KEY"],
bearer_token=os.environ["BC_BEARER_TOKEN"],
signing_key=os.environ["BC_SIGNING_KEY"],
)
# populate request parameters.
request = {
"test": True,
"transactionId": "<PREAUTH TRANSACTION ID>",
}
# run the transaction.
response = client.capture(request)
print("Response: %r" % response)
Close Batch
Closes the current credit card batch.
import os
import blockchyp
# initialize a client.
client = blockchyp.Client(
api_key=os.environ["BC_API_KEY"],
bearer_token=os.environ["BC_BEARER_TOKEN"],
signing_key=os.environ["BC_SIGNING_KEY"],
)
# populate request parameters.
request = {
"test": True,
}
# run the transaction.
response = client.close_batch(request)
print("Response: %r" % response)
Void Transaction
Discards a previous preauth transaction.
import os
import blockchyp
# initialize a client.
client = blockchyp.Client(
api_key=os.environ["BC_API_KEY"],
bearer_token=os.environ["BC_BEARER_TOKEN"],
signing_key=os.environ["BC_SIGNING_KEY"],
)
# populate request parameters.
request = {
"test": True,
"transactionId": "<PREVIOUS TRANSACTION ID>",
}
# run the transaction.
response = client.void(request)
print("Response: %r" % response)
Running Integration Tests
If you'd like to run the integration tests, create a new file on your system
called sdk-itest-config.json
with the API credentials you'll be using as
shown in the example below.
{
"gatewayHost": "https://api.blockchyp.com",
"testGatewayHost": "https://test.blockchyp.com",
"apiKey": "PZZNEFK7HFULCB3HTLA7HRQDJU",
"bearerToken": "QUJCHIKNXOMSPGQ4QLT2UJX5DI",
"signingKey": "f88a72d8bc0965f193abc7006bbffa240663c10e4d1dc3ba2f81e0ca10d359f5"
}
This file can be located in a few different places, but is usually located
at <USER_HOME>/.config/blockchyp/sdk-itest-config.json
. All BlockChyp SDK's
use the same configuration file.
To run the integration test suite via make
, type the following command:
make integration
Contributions
BlockChyp welcomes contributions from the open source community, but bear in mind that this repository has been generated by our internal SDK Generator tool. If we choose to accept a PR or contribution, your code will be moved into our SDK Generator project, which is a private repository.
License
Copyright BlockChyp, Inc., 2019
Distributed under the terms of the MIT license, blockchyp-python is free and open source software.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.