ercaspay


Nameercaspay JSON
Version 1.0.0.3 PyPI version JSON
download
home_pagehttps://github.com/devfemibadmus/ercaspay
Summaryercaspay plugin
upload_time2025-01-09 02:34:34
maintainerNone
docs_urlNone
authorDev Femi Badmus
requires_pythonNone
licenseNone
keywords ercaspay ercas payment plugin
VCS
bugtrack_url
requirements requests pycryptodome
Travis-CI No Travis.
coveralls test coverage No coveralls.
            
![Ercaspay](https://sandbox.ercaspay.com/_nuxt/logo.BiwWHVNC.png)

**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.  


![Ercaspay Workflow](https://sandbox-checkout.ercaspay.com/apple-touch-icon.png)

            

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![Ercaspay](https://sandbox.ercaspay.com/_nuxt/logo.BiwWHVNC.png)\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![Ercaspay Workflow](https://sandbox-checkout.ercaspay.com/apple-touch-icon.png)\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"
}
        
Elapsed time: 1.31072s