A Python 3 module to interact with the Bluesnap API.
Project description
bluesnap
A Python 3 module to interact with the Bluesnap API.
Developed in Mayple.
Install
pip install bluesnap
Example
import logging
import math
import random
import bluesnap
from bluesnap.resources import PaymentFieldsTokenResource, VaultedShopperResource, TransactionResource, \
TransactionMetadata, VaultedShopperInfo, ShippingContactInfo, TransactionFraudInfo, BillingContactInfo, Level3Data, \
Level3DataItem
logging.basicConfig()
client = \
bluesnap.client.configure(
# Or use "live"
env="sandbox",
# Get credentials from BlueSnap
username="...",
password="...",
# Default store Id
default_store_id="...",
# Seller id
seller_id='...',
# Default currency
default_currency="usd",
# Locale
locale='en',
# Logger
logger=logging.root
)
print(client.endpoint_url)
print(bluesnap.client.default_user_agent())
print(client.currency)
print(client.store_id)
paymentFieldsTokenResource = PaymentFieldsTokenResource()
vaultedShopperResource = VaultedShopperResource()
transactionResource = TransactionResource()
# Create a token
# --------------
tokenId = paymentFieldsTokenResource.create()
print(tokenId)
# Use it in your frontend: https://developers.bluesnap.com/docs/build-a-form
input('Press enter to continue...')
# Create vaulted shopper
# ----------------------
billingContactInfo = BillingContactInfo(
firstName="Credit Card",
lastName="Owner",
personalIdentificationNumber="1234123123",
address1="5 Somewhere",
city="Tel Aviv",
country="il",
zip_="123456"
)
shippingContactInfo = ShippingContactInfo(
firstName="Package",
lastName="Receiver",
address1="18 Otherplace",
city="Ramat Gan",
country="il",
zip_="123123"
)
transactionFraudInfo = TransactionFraudInfo(
# Have a look here: https://developers.bluesnap.com/docs/fraud-prevention#section-device-data-checks
fraudSessionId="12345678123456781234567812345678",
shippingContactInfo=shippingContactInfo,
)
vaultedShopperInfo = VaultedShopperInfo(
firstName="Customer Name",
lastName="for Invoicing",
companyName="Company LTD",
personalIdentificationNumber="123123123",
shopperCurrency="USD",
softDescriptor="AppearInCreditCard",
descriptorPhoneNumber="+972-1231-123123",
merchantShopperId="12345",
address="More Place 4",
city="Givatayim",
country="IL",
zip_="123123",
email="customer@email.com",
phone="+972-123123123",
shippingContactInfo=shippingContactInfo,
transactionFraudInfo=transactionFraudInfo,
)
vaultedShopper = vaultedShopperResource.createFromPaymentFieldsToken(
vaultedShopperInfo=vaultedShopperInfo,
paymentFieldsTokenId=tokenId,
billingContactInfo=billingContactInfo
)
print(vaultedShopper)
vaultedShopperId = vaultedShopper['vaultedShopperId']
# Retrieve again, if you want
existingVaultedShopper = vaultedShopperResource.retrieve('22823473')
print(existingVaultedShopper)
# Validate credit card set to shopper
# -----------------------------------
# Validate the vaulted shopper
validatingTransaction = transactionResource.auth(
vaultedShopperId=vaultedShopperId,
amount='0',
currency='USD',
)
print(validatingTransaction)
vaultedShopperIsValid = validatingTransaction['processingInfo']['processingStatus'] == 'success'
print("vaultedShopperIsValid:", vaultedShopperIsValid)
# Create a transaction
# --------------------
amount = random.randint(100, 10000)
shippingRate = 0.08
stateTaxRate = 0.17
shippingAmount = math.ceil(float(amount) * shippingRate)
stateTaxAmount = math.ceil(float(amount) * stateTaxRate)
total = amount + shippingAmount + stateTaxAmount
amount = float(amount) / 100.0
shippingAmount = float(shippingAmount) / 100.0
stateTaxAmount = float(stateTaxAmount) / 100.0
total = float(total) / 100.0
level3Data = Level3Data(
customerReferenceNumber="12345234234",
salesTaxAmount=str(stateTaxRate),
freightAmount=str(shippingAmount),
dutyAmount="0",
level3DataItems=[
Level3DataItem(
description="Item description",
lineItemTotal=str(amount),
commodityCode="96345345",
grossNetIndicator="N",
productCode="123123123123",
itemQuantity="1",
unitCost="1",
unitOfMeasure="USD"
)
]
)
newTransaction = transactionResource.authCapture(
vaultedShopperId=22823473,
amount=total,
currency='USD',
level3Data=level3Data,
transactionMetadataObjectList=[
TransactionMetadata(value=f'{amount}', key='amount', description='Amount'),
TransactionMetadata(value=f'{shippingAmount}', key='shippingAmount', description='Shipping Amount'),
TransactionMetadata(value=f'{stateTaxAmount}', key='stateTaxAmount', description='State Tax Amount')
]
)
print(newTransaction)
# Retrieve a transaction
newlyCreatedTransaction = transactionResource.retrieve(newTransaction['transactionId'])
print(newlyCreatedTransaction)
# Is it valid?
newlyCreatedTransactionIsValid = (newlyCreatedTransactionTransaction['processing-info']['processing-status'] == 'SUCCESS')
print(newlyCreatedTransactionIsValid)
Related projects
You might also be interested in these projects:
- python-bluesnap: This project was forked from it, but adds Python 3 support and includes new support for Standard JSON API resources.
Contributing
Pull requests and stars are always welcome. For bugs and feature requests, please create an issue.
Install with:
$ virtualenv .venv -p python3
$ . .venv/bin/activate
(.venv) $ pip install -r requirements.txt
and run the tests with:
(.venv) $ pip install -r tests/requirements.txt
(.venv) $ nosetests tests/
Author
Alon Diamant (advance512)
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.
Source Distribution
bluesnap-1.2021.4.28.tar.gz
(30.3 kB
view details)
Built Distribution
File details
Details for the file bluesnap-1.2021.4.28.tar.gz
.
File metadata
- Download URL: bluesnap-1.2021.4.28.tar.gz
- Upload date:
- Size: 30.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.4.1 importlib_metadata/4.0.1 pkginfo/1.7.0 requests/2.23.0 requests-toolbelt/0.9.1 tqdm/4.60.0 CPython/3.8.0
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 4bb1d840d885900dfa4113109d909cace54f2d8a274a028403a5b6c4c028f5e6 |
|
MD5 | 2eb665e0b3660b6b5e7c5ed2080ea59f |
|
BLAKE2b-256 | 1c64d10426b7d060d3d3c8522e3f09bba67183b737f4fce130a064ffaa8c9433 |
File details
Details for the file bluesnap-1.2021.4.28-py3-none-any.whl
.
File metadata
- Download URL: bluesnap-1.2021.4.28-py3-none-any.whl
- Upload date:
- Size: 30.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.4.1 importlib_metadata/4.0.1 pkginfo/1.7.0 requests/2.23.0 requests-toolbelt/0.9.1 tqdm/4.60.0 CPython/3.8.0
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | b67ad0d762477f7fc6f7b303c53fd7a332f3e10c65c5fbdc5bad8295b30b7cdb |
|
MD5 | 5f138e5053b373d539f4e6cda3b0dec6 |
|
BLAKE2b-256 | 9162136a94b5dd206507676224427d6f78b4793f4a96a00dbbd300bb42a4f135 |