Etpay SDK for Python
Project description
ETpay Python SDK
Official ETpay SDK for Python
Installation
Using pypi
pip install etpay_sdk
Testing with whl file
pip install path/to/whlfile/etpay_sdk-1.0.1-py3-none-any.whl
How to use
Configure ETpay module:
Method: ETpay.Configs(args: ConfigsArgs)
Parameters: ConfigsArgs
Parameter | Type | Required | Description |
---|---|---|---|
merchant_code | string | false | Merchant code of the client |
merchant_api_token | string | false | Merchant api token of the client |
api_url | string | false | Api url of the client |
Example code
# Import ETpay module
import etpay_sdk as Etpay
# Declare global vars
# Commerce identifier provided by ETpay.
MERCHANT_CODE = "valid_code"
# Secret token used to authenticate against the API provided by ETpay.
MERCHANT_API_TOKEN = "valid_api_key"
# Api url provided by ETpay.
API_URL = "valid_api_url"
# Configure module
configs = Etpay.Configs(MERCHANT_CODE, MERCHANT_API_TOKEN, API_URL)
Metadata ETpay module:
Method: ETpay.Metadata(args: [MetadataParams])
Parameters: MetadataParams
Parameter | Type | Required | Description |
---|---|---|---|
name | string | true | JSON key called "name" |
value | string | true | JSON key called "value" |
show | boolean | true | JSON key called "show" |
Example code
# Import ETpay module
import etpay_sdk as Etpay
# Creation of Metadata Object
metadata = Etpay.Metadata([
{
"name":"NAME",
"value": "VALUE",
"show": True
},
])
TransactionParams ETpay module:
Method: ETpay.TransactionParams(args: CreateTransactionArgs)
Parameters: CreateTransactionArgs
Parameter | Type | Required | Description |
---|---|---|---|
merchant_order_id | string | true | Id used by the merchant to identify the transaction. |
order_amount | string | true | Transaction amount. |
customer_email | string | false | Customer email. |
payment_completed_url | string | true | URL to which the API will redirect in the event of a successful payment. |
payment_cancellation_url | string | true | URL to which the API will redirect in the event that the payer explicitly cancels the payment, or an unforeseen error occurs. |
user_bank_code | string | false | If this field is sent, the session starts with the bank already selected. |
user_rut | string | false | If this field is sent, the session starts with the client's RUT already entered in the respective field. |
is_rut_block | string | false | If this field is sent, the session starts with the client's RUT field already blocked. Important to consider sending user_rut together wit this attribute. |
concat | string | false | When merchants have URLs that vary based on different inputs, this value is what ETpay uses to recognize the character/symbol that concatenates those inputs. |
metadata | Metadata | false | Data showing on transaction process |
Example code
# Import ETpay module
import etpay_sdk as Etpay
# Obligatory Params
MERCHANT_ORDER_ID = "{ORDER_ID}"
ORDER_AMOUNT = 500
PAYMENT_COMPLETED_URL = "{URL_SUCCESS}"
PAYMENT_CANCELLATION_URL = "{URL_CANCEL}"
# Optional Params
CUSTOMER_EMAIL = "email@email.com"
USER_BANK_CODE = "USER_BANK_CODE"
USER_RUT = "USER_RUT"
IS_RUT_BLOCK = "IS_RUT_BLOCK"
CONCAT = "{“&”}"
METADATA = Etpay.Metadata([
{
"name":"NAME",
"value": "VALUE",
"show": True
},
])
# TransactionParams module
TransactionParams = Etpay.TransactionParams(
MERCHANT_ORDER_ID,
ORDER_AMOUNT,
CUSTOMER_EMAIL,
PAYMENT_COMPLETED_URL,
PAYMENT_CANCELLATION_URL,
USER_BANK_CODE,
USER_RUT,
IS_RUT_BLOCK,
CONCAT,
METADATA)
Create transaction Object:
Method: ETpay.Transaction.create()
Retrieve transaction status:
Method: ETpay.Transaction.status(args: TransactionStatusArgs)
Parameters: TransactionStatusArgs
Parameter | Type | Required | Description |
---|---|---|---|
session_token | string | false | Received when transaction was created |
merchant_order_id | string | false | Internal merchant order identifier |
payment_token | string | false | Received when transaction was created |
Validate a transaction result:
Method: ETpay.Transaction.verify(token: string, signature_token: string)
Parameters:
Parameter | Type | Required | Description |
---|---|---|---|
token | string | true | Received token on transaction succeed |
signature_token | string | true | Signature Received when transaction was created |
Example code
#Definition of client data
merchantcode= "MERCHANT_CODE"
merchantapitoken= "MERCHANT_API_TOKEN"
apiurl= "API_URL"
# Creation of Metadata Object. Usefull in TransactionParams Object to create JSON for '/session/initialize' consult
metadata = Etpay.Metadata([
{
"name":"NAME",
"value": "VALUE",
"show": True
},
])
# Creation of TransactionParams. Work for containt the parameters for '/session/initialize' JSON
transaction_param = Etpay.TransactionParams(order_amount=1,
merchant_order_id="merchant_order_id",
customer_email="example@example.com",
payment_completed_url="https://www.google.com",
payment_cancellation_url="https://www.google.com",
metadata=metadata)
# Creation of Configs. Contain configurations parameters of Client
configure = Etpay.Configs(merchantcode, merchantapitoken, apiurl)
# Creation of Transactions Object. Contain configurations and parameters for consult methods
transaction = Etpay.Transactions(configure, transaction_param)
# Method to make de '/merchant/check_payment_status' consult and obtain the correct JSON
create_response = transaction.create()
print(create_response.json())
# Method to make de '/session/initialize' consult and obtain the correct JSON
status_response = transaction.status(merchant_order_id="MERCHANT_ORDER_ID")
print(status_response.json())
# Method to verify a JWT using the signature token as a key
jwt_decode = transaction.verify("eyJh[...]dHxE", "ZPfh[...]GqPl")
print(jwt_decode)
Response Object to "create"
{
"token": "LnA0o[...]UaDgTa",
"signature_token": "J1Bdd[...]jzsLD5",
// terms_url can be null when module is configured with ETpay MX api
"terms_url": "https://<etpay-terms-url>"
}
Response Object to "status"
{
"session_token": "wWkob[...]wC0L5",
"merchant_account_bank": "cl_estado",
"merchant_account_type": "cuenta_vista",
"merchant_account": "19687526",
"merchant_name": "Sandbox Developer Merchant",
"merchant_currency": "CLP",
"merchant_order_id": "oc1234566",
"merchant_amount": 1,
"user_bank": "Banco de prueba",
"user_rut": "111111111",
"user_account": "Cuenta Corriente 12345678",
"payment_token": "prNZK[...]yuPfd",
"payment_status": true,
"payment_process": "auto",
"iat": 1643663332
}
Response Object to "verify"
[
{
"session_token": "wWkob[...]wC0L5",
"merchant_account_bank": "cl_estado",
"merchant_account_type": "cuenta_vista",
"merchant_account": "19687526",
"merchant_name": "Sandbox Developer Merchant",
"merchant_currency": "CLP",
"merchant_order_id": "oc1234566",
"merchant_amount": 1,
"user_bank": "Banco de prueba",
"user_rut": "111111111",
"user_account": "Cuenta Corriente 12345678",
"payment_token": "prNZK[...]yuPfd",
"payment_status": true,
"payment_process": "auto",
"iat": 1643663332
}
]
Error Handler
Etpay error
In the very unlikely case of a system error, with a disconnection with the ETpay backend, a redirect to the failure URL will be made, with a JWT signed with the session_token (instead of the signature_token).
{
"session_token": "08Zyd[...]Abv9Z",
"system_error": true,
"iat": 1564667797
}
SDK common errors Transaction
Error | Common Cause |
---|---|
TypeError: Type use in 'configure' is incorrect | Configure argument recive it's not Config Object |
TypeError: Type use in 'transaction_params' is incorrect | Transaction_params argument recive it's not TransactionParams Object |
SDK common errors Transaction.status()
Error | Common Cause |
---|---|
ValueError: The function requires at least one argument | No argument sent in this method. Is required at least one |
SDK common errors Transaction.verify()
Error | Common Cause |
---|---|
jwt.exceptions.DecodeError: Invalid header padding | Header of JWT is incomplete |
jwt.exceptions.InvalidSignatureError: Signature verification failed | The JWT is incomplete. The token is incomplete |
Invalid header string: 'utf-8' codec can't decode byte 0x88 in position 6: invalid start byte | First section of JWT is incomplete |
TypeError: Type use in 'token' is incorrect | Token argument recive it's not String |
TypeError: Type use in 'signature_token' is incorrect | signature_token argument recive it's not String |
SDK common errors
Error | Common Cause |
---|---|
requests.exceptions.ConnectionError: HTTPSConnectionPool(host='api-sandbox.etpaymen', port=443): Max retries exceeded with url: /session/initialize (Caused by NewConnectionError('<urllib3.connection.HTTPSConnection object at 0x000002A296CC3348>: Failed to establish a new connection: [Errno 11001] getaddrinfo failed')) | URL used is invalid. Fail to establish connection |
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
File details
Details for the file etpay_sdk-1.0.1.tar.gz
.
File metadata
- Download URL: etpay_sdk-1.0.1.tar.gz
- Upload date:
- Size: 7.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.9.1
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 4d0957aefdeb18a8277a9549f3972bbaf7a6e2f9fd3095eb9a6977041bbb4920 |
|
MD5 | a266e8b58901bc03782bd59d22c117d6 |
|
BLAKE2b-256 | c1837b4fc828e107a2dbfbf5b76fdfde5c6e2769e90ceea882e3f2ccdadc062d |