Note: This repository is not actively maintained.
Coinbase Commerce Python
- Python Versions
- Third Party Libraries and Dependencies
- Documentation
- Installation
- Usage
- Validating webhook signatures
- Testing and Contributing
Python 2.7+ and 3.4+ are supported and tested.
The following libraries will be installed when you install the client library:
For more details visit Coinbase API docs.
To start using library, you need to register on Commerce SignUp. And get your API_KEY from user settings.
Next create a Client object for interacting with the API:
fromcoinbase_commerce.clientimportClientAPI_KEY="API KEY"client=Client(api_key=API_KEY)Client contains links to an every Python Class representations of the API resources Checkout, Charge, Event
You can call list, list_paging_iter, create, retrieve, modify methods from an API resource classes
client.charge.createclient.checkout.list_paging_iterclient.event.listclient.charge.retrieveclient.checkout.modifyas well as save, delete, refresh methods from API resource class instances.
checkout=client.checkout.retrieve(<id>) checkout.refresh() checkout.save() checkout.delete()Each API method returns an APIObject (a subclass of dict) representing the JSON response from the API, all of the models are dumpable with JSON.
Also when the response data is parsed into Python objects, the appropriate APIObject subclasses will be used automatically. All subclasses of APIResource class support refresh method. This will update their attributes and all nested data by making a fresh GET request to the relevant API endpoint.
Client support Common API Errors and Warnings handling. All errors occuring during interaction with the API will be raised as exceptions.
| Error | Status Code |
|---|---|
| APIError | * |
| InvalidRequestError | 400 |
| ParamRequiredError | 400 |
| ValidationError | 400 |
| AuthenticationError | 401 |
| ResourceNotFoundError | 404 |
| RateLimitExceededError | 429 |
| InternalServerError | 500 |
| ServiceUnavailableError | 503 |
Install with pip:
pip install --upgrade coinbase-commerce or with easy_install:
easy_install --upgrade coinbase-commerce fromcoinbase_commerce.clientimportClientclient=Client(api_key=API_KEY)checkout=client.checkout.retrieve(<checkout_id>)checkout_info={"name": 'The Sovereign Individual', "description": 'Mastering the Transition to the Information Age', "pricing_type": 'fixed_price', "local_price":{"amount": "100.00", "currency": "USD" }, "requested_info": ["name", "email"] } checkout=client.checkout.create(**checkout_info) # orcheckout=client.checkout.create(name='The Sovereign Individual', description='Mastering the Transition to the Information Age', pricing_type='fixed_price', local_price={"amount": "100.00", "currency": "USD" }, requested_info=["name", "email"]) checkout=client.checkout.retrieve(<checkout_id>) checkout.name='new name'checkout.save() # orcheckout=client.checkout.modify('<checkout_id>', name='new name')checkout.delete()checkouts=client.checkout.list()forcheckoutinclient.checkout.list_paging_iter(): print("{!r}".format(checkout))charge=client.charge.retrieve(<charge_id>)charge_info={"name": "The Sovereign Individual", "description": "Mastering the Transition to the Information Age", "local_price":{"amount": "100.00", "currency": "USD" }, "pricing_type": "fixed_price" } charge=client.charge.create(**charge_info) # orcharge=client.charge.create(name='The Sovereign Individual', description='Mastering the Transition to the Information Age', pricing_type='fixed_price', local_price={"amount": "100.00", "currency": "USD" })checkouts=client.charge.list()forchargeinclient.charge.list_paging_iter(): print("{!r}".format(charge))event=client.event.retrieve(<event_id>)events=client.event.list()foreventinclient.event.list_paging_iter(): print("{!r}".format(event))You could verify webhook signatures using our library. To perform the verification you'll need to provide the event data, a webhook signature from request header, and the endpoint’s secret. In case of invalid request signature or request payload, you will receive appropriate error message.
WEBHOOK_SECRET='your_webhook_secret'# using Flask@app.route('/webhooks', methods=['POST'])defwebhooks(): # event payloadrequest_data=request.data.decode('utf-8') # webhook signaturerequest_sig=request.headers.get('X-CC-Webhook-Signature', None) try: # signature verification and event object constructionevent=Webhook.construct_event(request_data, request_sig, WEBHOOK_SECRET) except (WebhookInvalidPayload, SignatureVerificationError) ase: returnstr(e), 400print("Received event: id={id}, type={type}".format(id=event.id, type=event.type)) return'success', 200Any and all contributions are welcome! The process is simple: fork this repo, make your changes, run the test suite, and submit a pull request. Tests are run via nosetest. To run the tests, clone the repository and then:
pip install -r requirements.txt Use tox to run the test suite against multiple versions of Python. You can install tox with pip or easy_install:
pip install tox easy_install tox Tox requires the appropriate Python interpreters to run the tests in different environments. We recommend using pyenv for this. Once you've installed the appropriate interpreters, running the tests in every environment is simple:
tox