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 hashes)
Built Distribution
Close
Hashes for bluesnap-1.2021.4.28-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | b67ad0d762477f7fc6f7b303c53fd7a332f3e10c65c5fbdc5bad8295b30b7cdb |
|
MD5 | 5f138e5053b373d539f4e6cda3b0dec6 |
|
BLAKE2-256 | 9162136a94b5dd206507676224427d6f78b4793f4a96a00dbbd300bb42a4f135 |