epayco / epayco-python

SDK para python pagos con tarjeta de credito,debito y cash
12 stars 12 forks source link

Epayco


Python wrapper for Epayco API

Description ########

API to interact with Epayco https://api.epayco.co

Installation


If you want clone the repository, point it directly into our GitHub project::

$ git clone https://github.com/epayco/epayco-python.git

Run the file setup.py

$ sudo python3 setup.py install

Install from Packages (Linux), Pyhton = 3.7


$ pip install epaycosdk

Install from Packages (Windows) Pyhton = 3.7


$ pip install epaycosdk-win

Usage

.. code-block:: python

import epaycosdk.epayco as epayco

apiKey = "PUBLIC_KEY"
privateKey = "PRIVATE_KEY"
lenguage = "ES"
test = True
options={"apiKey":apiKey,"privateKey":privateKey,"test":test,"lenguage":lenguage}

objepayco=epayco.Epayco(options)

Create Token

.. code-block:: python

credit_info = {
  "card[number]": "4575623182290326",
  "card[exp_year]": "2025",
  "card[exp_month]": "19",
  "card[cvc]": "123",
  "hasCvv": True #// hasCvv: validar codigo de seguridad en la transacción
  }

token=objepayco.token.create(credit_info)

Customers

Create


.. code-block:: python

customer_info = {
  "token_card": "eXj5Wdqgj7xzvC7AR",
  "name": "Joe",
  "last_name": "Doe", #This parameter is optional
  "email": "joe@payco.co",
  "phone": "3005234321",
  "default": True
  }

customer=objepayco.customer.create(customer_info)

Retrieve


.. code-block:: python

customer=objepayco.customer.get("id_client")

List


.. code-block:: python

customers = objepayco.customer.getlist()

Update


.. code-block:: python

update_customer_info = {
  "name": "Alex"
}

customer =objepayco.customer.update("id_client",update_customer_info)

Delete Token


.. code-block:: python

delete_customer_info = {
  "franchise": "visa",
  "mask": "457562******0326",
  "customer_id":"id_client"
}

customer =objepayco.customer.delete(delete_customer_info)

Add new token default to card existed


.. code-block:: python

customer_info = {
    "customer_id":"id_client",
    "token": "**********Q2ZLD9",
    "franchise":"visa",
    "mask":"457562******0326"
}
customer=objepayco.customer.addDefaultCard(customer_info)

Add new token to customer existed


.. code-block:: python

customer_info = {
    "token_card": "6tWRMjsiDGPds2Krb",
    "customer_id":"id_client"
}
customer=objepayco.customer.addNewToken(customer_info)

Plans

Create


.. code-block:: python

plan_info = {
  "id_plan": "coursereact",
  "name": "Course react js",
  "description": "Course react and redux",
  "amount": 30000,
  "currency": "cop",
  "interval": "month",
  "interval_count": 1,
  "trial_days": 30
}

plan = objepayco.plan.create(plan_info)

Retrieve


.. code-block:: python

plan = objepayco.plan.get("coursereact")

List


.. code-block:: python

planes = objepayco.plan.getlist()

Remove


.. code-block:: python

plan = objepayco.plan.delete("coursereact")

Subscriptions

Create


.. code-block:: python

subscription_info = {
"id_plan": "coursereact2",
"customer": "9xRxhaJ2YmLTkT5uz",
"token_card": "eXj5Wdqgj7xzvC7AR",
"doc_type": "CC",
"doc_number": "0000000000",
#Optional parameter: if these parameter it's not send, system get ePayco dashboard's url_confirmation
"url_confirmation": "https://tudominio.com/confirmacion.php",
"method_confirmation": "POST"
}

sub=objepayco.subscriptions.create(subscription_info)

Retrieve


.. code-block:: python

sub=objepayco.subscriptions.get("efPXtZ5r4nZRoPtjZ")

List


.. code-block:: python

sub=objepayco.subscriptions.getlist()

Cancel


.. code-block:: python

sub=objepayco.subscriptions.cancel("fayE66HxYbxWydaN8")

Pay Subscription


.. code-block:: python

subscription_info = {
  "id_plan": "coursereact",
  "customer": "A6ZGiJ6rgxK5RB2WT",
  "token_card": "eXj5Wdqgj7xzvC7AR",
  "doc_type": "CC",
  "doc_number": "1000000",
  "ip":"190.000.000.000"  #This is the client's IP, it is required

}

