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.

Source Distribution

bluesnap-1.2021.4.28.tar.gz (30.3 kB view hashes)

Uploaded source

Built Distribution

bluesnap-1.2021.4.28-py3-none-any.whl (30.8 kB view hashes)

Uploaded py3

Supported by

AWS AWS Cloud computing Datadog Datadog Monitoring Facebook / Instagram Facebook / Instagram PSF Sponsor Fastly Fastly CDN Google Google Object Storage and Download Analytics Huawei Huawei PSF Sponsor Microsoft Microsoft PSF Sponsor NVIDIA NVIDIA PSF Sponsor Pingdom Pingdom Monitoring Salesforce Salesforce PSF Sponsor Sentry Sentry Error logging StatusPage StatusPage Status page