Payoneer Escrow
This is intended to be a clean, idiomatic client for the Payoneer Escrow API. This will handle generating the authenticated headers and constructing the properly nested request URI, as well as parsing any response JSON for you.
Installation
You can install using pip or from source.
pip
Installation via pip is as easy as any other Python package.
$ pip install payoneer-escrow-sdk
# Alternatively, add to your requirements file and install from there
$ echo 'payoneer-escrow-sdk' >> requirements.txt
$ pip install -r requirements.txt
Source
Download the payoneer-escrow-python source:
$ git clone https://github.com/Payoneer-Escrow/payoneer-escrow-python
$ cd payoneer-escrow-python
# Install the package
$ python setup.py install
Quickstart
This project’s GitHub repo contains example files to help you get going. To avoid any potential risk, these files are not included in the package installed via pip. example.py is recommended for all who are new to this SDK—it allows you to confirm your api credentials and shows example handling of an HTTPError encountered by a bad request. There is also an end-to-end goods milestone order in the examples/ directory to demonstrate use of the API with one of the more complicated order types.
# If you installed via pip, you will need to get the example file
$ curl https://raw.githubusercontent.com/Payoneer-Escrow/payoneer-escrow-python/master/example.py > example.py
# Replace the key and secret values with your own credentials
$ echo 'PAYONEER_ESCROW_API_KEY = "ENTER_YOUR_API_KEY_HERE"
PAYONEER_ESCROW_SECRET = "ENTER_YOUR_API_SECRET_HERE"' > api_credentials.py
$ python example.py
Usage
The Payoneer Escrow API is REST-ish and nested, so the client relies on chaining. We return an object (or array of objects) decoded from the JSON response, if possible.
from payoneer_escrow_sdk.client import Client
# `should_use_sandbox` is a boolean passed to Client, indicating which
# Payoneer Escrow environment should be used; default is Production.
client = Client('your-key', 'your-secret', should_use_sandbox)
# There are two top-level resources: accounts and shipmentcarriers
# Querying users and orders requires an account_id
client.accounts().all()
client.accounts().get(account_id)
client.shipmentcarriers().all()
client.shipmentcarriers().get(carrier_id)
# From accounts, we chain users, orders, bank accounts
client.accounts().users(account_id).all()
client.accounts().users(account_id).get(user_id)
client.accounts().orders(account_id).all()
client.accounts().orders(account_id).get(order_id)
client.accounts().bankaccounts(account_id).all()
client.accounts().bankaccounts(account_id).get(bank_account_id)
# From orders, many things chain: documents, notes, disputes, shipments,
# payment instructions, order events, and order ledgers
client.accounts().orders(account_id).documents(order_id).all()
client.accounts().orders(account_id).documents(order_id).get(document_id)
client.accounts().orders(account_id).notes(order_id).all()
client.accounts().orders(account_id).notes(order_id).get(note_id)
client.accounts().orders(account_id).disputes(order_id).all()
client.accounts().orders(account_id).disputes(order_id).get(dispute_id)
client.accounts().orders(account_id).shipments(order_id).all()
client.accounts().orders(account_id).shipments(order_id).get(shipment_id)
client.accounts().orders(account_id).paymentinstructions(order_id).all()
client.accounts().orders(account_id).orderevents(order_id).all()
client.accounts().orders(account_id).orderevents(order_id).get(event_id)
client.accounts().orders(account_id).orderledgers(order_id).all()
client.accounts().orders(account_id).orderledgers(order_id).get(ledger_entry_id)
# From disputes, further things chain: documents, notes, offers
client.accounts().orders(account_id).disputes(order_id).documents(
dispute_id).all()
client.accounts().orders(account_id).disputes(order_id).documents(
dispute_id).get(document_id)
client.accounts().orders(account_id).disputes(order_id).notes(
dispute_id).all()
client.accounts().orders(account_id).disputes(order_id).notes(
dispute_id).get(note_id)
client.accounts().orders(account_id).disputes(order_id).offers(
dispute_id).all()
client.accounts().orders(account_id).disputes(order_id).offers(
dispute_id).get(offer_id)
# From offers, documents and notes chain
client.accounts().orders(account_id).disputes(order_id).offers(
dispute_id).documents(offer_id).all()
client.accounts().orders(account_id).disputes(order_id).offers(
dispute_id).documents(offer_id).get(document_id)
client.accounts().orders(account_id).disputes(order_id).offers(
dispute_id).notes(offer_id).all()
client.accounts().orders(account_id).disputes(order_id).offers(
dispute_id).notes(offer_id).get(note_id)
Some of the resource endpoints support Create/Update POST operations, and this client aims to support those as well:
# Account-related
client.accounts().create(your_data)
client.accounts().update(account_id, your_data)
client.accounts().users(account_id).create(your_data)
client.accounts().users(account_id).update(user_id, your_data)
# Authenticate a URI for display in a lightbox
client.accounts().users(account_id).authentications(user_id).create(your_data)
# Order-related
client.accounts().orders(account_id).create(your_data)
client.accounts().orders(account_id).update(order_id, your_data)
client.accounts().orders(account_id).documents(order_id).create(your_data)
client.accounts().orders(account_id).notes(order_id).create(your_data)
client.accounts().orders(account_id).shipments(order_id).create(your_data)
# Dispute-related
client.accounts().orders(account_id).disputes(order_id).create(your_data)
client.accounts().orders(account_id).disputes(order_id).documents(
dispute_id).create(your_data)
client.accounts().orders(account_id).disputes(order_id).notes(
dispute_id).create(your_data)
client.accounts().orders(account_id).disputes(order_id).offers(
dispute_id).create(your_data)
client.accounts().orders(account_id).disputes(order_id).offers(
dispute_id).update(offer_id, your_data)
client.accounts().orders(account_id).disputes(order_id).offers(
dispute_id).documents(offer_id).create(your_data)
client.accounts().orders(account_id).disputes(order_id).offers(
dispute_id).notes(offer_id).create(your_data)
Contributing
Fork it
Create your feature branch (git checkout -b my-new-feature)
Commit your changes (git commit -am 'Add some feature')
Push to the branch (git push origin my-new-feature)
Create new Pull Request
Metadata
Release files for payoneer-escrow-sdk 0.1.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| payoneer-escrow-sdk-0.1.0.tar.gz | 8.2 kB | Without provenance | Details for payoneer-escrow-sdk-0.1.0.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| payoneer_escrow_sdk-0.1.0-py2.py3-none-any.whl | Python 3, Python 2 | none | any | Details for payoneer_escrow_sdk-0.1.0-py2.py3-none-any.whl |
Total release size: 24.1 kB
Release files / payoneer-escrow-sdk-0.1.0.tar.gz
| Download URL | payoneer-escrow-sdk-0.1.0.tar.gz |
|---|---|
| Size | 8.2 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
3967cc171a7c2a2511f2eded62f40f043da05b45ef41bb5af7e5e8592ffe140e
|
|
BLAKE2b-256 checksum How to use checksums |
d278ebd1c01d8eafa9ec64637bb68c0f4392ebaec0fec7e2a7ca595f0631d88c
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
Release files / payoneer_escrow_sdk-0.1.0-py2.py3-none-any.whl
| Download URL | payoneer_escrow_sdk-0.1.0-py2.py3-none-any.whl |
|---|---|
| Size | 15.9 kB |
| Tags | Python 2 Python 3 |
|
SHA-256 checksum How to use checksums |
89ea320fa92f7e5107867b637d59da7e392d12c1b3a1593c3b2ee0df5930764d
|
|
BLAKE2b-256 checksum How to use checksums |
c7afc9dd1b120995268ff1bcd214775504974076bb8759786c47b48cf3d99070
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
Security for payoneer-escrow-sdk 0.1.0
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.