sub = objepayco.subscriptions.charge(subscription_info)

PSE

Create


.. code-block:: python

pse_info = {
  "bank": "1007",
  "invoice": "1472050778",
  "description": "pay test",
  "value": "116000",
  "tax": "16000",
  "tax_base": "100000",
  "currency": "COP",
  "type_person": "0",
  "doc_type": "CC",
  "doc_number": "10000000",
  "name": "testing",
  "last_name": "PAYCO",
  "email": "no-responder@payco.co",
  "country": "CO",
  "cell_phone": "3010000001",
  "ip": "190.000.000.000", #This is the client's IP, it is required,
  "url_response": "https://tudominio.com/respuesta.php",
  "url_confirmation": "https://tudominio.com/confirmacion.php",
  "metodoconfirmacion": "GET",      
  #Los parámetros extras deben ser enviados tipo string, si se envía tipo array generara error.
  "extra1": "",      
  "extra2": "",
  "extra3": "",
  "extra4": "",
  "extra5": "",  
  "extra6": "",
  "extra7": ""
}

pse = objepayco.bank.create(pse_info)

Retrieve


.. code-block:: python

pse = objepayco.bank.pseTransaction("ticketId")

Split Payments


Previous requirements: https://docs.epayco.co/tools/split-payment


Split payment


.. code-block:: python

import json

pse_info = {
#Other customary parameters...
  "splitpayment":"true",
   "split_app_id":"P_CUST_ID_CLIENTE APPLICATION",
   "split_merchant_id":"P_CUST_ID_CLIENTE COMMERCE",
   "split_type" : "01",
   "split_primary_receiver" : "P_CUST_ID_CLIENTE APPLICATION",
   "split_primary_receiver_fee":"80000"
   "split_receivers": json.dumps([
            {"id":"P_CUST_ID_CLIENTE 1 RECEIVER","total":"58000","iva":"8000","base_iva":"50000","fee":"10"},
            {"id":"P_CUST_ID_CLIENTE 2 RECEIVER","total":"58000","iva":"8000","base_iva":"50000", "fee":"10"}
    ])
 }

pse_split = objepayco.bank.create(pse_info)

Cash

Create


.. code-block:: python

cash_info = {
    "invoice": "1472050778",
    "description": "pay test",
    "value": "116000",
    "tax": "16000",
    "tax_base": "100000",
    "currency": "COP",
    "type_person": "0",
    "doc_type": "CC",
    "doc_number": "100000",
    "name": "testing",
    "last_name": "PAYCO",
    "email": "test@mailinator.com",
    "cell_phone": "3010000001",
    "end_date": "2020-12-05",
    "ip": "190.000.000.000",  #This is the client's IP, it is required,
    "url_response": "https://tudominio.com/respuesta.php",
    "url_confirmation": "https://tudominio.com/confirmacion.php",
    "metodoconfirmacion": "GET",
    #Los parámetros extras deben ser enviados tipo string, si se envía tipo array generara error.
    "extra1": "",
    "extra2": "",
    "extra3": "",
    "extra4": "",
    "extra5": "",  
    "extra6": "",
    "extra7": ""

}

cash = objepayco.cash.create('efecty',cash_info)
cash = objepayco.cash.create('gana',cash_info)
cash = objepayco.cash.create('baloto',cash_info) #expiration date can not be longer than 30 days
cash = objepayco.cash.create('redservi',cash_info) #expiration date can not be longer than 30 days
cash = objepayco.cash.create('puntored',cash_info) #expiration date can not be longer than 30 days
cash = objepayco.cash.create('sured',cash_info) #expiration date can not be longer than 30 days

Retrieve


.. code-block:: python

cash = epayco.cash.get("ref_payco")

Split Payments


Previous requirements: https://docs.epayco.co/tools/split-payment

Split payment:


use the following attributes in case you need to do a dispersion with one or multiple providers

.. code-block:: python

import json 

