Giter VIP home page Giter VIP logo

remesita-php-sdk-client's Introduction

API de Remesita

La clase RemesitaAPI proporciona una interfaz fácil de usar para interactuar con el servicio de Remesita. Esta clase cubre varias funcionalidades, incluyendo autenticación, obtención de negocios, transferencias entre cuentas, y más.

Instalación

Asegúrate de tener instalado PHP y Composer en tu proyecto. Luego, puedes incluir la clase ApiClient en tu proyecto.

Uso

Inicialización

Para comenzar, necesitas inicializar la clase con tu apiKey y apiSecret:

use Remesita\ApiClient;

$apiKey = "TU_API_KEY";
$apiSecret = "ApiClient";
$remesita = new ApiClient($apiKey, $apiSecret);

Autenticación

La autenticación se maneja automáticamente dentro de la clase. Sin embargo, si deseas autenticarte manualmente, puedes hacerlo y ademas de obtener el token puedes obtener datos de usuario:

$response = $remesita->authenticate();
$token = $response->accessToken;
$user = $response->user;

Obtener Negocios

Para obtener una lista de negocios:

/**
 * @var Remesita\DTO\Business[] $businesses
 */
$businesses = $remesita->getBusinesses();

Transferencias entre cuentas

Para realizar una transferencia entre cuentas:

/**
 * @var Remesita\DTO\TransferBetweenResponse $response
 */
$response = $remesita->transferBetweenAccounts("tarjta_origen", "tarjeta_destino", 100.50, "Transferencia de prueba");

Cambiar estado de tarjeta

Para bloquear o desbloquear una tarjeta:

$response = $remesita->toggleCardStatus("NUMERO_DE_TARJETA");

Lista de negocios registrados

/** 
 * @var Remesita\DTO\Business $b
 */
foreach($remesita->getBusinesses()  as $b){
    echo $b->id;
    echo $b->name;
    echo $b->logo;
    echo $b->description;
    echo $b->domain;
}

Cobrando con Remesita Payment Link

Generar y usar un link de pagos involucrá:

  • Inicialización de la API con apiKey y apiSecret.
  • Autenticación y obtención del token.
  • Creación del link de pagos usando el id de un Negocio registrado bajo tu cuenta.
  • Proceso de pago por parte del usuario.
  • Posibles razones de fallo y redirecciones a las URLs successUrl y cancelUrl.
  • Proceso de IPN y cómo el servidor procesa las notificaciones.

Diagrama de flujo del proceso de pago usando payment link

Este diagrama ahora refleja la inicialización de la API, la autenticación, la creación del link de pagos, el proceso de pago por parte del usuario, las posibles razones de fallo y las redirecciones a las URLs successUrl y cancelUrl. También se incluye el proceso de IPN y cómo el servidor procesa las notificaciones.

Implementación

$myBusinessUnitId="a365366c-261f-11ed-9ef1-024206050103";
$concept= "Toma chocolate paga lo que debes";
$amount=101.99;

$myExternalOrderCartId="MYID123"; //optional 
$payerName="YESAPIN GARCIA"; //optional
$payerPhone="+17863052277"; //optional
$payerEmail="[email protected]"; //optional
$successUrl="https://miweb.com/checkout/success";
$cancelUrl="https://miweb.com/checkout/canceled";
$ipnUrl="https://miweb.com/ipn?id=$myExternalOrderCartId";
/** 
 * @var Remesita\DTO\PaymentLinkResponse $pl
 */
$pl=$remesita->createPaymentLink(
    $myBusinessUnitId,
    $amount,
    $concept,
    $myExternalOrderCartId, //optional
    $ipnUrl, //optional
    $successUrl, //optional
    $cancelUrl, //optional
    $payerName, //optional
    $payerPhone, //optional
    $payerEmail //optional
);

echo $pl->link;

Payload del IPN

{
   "app_id": "el business id",
   "status": "payed", #payed|completed|canceled|payment_review
   "payed_at": "2023-08-26 13:33:22",
   "liquid_at": "2023-08-26 17:34:56",
   "canceled_at": null,
   "cancel_reason": "",
   "custom_id": "MYID123",
   "concept": "Toma chocolate paga lo que debes",
   "ref": "RM123456",
   "paymentMethod": "PREPAIDCARDBALANCE",
   "amount": 101.99,
   "recipient_account": "TU TARJETA MAIN",
   "customer": {
       "code": "CODIGO DE CIENTE EN REMESITA",
       "name": "Yesapin Garcia",
       "phone": "+1786XXXXXXXX",
       "email": "[email protected]",
       "sex": "FEMALE",
       "iso": "US",
       "risk": 30,
       "profile_picture": "https://remesita.s3.amazonaws.com/uploads/profile-photo.jpeg",
       "kyc_verified": true
   }
}

Lista de tarjetas

/** 
 * @var Remesita\DTO\Card $c
 */
foreach($remesita->getCards()  as $c){
    echo $b->number;
    echo $b->balance; 
}

Lista de transaccones de una tarjeta

  
$from = new \DateTime("now - 30 days");
$to = new \DateTime("now");
$pg=1;
$pgSize=25;
$paggination=$remesita->getCardTransactions(
    $cardNumber,
    $from,
    $to,
    $pg,
    $pgSize
);

echo $paggination->total;
echo $paggination->pg;
echo $paggination->pgSize;
if($paggination->allowNext) {

}
/** 
 * $paggination implementa la interfaz \Iterator
 * @var Remesita\DTO\CardTransaction $c
 */
foreach($paggination  as $t){
    echo $t->amount;
    echo $t->type; //DBT or CRD
    echo $t->currency; 
    echo $t->date; 
    echo $t->memo; 
    echo $t->exchangeRate; //rate to USD
}

Lista de ordenes

  
$from = new \DateTime("now - 30 days");
$to = new \DateTime("now");
$pg=1;
$pgSize=25;
$paggination=$remesita->getOrders( 
    $from,
    $to,
    $pg,
    $pgSize
); 
/** 
 * $paggination implementa la interfaz \Iterator
 * @var Remesita\DTO\Order $o
 */
foreach($paggination  as $o){
    echo $o->reference; 
    echo $o->sku; 
    echo $o->recipientAmount; 
}

Pruebas

Para ejecutar las pruebas, simplemente usa el comando:

phpunit ApiClientTest.php 

Contribuciones

Las contribuciones son bienvenidas. Por favor, abre un issue si encuentras un bug o si tienes alguna sugerencia de mejora.

Licencia

Este proyecto está bajo la licencia MIT.

remesita-php-sdk-client's People

Contributors

remexfulap avatar rrortega avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.