
**ERCASPAY** is a Python package that interacts with the [Ercaspay Payment Platform](https://ercaspay.com). It supports various payment methods such as card transactions, USSD, and bank transfers. Along with the Python package, the repo includes a Django app and a Flask app for integrating Ercaspay functionality into web applications.
### For extra support, there is a docstring in every class and function to guide and explain their usage more effectively. Checkout more and test using the [test/test.py](test/test.py)
## Installation
To get started, install the Ercaspay package via pip:
```bash
pip install ercaspay
```
## Command Line Interface (CLI)
You can use the `ercaspay` command in your terminal to check supported banks and verify if a specific bank is supported.
### List all supported banks:
```bash
ercaspay --bank list
```
### Check if a specific bank is supported:
```bash
ercaspay --bank fcmb
```
## Requirements
The package requires two files to interact with the Ercaspay API:
1. **ERCASPAY_AUTHORIZATION**: This is required to perform most actions with the Ercaspay API.
2. **ERCASPAY_PUBLIC_KEY**: This is required for card transactions. **Note:** that when passing the `ERCASPAY_PUBLIC_KEY`, you should **remove** the header and footer before including it in your environment file.
## Setup
### Initialize the Ercaspay Instance
You can initialize the Ercaspay class by either passing an environment file or by directly setting the values in your code.
#### Option 1: Using an Environment File
You can create an `.env` file containing your Ercaspay credentials and configurations. Then, you can initialize the `Ercaspay` instance like this:
```python
from ercaspay import Ercaspay
ercaspay = Ercaspay(env='filename')
```
```bash
# filename content
ERCASPAY_AUTHORIZATION=ECRS-TEST-SKNvIyOB5m62L7GMeP1pJ867074LXvHyeMGyYQT4WF
ERCASPAY_PUBLIC_KEY=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAwcyK35rw4X4w9vzb/bcdc1oIClGruVO/2bzlti/U07lWIS4HEZQQwva+rHYniO4yglz0IMJPIT+XteF77303qsAvgYFF4B6OmVtYD7QezLWvVlU0h7oXc9fCz2V+23B6gRUZjmNxE3FMIUhNIb9eqR+rl3wONi1d6qhp6Wsw3ogfcbm9w5RNWgJqFTn+TftxvWmq32TpIKEAIYIHed9SNyKO/BgCKtPedTbKwGCrFQnFFopeKrhJEf5lG5KEu28/50QkmXsjnADW1f4SPhuVqcKt3TDtDkFh5ocxD9fMrSyPV4INBtH18Uf9yDfGwMtBlEj1oTkXVt/evncIjvdXUwIDAQAB
```
#### Option 2: Direct Initialization
Alternatively, you can directly pass the required parameters when initializing the Ercaspay instance:
```python
from ercaspay import Ercaspay
ercaspay = Ercaspay(
token='ECRS-TEST-SKNvIyOB5m62L7GMeP1pJ867074LXvHyeMGyYQT4WF',
rsa_key='MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAwcyK35rw4X4w9vzb/bcdc1oIClGruVO/2bzlti/U07lWIS4HEZQQwva+rHYniO4yglz0IMJPIT+XteF77303qsAvgYFF4B6OmVtYD7QezLWvVlU0h7oXc9fCz2V+23B6gRUZjmNxE3FMIUhNIb9eqR+rl3wONi1d6qhp6Wsw3ogfcbm9w5RNWgJqFTn+TftxvWmq32TpIKEAIYIHed9SNyKO/BgCKtPedTbKwGCrFQnFFopeKrhJEf5lG5KEu28/50QkmXsjnADW1f4SPhuVqcKt3TDtDkFh5ocxD9fMrSyPV4INBtH18Uf9yDfGwMtBlEj1oTkXVt/evncIjvdXUwIDAQAB',
)
```
## Performing Transactions
To perform any transaction (via card, USSD, or bank transfer), you first need to initialize the transaction.
### Example: Common Transaction
```python
# Create the transaction
response = ercaspay.initiate(100000.55, "Test User", "testuser@example.com", "testuser@example.com", redirectUrl='https://example.com')
print(response)
# Get transaction reference
transaction_ref = response['responseBody'].get('transactionReference')
# checking status
response = transaction.status()
print(response)
# checking details
response = transaction.details()
print(response)
# more in the test/test.py
```
### Example: Card Transaction
```python
# Create the transaction
response = ercaspay.card()
print(response)
# Get response code
response_code = response['responseBody'].get('code')
# if code is C0: transaction successful no auth required
# if code is C2: redirect customer to response['responseBody']['checkoutUrl']
# if code is C1: otp has been sent to customer phone
response = transaction.submit_otp(otp)
print(response)
# request new otp
response = transaction.resend_otp()
print(response)
# code are determine by the type of card use
```
## Sample Flask and Django Plugin
### Flask Example
You can integrate Ercaspay into your Flask app as follows [test/flask.py](test/flask.py) :
```python
from flask import Flask
from typing import Dict
from ercaspay.flask import ErcaspayPage
app = Flask(__name__)
app.secret_key = "your-secret-key"
ErcaspayPage(app, "Sponsor Scholarship Contribution", ercaspay_url='/payment')
@app.route("/")
def hello_world():
return "Hello World!"
if __name__ == "__main__":
app.run(debug=True)
```
### Django Example
In your Django app, you can perform similar operations using views [test/website](test/website):
```python
# Add ercaspay into ur installed app in (settings.py)
INSTALLED_APPS = [
#...others
'ercaspay',
]
# setting conf for ercaspay (settings.py)
ERCASPAY = {
"ENV": None,
"TOKEN": None,
"RSA_KEY": None,
"CURRENCY": "NGN", # note u can specify currency for each transaction when u integrate
"ADMIN_SITE": "/",
"REDIRECT_URL": "/",
"AUTH_REDIRECT_URL": "auth",
"PAYMENT_PAGE_NAME": "",
"PAYMENT_PAGE_DESC": "",
"NO_PHONE": True
}
# Add path in ur project or app urls, specify any name e.g payment or ercaspay (urls.py)
path('ercaspay/', include('ercaspay.urls')),
# remember to run python manage.py migrate
# checkout transaction in ur django admin
```
## Response Handling
Responses from the Ercaspay API are structured into two categories: **failure** and **success**. Below are examples of both types. For more response structures, check the [test/response.txt](test/response.txt) file in this repository.
### Failure Response
Failure responses have a fixed structure and typically include the following keys:
```json
{
"errorCode": "400",
"message": "a short msg e.g Bad request",
"explanation": "a little long explanation that can be displayed in the browser to the user"
}
```
### Success Response
Success responses contain more data, with a dynamic `responseBody` depending on the API call. Examples of success responses:
- Example for a successful transaction:
```json
{
"requestSuccessful": true,
"responseCode": "success",
"responseMessage": "success",
"responseBody": {
"paymentReference": "nigga@example.com",
"transactionReference": "ERCS|20241217025313|1734400393621",
"checkoutUrl": "https://sandbox-checkout.ercaspay.com/ERCS|20241217025313|1734400393621"
}
}
```
- Example for a pending transaction requiring user action:
```json
{
"requestSuccessful": true,
"responseCode": "C1",
"responseMessage": "success",
"responseBody": {
"code": "C1",
"status": "PENDING",
"gatewayMessage": "Kindly enter the OTP sent to 234805***1111",
"supportMessage": "Didn't get the OTP? Dial *723*0# on your phone (MTN, Etisalat, Airtel). For Glo, use *805*0#.",
"transactionReference": "ERCS|20241217025313|1734400393621",
"paymentReference": "nigga@example.com",
"gatewayReference": "oCKuDTqT2l",
"amount": 100050,
"callbackUrl": "https://nigga.com"
}
}
```
- Some Others
```python
checkout
{'requestSuccessful': True, 'responseCode': 'success', 'responseMessage': 'success', 'responseBody': {'paymentReference': 'nigga@example.com', 'transactionReference': 'ERCS|20241217025313|1734400393621', 'checkoutUrl': 'https://sandbox-checkout.ercaspay.com/ERCS|20241217025313|1734400393621'}}
card C1
{'requestSuccessful': True, 'responseCode': 'C1', 'responseMessage': 'success', 'responseBody': {'code': 'C1', 'status': 'PENDING', 'gatewayMessage': 'Kindly enter the OTP sent to 234805***1111', 'supportMessage': "Didn't get the OTP? Dial *723*0# on your phone (MTN,Etisalat,Airtel) Glo,use *805*0#.", 'transactionReference': 'ERCS|20241217025313|1734400393621', 'paymentReference': 'nigga@example.com', 'gatewayReference': 'oCKuDTqT2l', 'amount': 100050, 'callbackUrl': 'https://nigga.com'}}
card C2
{'requestSuccessful': True, 'responseCode': 'success', 'responseMessage': 'success', 'responseBody': {'paymentReference': 'nigga@example.com', 'transactionReference': 'ERCS|20241217050928|1734408568497', 'checkoutUrl': 'https://sandbox-checkout.ercaspay.com/ERCS|20241217050928|1734408568497'}}
error
{'errorCode': '400', 'message': 'Bad Request', 'explanation': 'wrong amount provided'}
submit otp
{'requestSuccessful': True, 'responseCode': 'success', 'responseMessage': 'success', 'responseBody': {'status': 'SUCCESS', 'gatewayMessage': 'OTP Authorization Successful', 'transactionReference': 'ERCS|20241217025313|1734400393621', 'paymentReference': 'nigga@example.com', 'amount': 100000.55, 'callbackUrl': 'https://nigga.com'}}
check transaction status
{'requestSuccessful': True, 'responseCode': 'success', 'responseMessage': 'success', 'responseBody': {'paymentReference': 'nigga@example.com', 'amount': 100000.55, 'status': 'PAID', 'description': None, 'callbackUrl': 'https://nigga.com?reference=nigga@example.com&status=PAID&transRef=ERCS|20241217025313|1734400393621'}}
cancel transaction
{'requestSuccessful': True, 'responseCode': 'success', 'responseMessage': 'success', 'responseBody': {'callback_url': 'https://nigga.com?reference=nigga@example.com&status=CANCELLED'}}
{'requestSuccessful': True, 'responseCode': 'success', 'responseMessage': 'success', 'responseBody': {'paymentReference': 'nigga@example.com', 'amount': 122200.55, 'status': 'CANCELLED', 'description': None, 'callbackUrl': 'https://nigga.com?reference=nigga@example.com&status=CANCELLED&transRef=ERCS|20241216075712|1734332232972'}}
check transaction details
{'amount': '111111', 'paymentReference': '23784c3611e74debad224b23cc76b80f_20241216205542', 'paymentMethods': 'card, bank-transfer, qrcode, ussd', 'customerName': 'ttttt testing', 'currency': 'NGN', 'customerEmail': 'thegudbadguys@gmail.com', 'customerPhoneNumber': '09082838383', 'redirectUrl': 'http://127.0.0.1:8000/ercaspay/auth', 'description': None, 'metadata': None, 'feeBearer': None}
{'errorCode': '400', 'message': 'Bad Request', 'explanation': 'This payment has already been completed'}
for more test use the test.py file
```
## License
This project is managed under a license by [Ercaspay](https://ercaspay.com).
## Contribution
Contributions are welcome! You can open an issue in this repository to report bugs, suggest features, or provide feedback.

Raw data
{
"_id": null,
"home_page": "https://github.com/devfemibadmus/ercaspay",
"name": "ercaspay",
"maintainer": null,
"docs_url": null,
"requires_python": null,
"maintainer_email": null,
"keywords": "ercaspay, ercas payment plugin",
"author": "Dev Femi Badmus",
"author_email": "devfemibadmus@gmail.com",
"download_url": "https://files.pythonhosted.org/packages/92/18/9f0e23904f31b7041a560a6e343c74a6bb4d8d296043a4602284c4971558/ercaspay-1.0.0.3.tar.gz",
"platform": null,
"description": "\n\n\n**ERCASPAY** is a Python package that interacts with the [Ercaspay Payment Platform](https://ercaspay.com). It supports various payment methods such as card transactions, USSD, and bank transfers. Along with the Python package, the repo includes a Django app and a Flask app for integrating Ercaspay functionality into web applications.\n\n### For extra support, there is a docstring in every class and function to guide and explain their usage more effectively. Checkout more and test using the [test/test.py](test/test.py) \n\n## Installation\n\nTo get started, install the Ercaspay package via pip:\n\n```bash\npip install ercaspay\n\n```\n\n## Command Line Interface (CLI)\n\nYou can use the `ercaspay` command in your terminal to check supported banks and verify if a specific bank is supported.\n\n### List all supported banks:\n\n```bash\nercaspay --bank list\n\n```\n\n### Check if a specific bank is supported:\n\n```bash\nercaspay --bank fcmb\n\n```\n\n## Requirements\n\nThe package requires two files to interact with the Ercaspay API:\n\n1. **ERCASPAY_AUTHORIZATION**: This is required to perform most actions with the Ercaspay API.\n2. **ERCASPAY_PUBLIC_KEY**: This is required for card transactions. **Note:** that when passing the `ERCASPAY_PUBLIC_KEY`, you should **remove** the header and footer before including it in your environment file.\n\n## Setup\n\n### Initialize the Ercaspay Instance\n\nYou can initialize the Ercaspay class by either passing an environment file or by directly setting the values in your code.\n\n#### Option 1: Using an Environment File\n\nYou can create an `.env` file containing your Ercaspay credentials and configurations. Then, you can initialize the `Ercaspay` instance like this:\n\n```python\nfrom ercaspay import Ercaspay\n\nercaspay = Ercaspay(env='filename')\n\n```\n\n```bash\n# filename content\nERCASPAY_AUTHORIZATION=ECRS-TEST-SKNvIyOB5m62L7GMeP1pJ867074LXvHyeMGyYQT4WF\nERCASPAY_PUBLIC_KEY=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAwcyK35rw4X4w9vzb/bcdc1oIClGruVO/2bzlti/U07lWIS4HEZQQwva+rHYniO4yglz0IMJPIT+XteF77303qsAvgYFF4B6OmVtYD7QezLWvVlU0h7oXc9fCz2V+23B6gRUZjmNxE3FMIUhNIb9eqR+rl3wONi1d6qhp6Wsw3ogfcbm9w5RNWgJqFTn+TftxvWmq32TpIKEAIYIHed9SNyKO/BgCKtPedTbKwGCrFQnFFopeKrhJEf5lG5KEu28/50QkmXsjnADW1f4SPhuVqcKt3TDtDkFh5ocxD9fMrSyPV4INBtH18Uf9yDfGwMtBlEj1oTkXVt/evncIjvdXUwIDAQAB\n```\n#### Option 2: Direct Initialization\n\nAlternatively, you can directly pass the required parameters when initializing the Ercaspay instance:\n\n```python\nfrom ercaspay import Ercaspay\n\nercaspay = Ercaspay(\n token='ECRS-TEST-SKNvIyOB5m62L7GMeP1pJ867074LXvHyeMGyYQT4WF',\n rsa_key='MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAwcyK35rw4X4w9vzb/bcdc1oIClGruVO/2bzlti/U07lWIS4HEZQQwva+rHYniO4yglz0IMJPIT+XteF77303qsAvgYFF4B6OmVtYD7QezLWvVlU0h7oXc9fCz2V+23B6gRUZjmNxE3FMIUhNIb9eqR+rl3wONi1d6qhp6Wsw3ogfcbm9w5RNWgJqFTn+TftxvWmq32TpIKEAIYIHed9SNyKO/BgCKtPedTbKwGCrFQnFFopeKrhJEf5lG5KEu28/50QkmXsjnADW1f4SPhuVqcKt3TDtDkFh5ocxD9fMrSyPV4INBtH18Uf9yDfGwMtBlEj1oTkXVt/evncIjvdXUwIDAQAB',\n)\n\n```\n\n\n## Performing Transactions\n\nTo perform any transaction (via card, USSD, or bank transfer), you first need to initialize the transaction.\n\n### Example: Common Transaction\n\n```python\n# Create the transaction\nresponse = ercaspay.initiate(100000.55, \"Test User\", \"testuser@example.com\", \"testuser@example.com\", redirectUrl='https://example.com')\nprint(response)\n\n# Get transaction reference\ntransaction_ref = response['responseBody'].get('transactionReference')\n\n# checking status\nresponse = transaction.status()\nprint(response)\n\n# checking details\nresponse = transaction.details()\nprint(response)\n\n# more in the test/test.py\n\n```\n### Example: Card Transaction\n\n```python\n# Create the transaction\nresponse = ercaspay.card()\nprint(response)\n\n# Get response code\nresponse_code = response['responseBody'].get('code')\n\n# if code is C0: transaction successful no auth required\n\n# if code is C2: redirect customer to response['responseBody']['checkoutUrl']\n\n# if code is C1: otp has been sent to customer phone\nresponse = transaction.submit_otp(otp)\nprint(response)\n\n# request new otp\nresponse = transaction.resend_otp()\nprint(response)\n\n# code are determine by the type of card use\n\n```\n\n## Sample Flask and Django Plugin\n\n### Flask Example\n\nYou can integrate Ercaspay into your Flask app as follows [test/flask.py](test/flask.py) :\n\n```python\nfrom flask import Flask\nfrom typing import Dict\nfrom ercaspay.flask import ErcaspayPage\n\napp = Flask(__name__)\napp.secret_key = \"your-secret-key\"\n\nErcaspayPage(app, \"Sponsor Scholarship Contribution\", ercaspay_url='/payment')\n\n@app.route(\"/\")\ndef hello_world():\n return \"Hello World!\"\n\nif __name__ == \"__main__\":\n app.run(debug=True)\n\n```\n\n### Django Example\n\nIn your Django app, you can perform similar operations using views [test/website](test/website):\n\n```python\n# Add ercaspay into ur installed app in (settings.py)\nINSTALLED_APPS = [\n #...others\n 'ercaspay',\n]\n\n# setting conf for ercaspay (settings.py)\nERCASPAY = {\n \"ENV\": None,\n \"TOKEN\": None,\n \"RSA_KEY\": None,\n \"CURRENCY\": \"NGN\", # note u can specify currency for each transaction when u integrate\n \"ADMIN_SITE\": \"/\",\n \"REDIRECT_URL\": \"/\",\n \"AUTH_REDIRECT_URL\": \"auth\",\n \"PAYMENT_PAGE_NAME\": \"\",\n \"PAYMENT_PAGE_DESC\": \"\",\n \"NO_PHONE\": True\n}\n\n# Add path in ur project or app urls, specify any name e.g payment or ercaspay (urls.py)\npath('ercaspay/', include('ercaspay.urls')),\n\n# remember to run python manage.py migrate\n\n# checkout transaction in ur django admin\n```\n\n## Response Handling\n\nResponses from the Ercaspay API are structured into two categories: **failure** and **success**. Below are examples of both types. For more response structures, check the [test/response.txt](test/response.txt) file in this repository.\n\n### Failure Response\nFailure responses have a fixed structure and typically include the following keys:\n```json\n{\n \"errorCode\": \"400\",\n \"message\": \"a short msg e.g Bad request\",\n \"explanation\": \"a little long explanation that can be displayed in the browser to the user\"\n}\n\n```\n\n### Success Response\n\nSuccess responses contain more data, with a dynamic `responseBody` depending on the API call. Examples of success responses:\n\n - Example for a successful transaction:\n \n ```json\n {\n \"requestSuccessful\": true,\n \"responseCode\": \"success\",\n \"responseMessage\": \"success\",\n \"responseBody\": {\n \"paymentReference\": \"nigga@example.com\",\n \"transactionReference\": \"ERCS|20241217025313|1734400393621\",\n \"checkoutUrl\": \"https://sandbox-checkout.ercaspay.com/ERCS|20241217025313|1734400393621\"\n }\n }\n \n ```\n \n - Example for a pending transaction requiring user action:\n \n \n ```json\n {\n \"requestSuccessful\": true,\n \"responseCode\": \"C1\",\n \"responseMessage\": \"success\",\n \"responseBody\": {\n \"code\": \"C1\",\n \"status\": \"PENDING\",\n \"gatewayMessage\": \"Kindly enter the OTP sent to 234805***1111\",\n \"supportMessage\": \"Didn't get the OTP? Dial *723*0# on your phone (MTN, Etisalat, Airtel). For Glo, use *805*0#.\",\n \"transactionReference\": \"ERCS|20241217025313|1734400393621\",\n \"paymentReference\": \"nigga@example.com\",\n \"gatewayReference\": \"oCKuDTqT2l\",\n \"amount\": 100050,\n \"callbackUrl\": \"https://nigga.com\"\n }\n }\n \n ```\n - Some Others\n\n```python\ncheckout\n{'requestSuccessful': True, 'responseCode': 'success', 'responseMessage': 'success', 'responseBody': {'paymentReference': 'nigga@example.com', 'transactionReference': 'ERCS|20241217025313|1734400393621', 'checkoutUrl': 'https://sandbox-checkout.ercaspay.com/ERCS|20241217025313|1734400393621'}}\n\ncard C1\n{'requestSuccessful': True, 'responseCode': 'C1', 'responseMessage': 'success', 'responseBody': {'code': 'C1', 'status': 'PENDING', 'gatewayMessage': 'Kindly enter the OTP sent to 234805***1111', 'supportMessage': \"Didn't get the OTP? Dial *723*0# on your phone (MTN,Etisalat,Airtel) Glo,use *805*0#.\", 'transactionReference': 'ERCS|20241217025313|1734400393621', 'paymentReference': 'nigga@example.com', 'gatewayReference': 'oCKuDTqT2l', 'amount': 100050, 'callbackUrl': 'https://nigga.com'}}\n\ncard C2\n{'requestSuccessful': True, 'responseCode': 'success', 'responseMessage': 'success', 'responseBody': {'paymentReference': 'nigga@example.com', 'transactionReference': 'ERCS|20241217050928|1734408568497', 'checkoutUrl': 'https://sandbox-checkout.ercaspay.com/ERCS|20241217050928|1734408568497'}}\n\nerror\n{'errorCode': '400', 'message': 'Bad Request', 'explanation': 'wrong amount provided'} \n\nsubmit otp\n{'requestSuccessful': True, 'responseCode': 'success', 'responseMessage': 'success', 'responseBody': {'status': 'SUCCESS', 'gatewayMessage': 'OTP Authorization Successful', 'transactionReference': 'ERCS|20241217025313|1734400393621', 'paymentReference': 'nigga@example.com', 'amount': 100000.55, 'callbackUrl': 'https://nigga.com'}}\n\ncheck transaction status\n{'requestSuccessful': True, 'responseCode': 'success', 'responseMessage': 'success', 'responseBody': {'paymentReference': 'nigga@example.com', 'amount': 100000.55, 'status': 'PAID', 'description': None, 'callbackUrl': 'https://nigga.com?reference=nigga@example.com&status=PAID&transRef=ERCS|20241217025313|1734400393621'}}\n\ncancel transaction\n{'requestSuccessful': True, 'responseCode': 'success', 'responseMessage': 'success', 'responseBody': {'callback_url': 'https://nigga.com?reference=nigga@example.com&status=CANCELLED'}}\n\n{'requestSuccessful': True, 'responseCode': 'success', 'responseMessage': 'success', 'responseBody': {'paymentReference': 'nigga@example.com', 'amount': 122200.55, 'status': 'CANCELLED', 'description': None, 'callbackUrl': 'https://nigga.com?reference=nigga@example.com&status=CANCELLED&transRef=ERCS|20241216075712|1734332232972'}}\n\ncheck transaction details\n{'amount': '111111', 'paymentReference': '23784c3611e74debad224b23cc76b80f_20241216205542', 'paymentMethods': 'card, bank-transfer, qrcode, ussd', 'customerName': 'ttttt testing', 'currency': 'NGN', 'customerEmail': 'thegudbadguys@gmail.com', 'customerPhoneNumber': '09082838383', 'redirectUrl': 'http://127.0.0.1:8000/ercaspay/auth', 'description': None, 'metadata': None, 'feeBearer': None}\n{'errorCode': '400', 'message': 'Bad Request', 'explanation': 'This payment has already been completed'}\n\nfor more test use the test.py file\n\n```\n\n## License \nThis project is managed under a license by [Ercaspay](https://ercaspay.com). \n\n## Contribution \nContributions are welcome! You can open an issue in this repository to report bugs, suggest features, or provide feedback. \n\n\n\n",
"bugtrack_url": null,
"license": null,
"summary": "ercaspay plugin",
"version": "1.0.0.3",
"project_urls": {
"Documentation": "https://ercaspay.com",
"Homepage": "https://github.com/devfemibadmus/ercaspay",
"Slack": "https://app.slack.com/client/T083P8D99EY/C083LL3NMDZ",
"Source Code": "https://github.com/devfemibadmus/ercaspay"
},
"split_keywords": [
"ercaspay",
" ercas payment plugin"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "a929770fd1d7aec6723cdf8d7d26d2e774f04a254c349cdd7b2ecca1edb8312a",
"md5": "807f07554c1c2e9ae3218b52f5207355",
"sha256": "da69168312d5b92057faac687ce7c1c6dcb5330358977240f381b10a3bae8ef0"
},
"downloads": -1,
"filename": "ercaspay-1.0.0.3-py3-none-any.whl",
"has_sig": false,
"md5_digest": "807f07554c1c2e9ae3218b52f5207355",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": null,
"size": 44325,
"upload_time": "2025-01-09T02:34:32",
"upload_time_iso_8601": "2025-01-09T02:34:32.029466Z",
"url": "https://files.pythonhosted.org/packages/a9/29/770fd1d7aec6723cdf8d7d26d2e774f04a254c349cdd7b2ecca1edb8312a/ercaspay-1.0.0.3-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "92189f0e23904f31b7041a560a6e343c74a6bb4d8d296043a4602284c4971558",
"md5": "0b6d59e588b72470e1707cb6b06e04f6",
"sha256": "40ddcf6cc9bbf2c505a00ea7b716cfc74b751e8679c2f4f5f234473f11a7587a"
},
"downloads": -1,
"filename": "ercaspay-1.0.0.3.tar.gz",
"has_sig": false,
"md5_digest": "0b6d59e588b72470e1707cb6b06e04f6",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 45896,
"upload_time": "2025-01-09T02:34:34",
"upload_time_iso_8601": "2025-01-09T02:34:34.797272Z",
"url": "https://files.pythonhosted.org/packages/92/18/9f0e23904f31b7041a560a6e343c74a6bb4d8d296043a4602284c4971558/ercaspay-1.0.0.3.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2025-01-09 02:34:34",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "devfemibadmus",
"github_project": "ercaspay",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"requirements": [
{
"name": "requests",
"specs": []
},
{
"name": "pycryptodome",
"specs": []
}
],
"lcname": "ercaspay"
}