payment_info = {
#Other customary parameters...
    "splitpayment":"true",
    "split_app_id":"P_CUST_ID_CLIENTE APPLICATION",
    "split_merchant_id":"P_CUST_ID_CLIENTE COMMERCE",
    "split_type" : "02",
    "split_primary_receiver" : "P_CUST_ID_CLIENTE APPLICATION",
    "split_primary_receiver_fee":"0",
    "split_rule":'multiple', #si se envía este parámetro el campo split_receivers se vuelve obligatorio
    "split_receivers":json.dumps([
            {"id":"P_CUST_ID_CLIENTE 1 RECEIVER","total":"58000","iva":"8000","base_iva":"50000","fee":"10"},
            {"id":"P_CUST_ID_CLIENTE 2 RECEIVER","total":"58000","iva":"8000","base_iva":"50000", "fee":"10"}
    ]) #campo obligatorio sí se envía split_rule
    }

 cash_info_split = objepayco.cash.create('efecty',cash_info)

Payment


Create


.. code-block:: python

payment_info = {
  "token_card": "token_card",
  "customer_id": "customer_id",
  "doc_type": "CC",
  "doc_number": "1000000",
  "name": "John",
  "last_name": "Doe",
  "email": "example@email.com",
  "bill": "OR-1234",
  "description": "Test Payment",
  "value": "116000",
  "tax": "16000",
  "tax_base": "100000",
  "currency": "COP",
  "dues": "12",
  "ip":"190.000.000.000",  #This is the client's IP, it is required
  "url_response": "https://tudominio.com/respuesta.php",
  "url_confirmation": "https://tudominio.com/confirmacion.php",
  "method_confirmation": "GET",
  "use_default_card_customer":True, # if the user wants to be charged with the card that the customer currently has as default = true
  #Los parámetros extras deben ser enviados tipo string, si se envía tipo array generara error.
  "extra1": "",
  "extra2": "",
  "extra3": "",
  "extra4": "",
  "extra5": "",  
  "extra6": "",
  "extra7": ""
}

pay = objepayco.charge.create(payment_info)

Retrieve


.. code-block:: python

pay = epayco.charge.get("ref_payco")

Split Payments


Previous requirements https://docs.epayco.co/tools/split-payment

Split payment


use the following attributes in case you need to do a dispersion with one or multiple providers

.. code-block:: python

import json

payment_info = {
#Other customary parameters...
    "splitpayment":"true",
    "split_app_id":"P_CUST_ID_CLIENTE APPLICATION",
    "split_merchant_id":"P_CUST_ID_CLIENTE COMMERCE",
    "split_type" : "02",
    "split_primary_receiver" : "P_CUST_ID_CLIENTE APPLICATION",
    "split_primary_receiver_fee":"0",
    "split_rule":'multiple', #si se envía este parámetro el campo split_receivers se vuelve obligatorio
    "split_receivers":[
            {"id":"P_CUST_ID_CLIENTE 1 RECEIVER","total":"58000","iva":"8000","base_iva":"50000","fee":"10"},
            {"id":"P_CUST_ID_CLIENTE 2 RECEIVER","total":"58000","iva":"8000","base_iva":"50000", "fee":"10"}
    ] #campo obligatorio sí se envía split_rule
    }

pay_split = objepayco.charge.create(payment_info)

Daviplata


Create


.. code-block:: python payment_info = { doc_type: "CC", document: "1053814580414720", name: "Testing", last_name: "PAYCO", email: "exmaple@epayco.co", ind_country: "CO", phone: "314853222200033", country: "CO", city: "bogota", address: "Calle de prueba", ip: "189.176.0.1", currency: "COP", description: "ejemplo de transaccion con daviplata", value: "100", tax: "0", ico: "0" tax_base: "0", method_confirmation: "" }

daviplata = objepayco.daviplata.create(payment_info)

confirm transaccion


.. code-block:: python confirm = { ref_payco: "45508846", // It is obtained from the create response id_session_token: "45081749", // It is obtained from the create response otp: "2580" }

daviplata = objepayco.daviplata.confirm(payment_info)

Safetypay


Create


.. code-block:: python payment_info = { cash: "1", expirationDate: "2021-08-05", docType: "CC", document: "123456789", name: "Jhon", lastName: "doe", email: "jhon.doe@yopmail.com", indCountry: "57", phone: "3003003434", country: "CO", invoice: "fac-01", // opcional city: "N/A", address: "N/A", ip: "192.168.100.100", currency: "COP", description: "Thu Jun 17 2021 11:37:01 GMT-0400 (hora de Venezuela)", value: 100000, tax: 0, ico: 0, taxBase: 0, urlConfirmation: "", methodConfirmation: "" }

daviplata = objepayco.daviplata.create(payment_info)