Awesome
Epayco
PHP wrapper for Epayco API
Description
API to interact with Epayco https://api.epayco.co/
Dependencias
* PHP 5.3+
Installation
composer require epayco/epayco-php
Add autoload
to composer
require 'vendor/autoload.php';
From GitHub
$ git clone https://github.com/epayco/epayco-php.git
Usage
$epayco = new Epayco\Epayco(array(
"apiKey" => "YOU_PUBLIC_API_KEY",
"privateKey" => "YOU_PRIVATE_API_KEY",
"lenguage" => "ES",
"test" => true
));
Create Token
$token = $epayco->token->create(array(
"card[number]" => '4575623182290326',
"card[exp_year]" => "2017",
"card[exp_month]" => "07",
"card[cvc]" => "123",
"hasCvv" => true //hasCvv: validar codigo de seguridad en la transacción
));
Customers
Create
$customer = $epayco->customer->create(array(
"token_card" => $token->id,
"name" => "Joe",
"last_name" => "Doe", //This parameter is optional
"email" => "joe@payco.co",
"default" => true,
//Optional parameters: These parameters are important when validating the credit card transaction
"city" => "Bogota",
"address" => "Cr 4 # 55 36",
"phone" => "3005234321",
"cell_phone"=> "3010000001",
));
Retrieve
$customer = $epayco->customer->get("id_client");
List
$customer = $epayco->customer->getList();
Update
$customer = $epayco->customer->update("id_client", array('name' => 'julianc'));
Delete Customer's token
$customer = $epayco->customer->delete(array(
"franchise" => "visa",
"mask" => "457562******0326",
"customer_id"=>"id_client"
));
Add new token default to card existed
$customer = $epayco->customer->addDefaultCard(array(
"customer_id"=>"id_client",
"token" => "**********zL4gFB",
"franchise"=> "american-express",
"mask"=> "373118*****7642"
));
Add new token to customer existed
$customer = $epayco->customer->addNewToken(array(
"token_card" => "HyjnY3pBSjFtiQBRT",
"customer_id"=>"id_client"
));
Plans
Create
$plan = $epayco->plan->create(array(
"id_plan" => "coursereact",
"name" => "Course react js",
"description" => "Course react and redux",
"amount" => 30000,
"currency" => "cop",
"interval" => "month",
"interval_count" => 1,
"trial_days" => 30
));
Retrieve
$plan = $epayco->plan->get("coursereact");
List
$plan = $epayco->plan->getList();
Remove
$plan = $epayco->plan->remove("coursereact");
Subscriptions
Create
$sub = $epayco->subscriptions->create(array(
"id_plan" => "coursereact",
"customer" => "id_client",
"token_card" => "id_token",
"doc_type" => "CC",
"doc_number" => "5234567",
//Optional parameter: if these parameter it's not send, system get ePayco dashboard's url_confirmation
"url_confirmation" => "https://ejemplo.com/confirmacion",
"method_confirmation" => "POST"
));
Retrieve
$sub = $epayco->subscriptions->get("id_subscription");
List
$sub = $epayco->subscriptions->getList();
Cancel
$sub = $epayco->subscriptions->cancel("id_subscription");
Pay Subscription
$sub = $epayco->subscriptions->charge(array(
"id_plan" => "coursereact",
"customer" => "id_client",
"token_card" => "id_token",
"doc_type" => "CC",
"doc_number" => "5234567",
"address" => "cr 44 55 66",
"phone"=> "2550102",
"cell_phone"=> "3010000001",
"ip" => "190.000.000.000" // This is the client's IP, it is required
));
PSE
Listar bancos
$test = true; // opcional, tiene que ser true o false o no enviarse
$bancos = $epayco->bank->pseBank($test);
//$bancos representa un object con toda la lista de bancos disponibles para transacciones con PSE
Create
$pse = $epayco->bank->create(array(
"bank" => "1022",
"invoice" => "1472050778",
"description" => "Pago pruebas",
"value" => "10000",
"tax" => "0",
"tax_base" => "0",
"currency" => "COP",
"type_person" => "0",
"doc_type" => "CC",
"doc_number" => "numero_documento_cliente",
"name" => "PRUEBAS",
"last_name" => "PAYCO",
"email" => "no-responder@payco.co",
"country" => "CO",
"city" => "Bogota",
"cell_phone" => "3010000001",
"ip" => "190.000.000.000", // This is the client's IP, it is required
"url_response" => "https://ejemplo.com/respuesta.html",
"url_confirmation" => "https://ejemplo.com/confirmacion",
"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" => "",
));
Retrieve
$pse = $epayco->bank->get("ticketId");
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
$split_pay = $epayco->bank->create(array(
//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', //sí se envía este campo el split_receivers se vuelve un campo obligatorio
"split_receivers" => json_encode(array(
array('id'=>'P_CUST_ID_CLIENTE 1 RECEIVER','total'=>'58000','iva'=>'8000','base_iva'=>'50000','fee' => '10'),
array('id'=>'P_CUST_ID_CLIENTE 2 RECEIVER','total'=>'58000','iva'=>'8000','base_iva'=>'50000','fee' => '10')
)) // Campo obligatorio sí se envía el campo split_rule
));
Cash
Create
$cash = $epayco->cash->create("efecty", array(
"invoice" => "1472050778",
"description" => "pay test",
"value" => "20000",
"tax" => "0",
"tax_base" => "0",
"currency" => "COP",
"type_person" => "0",
"doc_type" => "CC",
"doc_number" => "numero_documento_cliente",
"name" => "testing",
"last_name" => "PAYCO",
"email" => "test@mailinator.com",
"cell_phone" => "3010000001",
"country" => "CO",
"city" => "Bogota",
"end_date" => "data_max_5_days", // yy-mm-dd
"ip" => "190.000.000.000", // This is the client's IP, it is required
"url_response" => "https://ejemplo.com/respuesta.html",
"url_confirmation" => "https://ejemplo.com/confirmacion",
"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" => "",
));
list
$cash = $epayco->cash->create("efecty", array());
$cash = $epayco->cash->create("gana", array());
$cash = $epayco->cash->create("baloto", array());//expiration date can not be longer than 30 days
$cash = $epayco->cash->create("redservi", array());//expiration date can not be longer than 30 days
$cash = $epayco->cash->create("puntored", array());//expiration date can not be longer than 30 days
Retrieve
$cash = $epayco->cash->transaction("id_transaction");
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
$split_pay = $epayco->cash->create(array(
//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_encode(array(
array('id'=>'P_CUST_ID_CLIENTE 1 RECEIVER','total'=>'58000','iva'=>'8000','base_iva'=>'50000','fee' => '10'),
array('id'=>'P_CUST_ID_CLIENTE 2 RECEIVER','total'=>'58000','iva'=>'8000','base_iva'=>'50000','fee' => '10')
)) // Campo obligatorio sí se envía split_rule
));
Payment
Create
$pay = $epayco->charge->create(array(
//required
"token_card" => $token->id,
"customer_id" => $customer->data->customerId,
"doc_type" => "CC",
"doc_number" => "numero_documento_cliente",
"name" => "John",
"last_name" => "Doe",
"email" => "example@email.com",
"value" => "116000",
"currency" => "COP",
// optional
"bill" => "OR-1234",
"description" => "Test Payment",
"tax" => "16000",
"tax_base" => "100000",
"dues" => "12",
"address" => "cr 44 55 66",
"city" => "Medellín",
"country" => "CO",
"phone"=> "2550102",
"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",\
"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" => "data 1",
"extra2" => "data 2",
"extra3" => "data 3",
"extra4" => "data 4",
"extra5" => "data 5"
));
Retrieve
$pay = $epayco->charge->transaction("id_transaction");
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
$split_pay = $epayco->charge->create(array(
//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', // sí se envía este parámetro el campo split_receivers se vuelve obligatorio
"split_receivers" => array(
array('id'=>'P_CUST_ID_CLIENTE 1 RECEIVER','total'=>'58000','iva'=>'8000','base_iva'=>'50000','fee' => '10'),
array('id'=>'P_CUST_ID_CLIENTE 2 RECEIVER','total'=>'58000','iva'=>'8000','base_iva'=>'50000','fee' => '10')
) //Campo obligatorio sí se envía split_rule
));
Daviplata
Create
$pay = $epayco->daviplata->create(array(
"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",
"tax_base" => "0",
"method_confirmation" => "POST",
"url_confirmation" => "https://tudominio.com/respuesta.php",
"url_response" => "https://tudominio.com/respuesta.php",
"extra1" => "data 1",
"extra2" => "data 2",
"extra3" => "data 3",
"extra4" => "data 4",
"extra5" => "data 5"
));
Confirm
$pay = $epayco->daviplata->confirm(array(
"ref_payco" => "45508846", // It is obtained from the create response
"id_session_token" => "45081749", // It is obtained from the create response
"otp" => "2580"
));
Safetypay
Create
$sp = $epayco->safetypay->create(array(
"cash" => "1",
"end_date" => "2022-08-05",
"doc_type" => "CC",
"document" => "123456789",
"name" => "Jhon",
"last_name" => "doe",
"email" => "gerson.vasquez@epayco.com",
"ind_country" => "57",
"phone" => "3003003434",
"country" => "CO",
"invoice" => "fac-01",
"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" => 100,
"tax" => 0,
"ico" => 0,
"tax_base" => 0,
"method_confirmation" => "POST",
"url_confirmation" => "https://tudominio.com/respuesta.php",
"url_response" => "https://tudominio.com/respuesta.php",
"extra1" => "data 1",
"extra2" => "data 2",
"extra3" => "data 3",
"extra4" => "data 4",
"extra5" => "data 5"
));