Skip to main content

A Python 3 module to interact with the Bluesnap API.

Project description

bluesnap

PyPI version PyPI pyversions Build Status

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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Files for bluesnap, version 1.2019.9.1
Filename, size File type Python version Upload date Hashes
Filename, size bluesnap-1.2019.9.1-py3-none-any.whl (29.5 kB) File type Wheel Python version py3 Upload date Hashes View
Filename, size bluesnap-1.2019.9.1.tar.gz (31.0 kB) File type Source Python version None Upload date Hashes View

Supported by

Pingdom Pingdom Monitoring Google Google Object Storage and Download Analytics Sentry Sentry Error logging AWS AWS Cloud computing DataDog DataDog Monitoring Fastly Fastly CDN DigiCert DigiCert EV certificate StatusPage StatusPage Status page