PHPackages                             payway-ar/php-sdk-venta-online - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Payment Processing](/categories/payments)
4. /
5. payway-ar/php-sdk-venta-online

ActiveLibrary[Payment Processing](/categories/payments)

payway-ar/php-sdk-venta-online
==============================

SDK para Payway ventas online

V2.0.8(2mo ago)2255.1k—5.1%19[7 issues](https://github.com/payway-ar/sdk-php-ventaonline/issues)[8 PRs](https://github.com/payway-ar/sdk-php-ventaonline/pulls)PHPPHP &gt;=5.3

Since Jun 28Pushed 2mo ago23 watchersCompare

[ Source](https://github.com/payway-ar/sdk-php-ventaonline)[ Packagist](https://packagist.org/packages/payway-ar/php-sdk-venta-online)[ RSS](/packages/payway-ar-php-sdk-venta-online/feed)WikiDiscussions master Synced 1mo ago

READMEChangelog (10)DependenciesVersions (67)Used By (0)

Payway SDK PHP
================================================

[](#payway-sdk-php)

### Aclaración

[](#aclaración)

### ¡IMPORTANTE! El parámetro amount no debe contener ni puntos ni comas, ya que los últimos dos dígitos siempre serán utilizados para la parte decimal del importe. Ejemplo: 1200 ARS ≈ AR$ 12,00

[](#importante-el-parámetro-amount-no-debe-contener-ni-puntos-ni-comas-ya-que-los-últimos-dos-dígitos-siempre-serán-utilizados-para-la-parte-decimal-del-importe-ejemplo-1200-ars--ar-1200)

MontoEjemplo SDK$1250,45125045$1.500.250,50150025050$3000,00300000Modulo para conexión con gateway de pago Payway

- [Introducción](#introduccion)
    - [Alcance](#alcance)
    - [TimeOut](#timeout)
    - [Diagrama de secuencia](#diagrama-secuencia)
- [Instalación](#instalaci%C3%B3n)
    - [Versiones de PHP soportadas](#versiones)
    - [Manual de Integración](#manualintegracion)
    - [Ambiente](#ambiente)
- [Uso](#uso)
    - [Inicializar la clase correspondiente al conector](#initconector)
    - [Operatoria del Gateway](#operatoria)
        - [Health Check](#healthcheck)
        - [Token](#token)
        - [TokenCs](#tokenCs)
        - [Ejecución del Pago](#payment)
        - [Ejecución del Pago PCI](#pci)
        - [Ejecución del pago PCI Tokenizado](#payment-pci-tokenizado)
        - [Ejecución del pago comercio agregador](#payment-agregator)
        - [Ejecución de pago simple con 3ds](#payment-simple-3ds)
        - [Ejecución de Instruction 3DS](#instruction-3ds)
        - [Captura del Pago](#capture)
        - [Ejecución de pago offline](#pagooffline)
            - [Pago Facil](#pf)
            - [Rapipago](#rp)
            - [Pago mis Cuentas](#pmc)
            - [Caja de Pagos](#cp)
            - [Cobro Express](#ce)
        - [Formulario de Pago](#getvalidateform)
        - [Listado de Pagos](#getallpayments)
        - [Información de un Pago](#getpaymentinfo)
            - [Información adicional de tarjeta](#infoadicionaltarjeta)
        - [Anulación / Devolución Total de Pago](#refund)
        - [Anulación de Devolución Total](#deleterefund)
        - [Devolución Parcial de un Pago](#partialrefund)
        - [Anulación de Devolución Parcial](#deletepartialrefund)
    - [Tokenizacion de tarjetas de crédito](#tokenizaciontarjeta)
        - [Listado de tarjetas tokenizadas](#listadotarjetastokenizadas)
        - [Ejecucion de pago tokenizado](#pagotokenizado)
        - [Eliminacion de tarjeta tokenizada](#eliminartarjetatokenizada)
    - [Integración con Cybersource](#cybersource)
        - [Retail](#retail)
        - [Ticketing](#ticketing)
        - [Digital Goods](#digital-goods)
        - [Services](#services)
        - [Travel](#travel)
- [Tablas de referencia](#tablasreferencia)
    - [Códigos de Medios de Pago](#c%C3%B3digos-de-medios-de-pago)
        - [Divisas Aceptadas](#divisasa)
    - [Provincias](#provincias)
- [Errores](#errores)
    - [Manejo de errores por Cybersource](#errorescs)
    - [Errores de marca](#erroresmarca)

Introducción
------------

[](#introducción)

El flujo de una transacción a través de las **sdks** consta de dos pasos, la **generación de un token de pago** por parte del cliente y el **procesamiento de pago** por parte del comercio. Existen sdks específicas para realizar estas funciones en distintos lenguajes que se detallan a continuación:

- **Generación de un token de pago.** Se utiliza alguna de las siguentes **sdks front-end** :
    - [sdk Javascript](https://github.compayway-ar/sdk-javascript-ventaonline)
- **Procesamiento de pago.** Se utiliza alguna de las siguentes **sdks back-end** :
    - [sdk Java](https://github.com/payway-ar/sdk-java-ventaonline)
    - [sdk PHP](https://github.com/payway-ar/sdk-php-ventaonline)
    - [sdk .Net](https://github.com/payway-ar/sdk-net-ventaonline)
    - [sdk Node](https://github.com/payway-ar/sdk-node-ventaonline)

Alcance
-------

[](#alcance)

La **sdk PHP** provee soporte para su **aplicación back-end**, encargandose de la comunicación del comercio con la **API Payway** utilizando su **API Key privada**1 y el **token de pago** generado por el cliente.

Para generar el token de pago, la aplicación cliente realizará con **Payway** a través de alguna de las siguentes **sdks front-end**:

- [sdk Javascript](https://github.com/payway-ar/sdk-javascript-ventaonline)

[![imagen de sdks](./docs/img/DiagramaSDKs.png)](./docs/img/DiagramaSDKs.png)

[Volver al inicio](#alcance)

TimeOut
-------

[](#timeout)

El tiempo standard de Timeout para una transaccion es de **6 segundos**. Puede existir casos excepcionales, mucho flujo de transacciones concurrentes , en el cual el timeout puede variar entre\*\* 20 a 30 segundos\*\*. Si el cliente decide configurar un timeout menor al indicado, deberá anular las transacciones en estado "Autorizadas" de manera manual.

[Volver a inicio](#inicio)

Diagrama de secuencia
---------------------

[](#diagrama-de-secuencia)

El flujo de una transacción a través de las sdks consta de dos pasos, a saber:

sdk front-end: Se realiza una solicitud de token de pago con la Llave de Acceso pública (public API Key), enviando los datos sensibles de la tarjeta (PAN, mes y año de expiración, código de seguridad, titular, y tipo y número de documento) y obteniéndose como resultado un token que permitirá realizar la transacción posterior.

sdk back-end: Se ejecuta el pago con la Llave de Acceso privada (private API Key), enviando el token generado en el Paso 1 más el identificador de la transacción a nivel comercio, el monto total, la moneda y la cantidad de cuotas.

A continuación, se presenta un diagrama con el Flujo de un Pago.

[![imagen de configuracion](./docs/img/FlujoPago.png)](./docs/img/FlujoPago.png)

[Volver al inicio](#diagramasecuencia)

Instalación
-----------

[](#instalación)

El SDK se encuentra disponible para descargar desde [Github](https://github.com/payway-ar/sdk-php-ventaonline) o desde composer con el siguiente comando:

```

composer require decidir2/php-sdk
```

Una vez instalo el SDK dentro del proyecto, es necesario tener descomentada la extension=php\_curl.dll en el php.ini, ya que para la conexión al gateway se utiliza la clase curl del API de PHP.

[Volver al inicio](#inicio)

Versiones de PHP soportadas
---------------------------

[](#versiones-de-php-soportadas)

La versión implementada de la SDK, está testeada para las versiones PHP desde 5.3.

[Volver al inicio](#inicio)

Manual de Integración
---------------------

[](#manual-de-integración)

Se encuentra disponible la documentación **[Manual de Integración Payway](https://documentacion-ventasonline.payway.com.ar/docs/sdk-s/ddw69qltg92u5-alcance#manual-de-integraci%c3%b3n)** para su consulta online, en este se detalla el proceso de integración. En el mismo se explican los servicios y operaciones disponibles, con ejemplos de requerimientos y respuestas, aquí sólo se ejemplificará la forma de llamar a los distintos servicios utilizando la presente SDK.

Ambientes
---------

[](#ambientes)

El sdk PHP permite trabajar con los ambientes de Sandbox y Producción de Payway. El ambiente se debe definir al instanciar el SDK.

```

$ambient = "test";//valores posibles: "test" , "prod" o "qa"
$connector = new \Decidir\Connector($keys_data, $ambient);
```

[Volver al inicio](#inicio)

Uso
---

[](#uso)

### Inicializar la clase correspondiente al conector.

[](#inicializar-la-clase-correspondiente-al-conector)

El SDK-PHP permite trabajar con los ambientes de desarrollo y de producción de Payway. El ambiente se debe instanciar como se indica a continuación. Instanciación de la clase `Decidir\Connector`La misma recibe como parámetros la public key o private key provisto por Payway para el comercio y el ambiente en que se trabajara.

```
$keys_data = array('public_key' => 'e9cdb99fff374b5f91da4480c8dca741',
           'private_key' => '92b71cf711ca41f78362a7134f87ff65');

$ambient = "test";//valores posibles: "test" , "prod" o "qa"
$connector = new \Decidir\Connector($keys_data, $ambient);
```

*Nota:* La sdk incluye un ejemplo de prueba completo el cual se debe acceder desde el navegador, allí permitirá configurar las distintas opciones.

[Volver a inicio](#inicio)

Operatoria del Gateway
----------------------

[](#operatoria-del-gateway)

### Health Check

[](#health-check)

Este recurso permite conocer el estado actual de la API RESTful de Payway.

```
$connector = new \Decidir\Connector($keys_data, $ambient);
$response = $connector->healthcheck()->getStatus();
$response->getName();
$response->getVersion();
$response->getBuildTime();
```

[Volver a inicio](#Inicio)

### Token

[](#token)

Este recurso permite obtener token de pago.

```
$connector = new \Decidir\Connector($keys_data, $ambient, "", "", "SDK-PHP");
$data = array(
      "card_number" => "4509790112684851",
      "card_expiration_month" => "12",
      "card_expiration_year" => "30",
      "card_holder_name" => "Barb",
      "card_holder_birthday" => "24071990",
      "card_holder_door_number" => 505,
      "security_code" => "123",
      "card_holder_identification" => array(
          "type" => "dni",
          "number" => "29123456"));

$response = $connector->token()->token($data);
$respuesta = new TokenResponse();

$respuesta->setId($response->get('id',null));
$respuesta->setStatus($response->get('status',null));
$respuesta->setCardNumberLength($response->get('card_number_length', null));
$respuesta->setDateCreated($response->get('date_created', null));
$respuesta->setBin($response->get('bin', null));
$respuesta->setLastFourDigits($response->get('last_four_digits', null));
$respuesta->setSecurityCodeLength($response->get('security_code_length', null));
$respuesta->setExpirationMonth($response->get('expiration_month', null));
$respuesta->setExpirationYear($response->get('expiration_year', null));
$respuesta->setDateDue($response->get('date_due', null));
$cardHolder = $response->get('cardholder', null);
$respuesta->setType($cardHolder['identification']['type']);
$respuesta->setNumber($cardHolder['identification']['number']);
$respuesta->setName($cardHolder['name']);
```

[Volver a inicio](#Inicio)

### TokenCS

[](#tokencs)

Este recurso permite obtener token de pago operando con Cybersource.

```
$connector = new \Decidir\Connector($keys_data, $ambient, "", "", "SDK-PHP");
$data = array(
      "card_number" => "4509790112684851",
      "card_expiration_month" => "12",
      "card_expiration_year" => "30",
      "card_holder_name" => "Barb",
      "card_holder_birthday" => "24071990",
      "card_holder_door_number" => 505,
      "security_code" => "123",
      "card_holder_identification" => array(
        "type" => "dni",
        "number" => "29123456"
      ),
      "fraud_detection"=> array(
          "device_unique_identifier"=> "12345"
      ),
      "ip_address"=> "192.168.100.1");

$response = $connector->token()->tokenCs($data);
$respuesta = new TokenResponse();

$respuesta->setId($response->get('id',null));
$respuesta->setStatus($response->get('status',null));
$respuesta->setCardNumberLength($response->get('card_number_length', null));
$respuesta->setDateCreated($response->get('date_created', null));
$respuesta->setBin($response->get('bin', null));
$respuesta->setLastFourDigits($response->get('last_four_digits', null));
$respuesta->setSecurityCodeLength($response->get('security_code_length', null));
$respuesta->setExpirationMonth($response->get('expiration_month', null));
$respuesta->setExpirationYear($response->get('expiration_year', null));
$respuesta->setDateDue($response->get('date_due', null));
$cardHolder = $response->get('cardholder', null);
$respuesta->setType($cardHolder['identification']['type']);
$respuesta->setNumber($cardHolder['identification']['number']);
$respuesta->setName($cardHolder['name']);
```

### Ejecución del Pago

[](#ejecución-del-pago)

Una vez generado y almacenado el token de pago, se deberá ejecutar la solicitud de pago más el token previamente generado. Además del token de pago y los parámetros propios de la transacción, el comercio deberá identificar la compra con el site\_transaction\_id.

*Aclaracion* : amount es un campo Long, los ultimos dos numeros se considerarán como decimales.

CampoDescripcionObligRestriccionesEjemploidid usuario que esta haciendo uso del sitio, pertenece al campo customer (ver ejemplo)Condicional, si no se enviar el Merchant este campo no se enviaSin validacionuser\_id: "marcos",emailemail del usuario que esta haciendo uso del sitio (se utiliza para tokenizacion), pertenece al campo customer(ver ejemplo)CondicionalSin validacionemail: "",ip\_addressIP del comercioCondicionalSin validacionip\_address: "192.168.100.2",site\_transaction\_idnro de operacionSIAlfanumerico de hasta 39 caracteres"prueba 1"site\_idSite relacionado a otro site, este mismo no requiere del uso de la apikey ya que para el pago se utiliza la apikey del site al que se encuentra asociado.NOSe debe encontrar configurado en la tabla site\_merchant como merchant\_id del site\_id28464385tokentoken generado en el primer pasoSIAlfanumerico de hasta 36 caracteres. No se podra ingresar un token utilizado para un pago generado anteriormente.""payment\_method\_idid del medio de pagoSIEl id debe coincidir con el medio de pago de tarjeta ingresada.Se valida que sean los primeros 6 digitos de la tarjeta ingresada al generar el token.payment\_method\_id: 1,binprimeros 6 numeros de la tarjetaSIImporte minimo = 1 ($0.01)bin: "456578"amountimporte del pagoSIImporte Maximo = 922337203685 ($9223372036.85)amount=20000currencymonedaSIValor permitido: ARS, USDARSinstallmentscuotas del pagoSI"Valor minimo = 1 Valor maximo = 99"installments: 1payment\_typeforma de pagoSIValor permitido: single / distributed"single"establishment\_namenombre de comercioCondicionalAlfanumerico de hasta 25 caracteres"Nombre establecimiento"#### Ejemplo

[](#ejemplo)

```
$connector = new \Decidir\Connector($keys_data, $ambient);

$data = array(
      "site_transaction_id" => "12042017_20",
      "token" => "be211413-757b-487e-bb0c-283d21c0fb6f",
      "customer" => array(
                        "id" => "customer",
                        "email" => "user@mail.com",
                        "ip_address" => "192.168.100.2"
                        ),
      "payment_method_id" => 1,
      "bin" => "450799",
      "amount" => 500,
      "currency" => "ARS",
      "installments" => 1,
      "description" => "",
      "establishment_name" => "Nombre establecimiento",
      "payment_type" => "single",
      "sub_payments" => array()
    );

try {
	$response = $connector->payment()->ExecutePayment($data);
	$response->getId();
	$response->getToken();
	$response->getUser_id();
	$response->getPayment_method_id();
	$response->getBin();
	$response->getAmount();
	$response->getCurrency();
	$response->getInstallments();
	$response->getPayment_type();
	$response->getDate_due();
	$response->getSub_payments();
	$response->getStatus();
	$response->getStatus_details()->ticket
	$response->getStatus_details()->card_authorization_code
	$response->getStatus_details()->address_validation_code
	$response->getStatus_details()->error
	$response->getDate();
	$response->getEstablishment_name();
	$response->getFraud_detection();
	$response->getAggregate_data();
	$response->getSite_id();
} catch( \Exception $e ) {
	var_dump($e->getData());
}
```

[Volver a inicio](#Inicio)

#### Transacción PCI

[](#transacción-pci)

A continuación se muestra un ejemplo con una transacción pci sin [Cybersource](#cybersource).

*Aclaracion* : amount es un campo long el cual representa el valor en centavos.

#### Ejemplo

[](#ejemplo-1)

```
$connector = new \Decidir\Connector($keys_data, $ambient);

$data = array(
      "site_transaction_id" => "12042017_20",
      "token" => "be211413-757b-487e-bb0c-283d21c0fb6f",
      "customer" => array(
                        "id" => "customer",
                        "email" => "user@mail.com",
                        "ip_address" => "192.168.100.2"
                        ),
      "payment_method_id" => 1,
      "bin" => "450799",
      "amount" => 500,
      "currency" => "ARS",
      "installments" => 1,
      "description" => "",
      "establishment_name" => "Nombre establecimiento",
      "payment_type" => "single",
      "sub_payments" => array(),
      "card_data" => array(
	"card_number" => "4509790112684851",
        "card_expiration_month" => "12",
        "card_expiration_year" => "30",
        "card_holder_name" => "Barb",
        "security_code" => "123",
        "card_holder_identification" => array(
	        "type" => "dni",
	        "number" => "29123456"
        ),
      ),
      "aggregate_data" => array(
	"name" => ""
      ),
    );

try {
	$response = $connector->payment()->ExecutePayment($data);
	$response->getId();
	$response->getToken();
	$response->getUser_id();
	$response->getPayment_method_id();
	$response->getBin();
	$response->getAmount();
	$response->getCurrency();
	$response->getInstallments();
	$response->getPayment_type();
	$response->getDate_due();
	$response->getSub_payments();
	$response->getStatus();
	$response->getStatus_details()->ticket
	$response->getStatus_details()->card_authorization_code
	$response->getStatus_details()->address_validation_code
	$response->getStatus_details()->error
	$response->getDate();
	$response->getEstablishment_name();
	$response->getFraud_detection();
	$response->getAggregate_data();
	$response->getSite_id();
} catch( \Exception $e ) {
	var_dump($e->getData());
}
```

### Ejecución del pago PCI Tokenizado

[](#ejecución-del-pago-pci-tokenizado)

```
$connector = new \Decidir\Connector($keys_data, $ambient, "", "", "SDK-PHP");

$data = array(
    "site_transaction_id" => "tokeniz" . rand(),
    "establishment_name" => "Store",
    "spv" => null,
    "bin" => "4507990",
    "payment_method_id" => 1,
    "amount" => 50000,
    "currency" => "ARS",
    "installments" => 1,
    "description" => "PCI pago tokenizado",
    "payment_type" => "single",
    "sub_payments" => [],
    "fraud_detection" => array(
        "send_to_cs" => false
    ),
    "card_data" => array(
        "card_holder_name" => "Luis Perez",
        "last_four_digits" => "1112",
        "card_holder_birthday" => "01012000",
        "card_holder_door_number" => 666,
        "card_holder_identification" => array(
            "type" => "dni",
            "number" => "41371431"
        ),
        "security_code" => "666",
        "card_expiration_month" => "03",
        "card_expiration_year" => "30"
    ),
    "cardholder_auth_required" => false,
    "is_tokenized_payment" => true,
    "token_card_data" => array(
        "token" => "4507990000004905",
        "eci" => "05",
        "cryptogram" => "cryptogram_123467890"
    ),
    "aggregate_data" => array(
        "indicator" => "1",
        "identification_number" => "30598910045",
        "bill_to_pay" => "Decidir_Test",
        "bill_to_refund" => "Decidir_Test",
        "merchant_name" => "EMPRESA TEST DECIDIR",
        "street" => "Sub Cm Pedro Arabere",
        "number" => "123456",
        "postal_code" => "C1437FBE",
        "category" => "50044",
        "channel" => "005",
        "geographic_code" => "C1437",
        "product" => "productoXXproductoXX",
        "city" => "Ciudad de Buenos Aires",
        "merchant_id" => "decidir_Agregador",
        "province" => "B",
        "country" => "ARG",
        "merchant_email" => "qa@decidir.com",
        "merchant_phone" => "+541135211111",
        "origin_country" => "032",
        "merchant_url" => "hola@gmail.com",
        "aggregator_name" => "payfact",
        "gateway_id" => "sarasaPayway",
		"seller_id": "seller_123"
    )
);

try {
	$response = $connector->payment()->ExecutePayment($data);
} catch( \Exception $e ) {
	var_dump($e->getData());
}
```

### Ejecución de pago de comercio agregador

[](#ejecución-de-pago-de-comercio-agregador)

El objeto `aggregate_data` se utiliza para informar los datos del sub-comercio dentro de una operación realizada por un **comercio agregador**.

CampoTipoObligatorioDescripciónObservacionesproductstringCondicionalProducto asociado a la transacción—origin\_countrystringCondicionalPaís de origen del comercio (código numérico)Ej: `"032"`merchant\_idstringCondicionalIdentificador del comercio—merchant\_urlstringCondicionalURL del comercio—aggregator\_namestringCondicionalNombre del agregadorEj: `"payfact"`gateway\_idstringCondicionalIdentificador del gateway asociadoEj: `"payway"`indicatorstringCondicionalIndicador del tipo de operación—identification\_numberstringCondicionalNúmero de identificación fiscal del comercioCuit / RUTbill\_to\_paystringCondicionalReferencia de la factura a pagar—bill\_to\_refundstringCondicionalReferencia de la factura a devolver—merchant\_namestringCondicionalNombre comercial del sub-comercio—streetstringCondicionalCalle del comercio—numberstringCondicionalNúmero de dirección—postal\_codestringCondicionalCódigo postal—categorystringCondicionalCategoría del comercioCódigo MCCchannelstringCondicionalCanal de ventaEj: `"005"` ecommercegeographic\_codestringCondicionalCódigo geográfico—citystringCondicionalCiudad—provincestringCondicionalProvincia—countrystringCondicionalPaísEj: `"Argentina"`merchant\_emailstringCondicionalEmail del comercio—merchant\_phonestringCondicionalTeléfono del comercio—seller\_idstring**Solo Amex****Identificador del vendedor asignado por American Express****Se envía únicamente cuando `payment_method_id` es Amex**```
$connector = new \Decidir\Connector($keys_data, $ambient, "", "", "SDK-PHP");

$data = array(
   	"site_transaction_id" => "12042017_20",
	"token" => "be211413-757b-487e-bb0c-283d21c0fb6f",
    "payment_method_id" => 1,
    "bin" => "450799",
    "amount" => 396010,
    "currency" => "ARS",
    "installments" => 12,
    "payment_type" => "single",
    "establishment_name" => "Test Conexiones",
    "sub_payments" => array(),
    "aggregate_data" => array(
        "indicator" => "1",
        "identification_number" => "30598910045",
        "bill_to_pay" => "Decidir_Test",
        "bill_to_refund" => "Decidir_Test",
        "merchant_name" => "EMPRESA TEST DECIDIR",
        "street" => "Sub Cm Pedro Arabere",
        "number" => "123456",
        "postal_code" => "C1437FBE",
        "category" => "50044",
        "channel" => "005",
        "geographic_code" => "C1437",
        "product" => "productoXXproductoXX",
        "city" => "Ciudad de Buenos Aires",
        "merchant_id" => "decidir_Agregador",
        "province" => "B",
        "country" => "ARG",
        "merchant_email" => "qa@decidir.com",
        "merchant_phone" => "+541135211111",
        "origin_country" => "032",
        "merchant_url" => "hola@gmail.com",
        "aggregator_name" => "payfact",
        "gateway_id" => "sarasaPayway",
		"seller_id": "seller_123"
    )
);

try {
	$response = $connector->payment()->ExecutePayment($data);
} catch( \Exception $e ) {
	var_dump($e->getData());
}
```

### Ejecución de pago simple con 3DS

[](#ejecución-de-pago-simple-con-3ds)

En este caso se necesita agregar el flag "cardholder\_auth\_required" en true y se le debe pasar el objeto "auth\_3ds\_data".

```
$connector = new \Decidir\Connector($keys_data, $ambient, "", "", "SDK-PHP");

$data = array(
    "site_transaction_id" => "{{site_transaction_id}}",
    "token" => "{{token}}",
    "payment_method_id" => 1,
    "bin" => 450799,
    "amount" => 100,
    "currency" => "ARS",
    "installments" => 1,
    "payment_type" => "single",
    "sub_payments" => [],
    "cardholder_auth_required" => true,
    "auth_3ds_data" => array(
        "device_type" => "BROWSER",
        "accept_header" => "application/json",
        "user_agent" => "Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:47.0)Gecko/20100101",
        "ip" => "1.12.123.255",
        "java_enabled" => true,
        "language" => "es",
        "color_depth" => "32",
        "screen_height" => 28,
        "screen_width" => 4,
        "time_zone_offset" => 570
    )
);

try {
	$response = $connector->payment()->ExecutePayment($data);
} catch( \Exception $e ) {
	var_dump($e->getData());
}
```

### Ejecución de instruction 3DS

[](#ejecución-de-instruction-3ds)

Se agrega el objeto con los atributos id e instruction\_value.

```
$data = array(
    "id" => "{{id}}",
    "instruction_value" => "{{instruction_value}}",
);
$connector = new \Decidir\Connector($keys_data, $ambient, "", "", "SDK-PHP");

try{
	$response = $connector->threedsChallenge()->threedsChallenge($data);
} catch( \Exception $e ) {
	var_dump($e->getData());
}
```

### Captura del Pago

[](#captura-del-pago)

Para el caso de la operatoria de transacción en dos pasos, la captura o confirmación del pago puede realizarse de la siguiente manera.

*Aclaracion* : amount es un campo Long, los ultimos dos numeros se considerarán como decimales.

CampoDescripcionObligRestriccionesEjemploamountimporte del pagoSIImporte Maximo = 922337203685 ($9223372036.85)amount=20000#### Ejemplo

[](#ejemplo-2)

```
$connector = new \Decidir\Connector($keys_data, $ambient);

$data = array(
      "amount" => 500,
    );

try {
	$response = $connector->payment()->CapturePayment($data);
} catch( \Exception $e ) {
	var_dump($e->getData());
}
```

[Volver a inicio](#Inicio)

Ejecución de pago offline
-------------------------

[](#ejecución-de-pago-offline)

Una vez generado y almacenado el token de Pago Offline, se deberá ejecutar la solicitud de pago utilizando el token previamente generado. Además del token de pago y los parámetros propios de la transacción, el comercio deberá identificar la compra con el site\_transaction\_id.

*Aclaracion* : amount es un campo Long, los ultimos dos numeros se considerarán como decimales.

### Pago Facil

[](#pago-facil)

[![imagen de sdks](./docs/img/me-rapipago-pagofacil.jpg)](./docs/img/me-rapipago-pagofacil.jpg)

CampoDescripcionObligRestriccionesEjemplosite\_transaction\_idIdentificador único para la operaciónSI8 dígitossite\_transaction\_id: "170518\_35"tokenToken generado en el primer pasoSI36 dígitos,variabletoken: "03508514-1578-4140-ba02-6bdd65e2af95"payment\_method\_idid del tipo de metodo de Pago OfflineSIDos dígitospayment\_method\_id: "26"amountMonto de la operación. 8 números enterosSI8 dígitos,variableamount: "1100"currencySon los días que existen entre el 1er y 2do vencimientoSI3 letrascurrency: "ARS"payment\_typeTipo de pagoSILetraspayment\_type: "single"emailemail del usuario que esta haciendo uso del sitioCondicionalSin validacionemail: "",invoice\_expirationFecha en que vence el cupónSIFormato AAMMDDinvoice\_expiration: "191123"cod\_p3Son los dias que existen entre el 1º y 2º vencimiento de la factura.SI2,fijo ("00" si la factura tiene no tiene 2° vencimientos)invoice\_expiration: "191123"cod\_p4Días después del 1º vencimiento y hasta que el cliente pueda abonarSI3,fijocod\_p4: "123"clientCodigo ClienteSI8,fijoclient: "12345678"surchargeRecargo por vencimiento del plazoSI7,variable (5 digitos enteros y 2 decimales)surcharge: "10.01"payment\_modeTipo de metodo de pagoSIStrin "offline"payment\_mode: "offline"#### Ejemplo

[](#ejemplo-3)

```
$data = array(
  "site_transaction_id" => "230518_41",
  "token" => "92a95793-3321-447c-8795-8aeb8a8ac067",
  "payment_method_id" => 25,
  "amount" => 1000,
  "currency" => "ARS",
  "payment_type" => "single",
  "email" => "user@mail.com",
  "invoice_expiration" => "191123",
  "cod_p3" => "12",
  "cod_p4" => "134",
  "client" => "12345678",
  "surcharge" => 10.01,
  "payment_mode" => "offline"
);

$response = $connector->payment()->ExecutePaymentOffline($data);
```

[Volver a inicio](#Inicio)

### Rapipago

[](#rapipago)

[![imagen de sdks](./docs/img/me-rapipago-pagofacil.jpg)](./docs/img/me-rapipago-pagofacil.jpg)

CampoDescripcionObligRestriccionesEjemplosite\_transaction\_idIdentificador único para la operaciónSI8 dígitossite\_transaction\_id: "170518\_35"tokenToken generado en el primer pasoSI36 dígitos,variabletoken: "03508514-1578-4140-ba02-6bdd65e2af95"payment\_method\_idid del tipo de metodo de Pago OfflineSIDos dígitospayment\_method\_id: "26"amountMonto de la operación. 8 números enterosSI8 dígitos,variableamount: "1100"currencySon los días que existen entre el 1er y 2do vencimientoSI3 letrascurrency: "ARS"payment\_typeTipo de pagoSILetraspayment\_type: "single"emailemail del usuario que esta haciendo uso del sitioCondicionalSin validacionemail: "",invoice\_expirationFecha en que vence el cupónSIFormato AAMMDDinvoice\_expiration: "191123"cod\_p3Son los dias que existen entre el 1º y 2º vencimiento de la factura.SI2,fijo ("00" si la factura tiene no tiene 2° vencimientos)invoice\_expiration: "191123"cod\_p4Días después del 1º vencimiento y hasta que el cliente pueda abonarSI3,fijocod\_p4: "123"clientCodigo ClienteSI8,fijoclient: "12345678"surchargeRecargo por vencimiento del plazoSI7,variable (5 digitos enteros y 2 decimales)surcharge: "10.01"payment\_modeTipo de metodo de pagoSIStrin "offline"payment\_mode: "offline"#### Ejemplo

[](#ejemplo-4)

```
$data = array(
  "site_transaction_id" => "230518_38",
  "token" => "8e190c82-6a63-467e-8a09-9e8fa2ab6215",
  "payment_method_id" => 26,
  "amount" => 1000,
  "currency" => "ARS",
  "payment_type" => "single",
  "email" => "user@mail.com",
  "invoice_expiration" => "191123",
  "cod_p3" => "12",
  "cod_p4" => "134",
  "client" => "12345678",
  "surcharge" => 10.01,
  "payment_mode" => "offline"
);

$response = $connector->payment()->ExecutePaymentOffline($data);
```

### Pago mis Cuentas

[](#pago-mis-cuentas)

[![imagen de sdks](./docs/img/me-pmc.jpg)](./docs/img/me-pmc.jpg)

CampoDescripcionObligRestriccionesEjemplosite\_transaction\_idIdentificador único para la operaciónSI8 dígitossite\_transaction\_id: "170518\_35"tokenToken generado en el primer pasoSI36 dígitos,variabletoken: "03508514-1578-4140-ba02-6bdd65e2af95"payment\_method\_idid del tipo de metodo de Pago OfflineSIDos dígitospayment\_method\_id: "26"amountMonto de la operación. 8 números enterosSI8 dígitos,variableamount: "1100"currencySon los días que existen entre el 1er y 2do vencimientoSI3 letrascurrency: "ARS"payment\_typeTipo de pagoSILetraspayment\_type: "single"emailemail del usuario que esta haciendo uso del sitioCondicionalSin validacionemail: "",invoice\_expirationFecha en que vence el cupónSIFormato AAMMDDinvoice\_expiration: "191123"bank\_idId de banco de la operacionSIString "offline"bank\_id: 1#### Ejemplo

[](#ejemplo-5)

```
$data = array(
  "site_transaction_id" => "220518_39",
  "token" => "9ae1d130-8c89-4c3b-a267-0e97b88fedd0",
  "payment_method_id" => 41,
  "amount" => 1000,
  "currency" => "ARS",
  "payment_type" => "single",
  "email" => "user@mail.com",
  "bank_id" => 1,
  "sub_payments" => 100,
  "invoice_expiration" => "191123"
);

$response = $connector->payment()->ExecutePaymentOffline($data);
```

[Volver a inicio](#Inicio)

### Cobro Express

[](#cobro-express)

CampoDescripcionObligRestriccionesEjemplosite\_transaction\_idIdentificador único para la operaciónSI8 dígitossite\_transaction\_id: "170518\_35"tokenToken generado en el primer pasoSI36 dígitos,variabletoken: "03508514-1578-4140-ba02-6bdd65e2af95"payment\_method\_idid del tipo de metodo de Pago OfflineSIDos dígitospayment\_method\_id: "26"amountMonto de la operación. 8 números enterosSI8 dígitos,variableamount: "1100"currencySon los días que existen entre el 1er y 2do vencimientoSI3 letrascurrency: "ARS"payment\_typeTipo de pagoSILetraspayment\_type: "single"emailemail del usuario que esta haciendo uso del sitioCondicionalSin validacionemail: "",invoice\_expirationFecha en que vence el cupónSIFormato AAMMDDinvoice\_expiration: "191123"second\_invoice\_expirationSegunda fecha de vencimiento del cupónSIFormato AAMMDDsecond\_invoice\_expiration: "191123"cod\_p3Son los dias que existen entre el 1º y 2º vencimiento de la factura.SI2,fijo ("00" si la factura tiene no tiene 2° vencimientos)invoice\_expiration: "191123"clientCodigo ClienteSI8,fijoclient: "12345678"surchargeRecargo por vencimiento del plazoSI7,variable (5 digitos enteros y 2 decimales)surcharge: "10.01"payment\_modeTipo de metodo de pagoSIStrin "offline"payment\_mode: "offline"#### Ejemplo

[](#ejemplo-6)

```
$data = array(
  "site_transaction_id" => "160518_42",
  "token" => "3df26771-67ab-4a8e-91e2-f1e0b0c559f7",
  "payment_method_id" => 51,
  "amount" => 1000,
  "currency" => "ARS",
  "payment_type" => "single",
  "email" => "user@mail.com",
  "invoice_expiration" => "191123",
  "second_invoice_expiration" => "191123",
  "cod_p3" => "1",
  "cod_p4" => "134",
  "client" => "12345678",
  "surcharge" => 10.01,
  "payment_mode" => "offline"
);

$response = $connector->payment()->ExecutePaymentOffline($data);
```

[Volver a inicio](#Inicio)

### Cobro Express

[](#cobro-express-1)

CampoDescripcionObligRestriccionesEjemplosite\_transaction\_idIdentificador único para la operaciónSI8 dígitossite\_transaction\_id: "170518\_35"tokenToken generado en el primer pasoSI36 dígitos,variabletoken: "03508514-1578-4140-ba02-6bdd65e2af95"payment\_method\_idid del tipo de metodo de Pago OfflineSIDos dígitospayment\_method\_id: "26"amountMonto de la operación. 8 números enterosSI8 dígitos,variableamount: "1100"currencySon los días que existen entre el 1er y 2do vencimientoSI3 letrascurrency: "ARS"payment\_typeTipo de pagoSILetraspayment\_type: "single"emailemail del usuario que esta haciendo uso del sitioCondicionalSin validacionemail: "",invoice\_expirationFecha en que vence el cupónSIFormato AAMMDDinvoice\_expiration: "191123"second\_invoice\_expirationSegunda fecha de vencimiento del cupónSIFormato AAMMDDsecond\_invoice\_expiration: "191123"cod\_p3Son los dias que existen entre el 1º y 2º vencimiento de la factura.SI2,fijo ("00" si la factura tiene no tiene 2° vencimientos)invoice\_expiration: "191123"cod\_p4Días después del 1º vencimiento y hasta que el cliente pueda abonarSI3,fijocod\_p4: "123"clientCodigo ClienteSI8,fijoclient: "12345678"surchargeRecargo por vencimiento del plazoSI7,variable (5 digitos enteros y 2 decimales)surcharge: "10.01"payment\_modeTipo de metodo de pagoSIStrin "offline"payment\_mode: "offline"#### Ejemplo

[](#ejemplo-7)

```
$data = array(
  "site_transaction_id" => "160518_42",
  "token" => "3df26771-67ab-4a8e-91e2-f1e0b0c559f7",
  "payment_method_id" => 51,
  "amount" => 1000,
  "currency" => "ARS",
  "payment_type" => "single",
  "email" => "user@mail.com",
  "invoice_expiration" => "191123",
  "second_invoice_expiration" => "191123",
  "cod_p3" => "1",
  "cod_p4" => "134",
  "client" => "12345678",
  "surcharge" => 10.01,
  "payment_mode" => "offline"
);

$response = $connector->payment()->ExecutePaymentOffline($data);
```

[Volver a inicio](#Inicio)

### Formulario de Pago

[](#formulario-de-pago)

Este servicio permite integrar un formulario de pago en el comercio, invocando el método GenerateLink($data), el cual devuelve un enlace personalizado para el formulario de pago del comercio, listo para ser utilizado y completar el flujo de pago.

### CONSIDERACIONES:

[](#consideraciones)

> ⚠️ **IMPORTANTE – `template_id` y uso de Cybersource**
>
> - `template_id = 1` → Checkout estándar **sin Cybersource** (transacción sin control de fraude Cybersource).
> - `template_id = 2` → Checkout **con Cybersource habilitado** (misma operatoria, pero con evaluación antifraude).
>
> Asegúrate de seleccionar el `template_id` correcto según el flujo configurado para tu comercio. El campo fraud\_detection solo se envía en caso de operar con el template\_id = 2, estos aplican **exclusivamente para comercios del rubro RETAIL**.

CampoDescripcionObligRestriccionesEjemplositeMerchantSINumérico de 8 digitosid: "12365436"template\_idIdentificador de la plantilla del formulario de pagoSINumérico1total\_priceMonto de la compraSINumérico (centavos)1200.00currencyTipo de monedaNOLetras"ARS"payment\_method\_idId del medio de pagoSINumérico1payment\_descriptionDescripción del pagoNOAlfanumérico"TEST"installmentsCantidad de cuotas posiblesSIArray de número\[3\]origin\_platformPlataforma de origen desde la cual se realiza la operaciónSIAlfanumérico"SDK-PHP"success\_urlUrl a donde se redireccionará al finalizar (feedback)SIURLcancel\_urlUrl donde se redireccionará si el cliente cancelaSIURLredirect\_urlUrl para enviar datos de la operación una vez finalizada (alternativa)CondURLfraud\_detection.send\_to\_csIndica si se envía la información a CybersourceSIBooleanotruefraud\_detection.channelCanal de ventaSIString"Web"fraud\_detection.device\_unique\_idIdentificador único del dispositivoSIString"1234-1234"fraud\_detection.bill\_to.cityCiudad de facturaciónSIString (50). Debe comenzar con letra"Buenos Aires"fraud\_detection.bill\_to.countryPaís de facturación (código ISO)SIString (2)"AR"fraud\_detection.bill\_to.customer\_idIdentificador único del usuario en el portal (no email)SIString (50)"leilaid"fraud\_detection.bill\_to.emailEmail del compradorSIString (100)""fraud\_detection.bill\_to.first\_nameNombre del titularSIString (60). Sin caracteres especiales"leila"fraud\_detection.bill\_to.last\_nameApellido del titularSIString (60). Sin caracteres especiales"sosa"fraud\_detection.bill\_to.phone\_numberTeléfono del compradorSIString (15)"1548866329"fraud\_detection.bill\_to.postal\_codeCódigo postal de facturaciónSIString (10)"1427"fraud\_detection.bill\_to.stateProvincia/estado (valida US si country = US)SIString (2)"BA"fraud\_detection.bill\_to.street1Calle y número (facturación)SIString (60)"LAVALLE 4041"fraud\_detection.bill\_to.street2Complemento de dirección (barrio)NOString (60)"Barrio XYZ"fraud\_detection.ship\_to.cityCiudad de envíoSIString (50). Debe comenzar con letra"Buenos Aires"fraud\_detection.ship\_to.countryPaís de envío (código ISO)SIString (2)"AR"fraud\_detection.ship\_to.emailEmail del destinatarioSIString (100)""fraud\_detection.ship\_to.first\_nameNombre del destinatarioSIString (60). Sin caracteres especiales"leila"fraud\_detection.ship\_to.last\_nameApellido del destinatarioSIString (60). Sin caracteres especiales"sosa"fraud\_detection.ship\_to.phone\_numberTeléfono de envíoSIString (15)"1549066329"fraud\_detection.ship\_to.postal\_codeCódigo postal de envíoSIString (10)"1427"fraud\_detection.ship\_to.stateProvincia/estado de envíoSIString (2)"BA"fraud\_detection.ship\_to.street1Calle y número (envío). Si no es envío, replicar facturaciónSIString (60)"LAVALLE 4041"fraud\_detection.ship\_to.street2Complemento de dirección envío (barrio)NOString (60)"Barrio XYZ"fraud\_detection.purchase\_totals.currencyMoneda de la transacciónSIString (5)"ARS"fraud\_detection.purchase\_totals.grandTotalAmountImporte total de la compra (centavos)SIInteger (12)1200fraud\_detection.customer\_in\_site.days\_in\_siteDías desde el registro del comprador en el portalNOString (255)"243"fraud\_detection.customer\_in\_site.is\_guestCliente como invitado?NOBooleano / Stringfalsefraud\_detection.customer\_in\_site.passwordHash del password del usuario registradoNOString (255)"abracadabra"fraud\_detection.customer\_in\_site.num\_of\_transactionsHistórico de compras (cantidad transacciones)NOString (255)"1"fraud\_detection.customer\_in\_site.cellphone\_numberTeléfono móvil adicional del compradorNOString (255)"12121"fraud\_detection.customer\_in\_site.streetDomicilio del clienteNOString (255)"Av. Corrientes 1234"fraud\_detection.days\_to\_deliveryNúmero de días para entrega (Retail MDD12)NOString (255)"55"fraud\_detection.dispatch\_methodMétodo de despacho (Retail MDD13)NOString (255). Catálogo sugerido"storepickup"fraud\_detection.tax\_voucher\_requiredCliente requiere comprobante fiscal (Retail MDD14)NOBooleano / Stringtruefraud\_detection.customer\_loyality\_numberNúmero de cliente frecuente (Retail MDD15)NOString (255)"123232"fraud\_detection.coupon\_codeCódigo de cupón/promoción (Retail MDD16)NOString (255)"cupon22"fraud\_detection.itemsLista de items (array). Cada item contiene campos listados abajoCondArrayver items.\*fraud\_detection.items\[\].codeCódigo de productoCondString (255)"popblacksabbat2016"fraud\_detection.items\[\].descriptionDescripción del productoCondString (255)"Popular Black Sabbath 2016"fraud\_detection.items\[\].nameNombre del producto en catálogoCondString (255)"popblacksabbat2016ss"fraud\_detection.items\[\].skuSKU del productoCondString (255)"asas"fraud\_detection.items\[\].quantityCantidad del itemCondInteger (10)1fraud\_detection.items\[\].total\_amountPrecio total del item (centavos)CondInteger (12)1200fraud\_detection.items\[\].unit\_pricePrecio unitario del producto (centavos)CondInteger (12)1200#### Ejemplo

[](#ejemplo-8)

```
//Para este servicio es necesario enviar el "public_key" y "private_key".
$keys_data = array(
  'public_key' => '5cde7e72ea1e430db94d4312346a3744',
  'private_key' => '12332asdjhasdjh223jkh4j1j2j2jh3jh2',
);

$connector = new \Decidir\Connector($keys_data, $ambient);

$data = array(
  "site" => "03101980",
  "template_id" => 1
  "total_price" => 1200.00,
  "currency" => "ARS",
  "payment_method_id" => 1,
  "installments" => [1],
  "origin_platform": "SDK-PHP",
  "payment_description": "Producto o Servicio",
  "public_apikey" => $keys_data['public_key'],
  "success_url" => "https://shop.swatch.com/es_ar/",
  "cancel_url" => "https://swatch.com/api/result",
  "redirect_url" => "",
  "fraud_detection" => array(
      "send_to_cs" => true,
      "channel" => "Web",
      "device_unique_id" => "1234-1234",

      "bill_to" => array(
          "city" => "Buenos Aires",
          "country" => "AR",
          "customer_id" => "leilaid",
          "email" => "email@dominio.com",
          "first_name" => "leila",
          "last_name" => "sosa",
          "phone_number" => "1548866329",
          "postal_code" => "1427",
          "state" => "BA",
          "street1" => "LAVALLE 4041",
          "street2" => "10 A"
      ),

      "ship_to" => array(
          "city" => "Buenos Aires",
          "country" => "AR",
          "email" => "email@dominio.com",
          "first_name" => "leila",
          "last_name" => "sosa",
          "phone_number" => "1549066329",
          "postal_code" => "1427",
          "state" => "BA",
          "street1" => "LAVALLE 4041",
          "street2" => "10 A"
      ),

      "purchase_totals" => array(
          "currency" => "ARS",
          "grandTotalAmount" => 1200
      ),

      "customer_in_site" => array(
          "days_in_site" => 243,
          "is_guest" => false,
          "password" => "abracadabra",
          "num_of_transactions" => 1,
          "cellphone_number" => "12121",
          "street" => "Av. Corrientes 1234"
      ),

      "days_to_delivery" => "55",
      "dispatch_method" => "storepickup",
      "tax_voucher_required" => true,
      "customer_loyality_number" => "123232",
      "coupon_code" => "cupon22",

      "items" => array(
          array(
              "code" => "popblacksabbat2016",
              "description" => "Popular Black Sabbath 2016",
              "name" => "popblacksabbat2016ss",
              "sku" => "asas",
              "quantity" => 1,
              "total_amount" => 1200,
              "unit_price" => 1200
          )
      )
  )
);

$response = $connector->payment()->GenerateLink($data);
```

#### Respuesta servicio Checkout

[](#respuesta-servicio-checkout)

```
$response = $connector->payment()->GenerateLink($data);
```

```
{
    "payment_link": "https://developers.decidir.com/web/checkout/1C1DAA54DE5D2244E385F3859685B82A"
}
```

#### Formulario renderizado

[](#formulario-renderizado)

Una vez generado el link de pago, el formulario se visualiza accediendo a la URL devuelta por el servicio:

Sandbox: [https://developers.decidir.com/web/checkout/{payment\_id}](https://developers.decidir.com/web/checkout/%7Bpayment_id%7D)

Producción: [https://live.decidir.com/web/checkout/{payment\_id}](https://live.decidir.com/web/checkout/%7Bpayment_id%7D)

[![Formulario de pago](docs/img/checkout-example.png)](docs/img/checkout-example.png)

[Volver a inicio](#Inicio)

### Listado de Pagos

[](#listado-de-pagos)

Mediante este recurso, se genera una solicitud de listado de pagos. Este recurso admite la posibilidad de agregar los filtros adicionales:

- (opcional) offset: desplazamiento en los resultados devueltos. Valor por defecto = 0.
- (opcional) pageSize: cantidad máxima de resultados retornados. Valor por defecto = 50.
- (opcional) siteOperationId: ID único de la transacción a nivel comercio (equivalente al site\_transaction\_id).
- (opcional) merchantId: ID Site del comercio.

```
$connector = new \Decidir\Connector($keys_data, $ambient);

$data = array("pageSize" => 5);
$response = $connector->payment()->PaymentList($data);
$response->getLimit();
$response->getOffset();
$response->getResults();
$response->getHas_more();
```

[Volver a inicio](#Inicio)

### Información de un Pago

[](#información-de-un-pago)

Mediante este recurso, se genera una solicitud de información de un pago previamente realizado, pasando como parámetro el id del pago.

```
$connector = new \Decidir\Connector($keys_data, $ambient);

$data = array();

$response = $connector->payment()->PaymentInfo($data, '574421');
$response->getId();
$response->getSiteTransaction_id();
$response->getToken();
$response->getUser_id();
$response->getPayment_method_id();
$response->getCard_brand();
$response->getBin();
$response->getAmount();
$response->getCurrency();
$response->getInstallments();
$response->getPayment_type();
$response->getSub_payments();
$response->getStatus();
$response->getStatus_details();
$response->getDate();
$response->getEstablishment_name();
$response->getFraud_detection();
$response->getAggregate_data();
$response->getSite_id();
```

#### Información adicional de tarjeta

[](#información-adicional-de-tarjeta)

Agregando la opcion "card\_data" se puede obtener información adicional de la tarjera utilizada para el pago.

```
$data = array();
$query = array("expand"=>"card_data");

$response = $connector->payment()->PaymentInfo($data, '873836', $query);
$response->getCard_data()
```

#### Respuesta

[](#respuesta)

```
Array (
	[card_number] => 450799XXXXXX4905
	[card_holder] => Array (
		[identification] => Array (
		[type] => dni
		[number] => 27859328
	)
	[name] => Tarjeta Visa
	)
)
```

[Volver a inicio](#Inicio)

### Anulación / Devolución Total de Pago

[](#anulación--devolución-total-de-pago)

Mediante este recurso, se genera una solicitud de anulación / devolución total de un pago puntual, pasando como parámetro el id del pago.

```
$data = array();
$response = $connector->payment()->Refund($data, '574671'); //574671 es el id de la operacion de compra
$response->getId();
$response->getAmount();
$response->getSub_payments();
$response->getStatus();
```

[Volver a inicio](#Inicio)

### Anulación de Devolución Total

[](#anulación-de-devolución-total)

Mediante este recurso, se genera una solicitud de anulación de devolución total de un pago puntual, pasando como parámetro el id del pago y el id de la devolución.

```
$data = array();
$response = $connector->payment()->deleteRefund($data, '574671', '164'); //574671 id de la operacion de compra, 164 id de la devolucion
$response->getResponse();
$response->getStatus();
```

[Volver a inicio](#Inicio)

### Devolución Parcial de un Pago

[](#devolución-parcial-de-un-pago)

Mediante este recurso, se genera una solicitud de devolución parcial de un pago puntual, pasando como parámetro el id del pago y el monto de la devolución.

CampoDescripcionObligRestriccionesEjemploamountimporte del pago a devolverNOAntes del cierre, si se completa el campo por un monto menor al de la compra se toma como devolucion parcial; si se ingresa el monto total o no se envia dicho campo se toma como anulacion.1000```
$data = array(
	"amount" => 100
	);
$response = $connector->payment()->partialRefund($data,'574673'); //574671 id de la operacion de compra
$response->getId();
$response->getAmount();
$response->getSub_payments();
$response->getStatus();
```

[Volver a inicio](#Inicio)

### Anulación de Devolución Parcial

[](#anulación-de-devolución-parcial)

Mediante este recurso, se genera una solicitud de anulación de devolución parcial de un pago puntual, pasando como parámetro el id del pago y el id de la devolución.

```
$data = array();
$response = $connector->payment()->deleteRefund($data, '574671', '164'); //574671 id de la operacion de compra, 164 id de la devolucion parcial
$response->getResponse());
$response->getStatus());
```

Tokenizacion de tarjetas de crédito
-----------------------------------

[](#tokenizacion-de-tarjetas-de-crédito)

Esta funcionalidad permite que luego de realizar una compra con una tarjeta, se genere un token alfanumerico unico en el backend de Decidir, esto permite que a la hora de comprar nuevamente con esta tarjeta solo requerira el token de la tarjeta y el codigo de seguridad. Como primer paso se debe realizar una un pago normal, el token generado estara en el campo "token" de la respuesta.

### Listado de tarjetas tokenizadas

[](#listado-de-tarjetas-tokenizadas)

Este metodo permite conocer el listado de tarjetas tokenizadas que posee un usuario determinado. Esto requerira el nombre de usuario (user\_id) al momento de llamar al metodo tokensList.

```
$data = array();
$response = $connector->token()->tokensList($data, 'prueba'); //prueba, es el usuario dueño de la tarjeta de credito
var_dump($response);
var_dump($response->getTokens());
```

[Volver a inicio](#listadotarjetastokenizadas)

### Ejecucion de pago tokenizado

[](#ejecucion-de-pago-tokenizado)

Una vez que se obtiene el token a partir de la tarjeta tokenizada, se deberá ejecutar la solicitud de pago. Además del token de pago y los parámetros propios de la transacción, el comercio deberá identificar la compra con el "site\_transaction\_id" y "user\_id".

```
$connector = new \Decidir\Connector($keys_data, $ambient);

$data = array(
      "site_transaction_id" => "12042017_20",
      "token" => "be211413-757b-487e-bb0c-283d21c0fb6f",
      "user_id" => "pepe",
      "payment_method_id" => 1,
      "bin" => "450799",
      "amount" => 1000,
      "currency" => "ARS",
      "installments" => 1,
      "description" => "",
      "payment_type" => "single",
      "sub_payments" => array()
    );

$response = $connector->payment()->ExecutePayment($data);
$response->getId();
$response->getToken();
$response->getUser_id();
$response->getPayment_method_id();
$response->getBin();
$response->getAmount();
$response->getCurrency();
$response->getInstallments();
$response->getPayment_type();
$response->getDate_due();
$response->getSub_payments();
$response->getStatus();
$response->getStatus_details();
$response->getDate();
$response->getEstablishment_name();
$response->getFraud_detection();
$response->getAggregate_data();
$response->getSite_id();
```

[Volver a inicio](#pagotokenizado)

### Eliminacion de tarjeta tokenizada

[](#eliminacion-de-tarjeta-tokenizada)

El servicio da la posibilidad de eliminar un token de tarjeta generada, esto se logra instanciando token y utilizando el metodo tokenDelete() y enviando la tarjeta tokenizada.

```
$data = array();
$response = $connector->token()->tokenDelete($data, 'af49025a-f1b7-4363-a1cb-1ed38c3d4d75');
```

[Volver a inicio](#eliminartarjetatokenizada)

### Integración con Cybersource

[](#integración-con-cybersource)

Para utilizar el Servicio de Control de Fraude Cybersource, en la ejecución del pago, deben enviarse datos adicionales sobre la operación de compra que se quiere realizar. Se han definido cinco verticales de negocio que requieren parámetros específicos, así como también parámetros comunes a todas las verticales.

#### ¡IMPORTANTE! El parámetro amount no debe contener ni puntos ni comas, ya que los últimos dos dígitos siempre serán utilizados para la parte decimal del importe. Esto aplica también para todos los campos que sean montos en la ejecución del pago con Cybersource: purchaseTotals.grandTotalAmount, item.totalAmount y item.unitPrice. Ejemplo: 1200 ARS ≈ AR$ 12,00

[](#importante-el-parámetro-amount-no-debe-contener-ni-puntos-ni-comas-ya-que-los-últimos-dos-dígitos-siempre-serán-utilizados-para-la-parte-decimal-del-importe-esto-aplica-también-para-todos-los-campos-que-sean-montos-en-la-ejecución-del-pago-con-cybersource-purchasetotalsgrandtotalamount-itemtotalamount-y-itemunitprice-ejemplo-1200-ars--ar-1200)

[Volver al inicio](#cybersource)

#### Retail

[](#retail)

Los siguientes parámetros se deben enviar específicamente para la vertical Retail. Además se deben enviar datos específicos de cada producto involucrado en la transacción. [Documentación - Retail](https://documentacion-ventasonline.payway.com.ar/docs/gateway/szb63u2kn58e5-cybersourse-retail)

Descripcion (Data set)API FieldsRequired/OptionalData TypeOrigen del datoCampo referente en ApiRestComentariosfraud\_detectionsend\_to\_cs(Boolean)RequiredBooleanMDD40 - Fraud Update"send\_to\_cs": true/falsefraud\_detectionChannel(String)RequiredStringMDD6 - Sales Channel"channel": "Web"fraud\_detectiondevice\_unique\_id(String)RequiredStringUnique identifier for the device"device\_unique\_id": "1234-1234"billTocity(string)RequiredString (50)Payments"city": "Buenos Aires","Ciudad / Debe comenzar con una letrabillTocountry(string)RequiredString (2)Payments"country": "AR","[Código ISO](http://apps.cybersource.com/library/documentation/sbc/quickref/countries_alpha_list.pdf)billTocustomerID(string)RequiredString (50)Payments"customer\_id": "leilaid","Identificador del usuario unico logueado al portal (No puede ser una direccion de email)billToemail(string)RequiredString (100)Payments"email": "","correo electronico del compradorbillTofirstName(string)RequiredString (60)Payments"first\_name": "leila","Nombre del tarjeta habiente / Sin caracteres especiales como acentos invertidos, sólo letras, números y espaciosbillTolastName(string)RequiredString (60)Payments"last\_name": "leila","Apellido del tarjetahabiente / Sin caracteres especiales como acentos invertidos, sólo letras, números y espaciosbillTophoneNumber(string)RequiredString (15)Payments"phone\_number": "1548866329","Número de telefonobillTopostalCode(string)RequiredString (10)Payments"postal\_code": "1427","Codigo PostalbillTostate(string)RequiredString (2)Payments"state": "BA","Estado (Si el country = US, el campo se valida para un estado valido en USA)billTostreet1(string)RequiredString (60)Payments"street1": "LAVALLE 4041","Calle Numero interior Numero ExteriorbillTostreet2(string)OptionalString (60)Payments"street2": "LAVALLE 4041","BarrioshipTocity(string)RequiredString (50)Payments"city": "Buenos Aires","Ciudad / Debe comenzar con una letrashipTocountry(string)RequiredString (2)Payments"country": "AR","\[Código ISO\] ([http://apps.cybersource.com/library/documentation/sbc/quickref/countries\_alpha\_list.pdf](http://apps.cybersource.com/library/documentation/sbc/quickref/countries_alpha_list.pdf) )shipToemail(string)RequiredString (100)Payments"email": "","correo electronico del compradorshipTofirstName(string)RequiredString (60)Payments"first\_name": "leila","Nombre del tarjeta habiente / Sin caracteres especiales como acentos invertidos, sólo letras, números y espaciosshipTolastName(string)RequiredString (60)Payments"last\_name": "sosa","Apellido del tarjetahabiente / Sin caracteres especiales como acentos invertidos, sólo letras, números y espaciosshipTophoneNumber(string)RequiredString (15)Payments"phone\_number": "1549066329","Número de telefonoshipTopostalCode(string)RequiredString (10)Payments"postal\_code": "1427","Codigo PostalshipTostate(string)RequiredString (2)Payments"state": "BA","Estado (Si el country = US, el campo se valida para un estado valido en USA)shipTostreet1(string)RequiredString (60)Payments"street1": "LAVALLE 4041"Calle Numero interior Numero Exterior / Para los casos que no son de envío a domicilio, jamás enviar la dirección propia del comercio o correo donde se retire la mercadería, en ese caso replicar los datos de facturación.shipTostreet2(string)OptionalString (60)Payments"street2": "LAVALLE 4041"BarriopurchaseTotalscurrency(string)RequiredString (5)Payments"currency": "ARS"purchaseTotalsgrandTotalAmount(integer)RequiredInteger (12)Payments"amount": 1200customer\_in\_site (General for all Verticals)MDD7- Fecha Registro Comprador (num Dias)OptionalString (255)Payments"days\_in\_site": 243,"Numero de dias que tiene registrado un cliente en el portal del comercio.customer\_in\_site (General for all Verticals)MDD8- Usuario Guest? (S/N)OptionalString (255)Payments"is\_guest": false,"Valor Boleano para indicar si el usuario esta comprando como invitado en la pagina del comercio. Valores posibles (S/N)customer\_in\_site (General for all Verticals)MDD9- Customer password HashOptionalString (255)Payments"password": "abracadabra","Valor del password del usuario registrado en el portal del comercio. Incluir el valor en hashcustomer\_in\_site (General for all Verticals)MDD10- Historico de compras del comprador (Num transacciones)OptionalString (255)Payments"num\_of\_transactions": 1,"Conteo de transacciones realizadas por el mismo usuario registrado en el portal del comerciocustomer\_in\_site (General for all Verticals)MDD11- Customer Cell PhoneOptionalString (255)Payments"cellphone\_number": "12121"Incluir numero de telefono adicional del compradorcustomer\_in\_site (General for all Verticals)MDD39 - Visa ValidationOptionalString (255)Payments"street": "Av. Corrientes 1234"Incluir Domicilio de clientecampos Adicionales Vertical RetailMDD12- Shipping DeadLine (Num Dias)OptionalString (255)Payments"days\_to\_delivery": "55","Numero de dias que tiene el comercio para hacer la entregacampos Adicionales Vertical RetailMDD13- Metodo de DespachoOptional (Catalogo)String (255)Payments"dispatch\_method": "storepickup","Valores ejemplo: (domicilio, click and collect, carrier) Es recomendable que el API de decidir fije opciones seleccionables y no sean de captura libre para el comercio.campos Adicionales Vertical RetailMDD14- Customer requires Tax Bill ?OptionalString (255)Payments"tax\_voucher\_required": true,"Valor booleano para identificar si el cliente requiere un comprobante fiscal o no S / Ncampos Adicionales Vertical RetailMDD15- Customer Loyality NumberOptionalString (255)Payments"customer\_loyality\_number": "123232","Incluir numero de cliente frecuentecampos Adicionales Vertical RetailMDD16- Promotional / Coupon CodeOptionalString (255)Payments"coupon\_code": "cupon22","Incluir numero de cupon de descuentoitemproductCode(string)ConditionalString (255)Payments"code": "popblacksabbat2016","adult\_content , coupon, gift\_certificate , handling\_only , shipping\_and\_handling , shipping\_only, electronics, Apparel, Housewares, Sports, Toys, Books, Music, Video, Drugs/HBAitemproductDescription(string)ConditionalString (255)Payments"description": "Popular Black Sabbath 2016","Descripcion general del productoitemproductName(string)ConditionalString (255)Payments"name": "popblacksabbat2016ss","Nombre en catalogo del productoitemproductSKU(string)ConditionalString (255)Payments"sku": "asas","SKU en catalogoitemquantity(integer)ConditionalInteger (10)Payments"quantity": 1,"Cantidad productos del mismo tipo agregados al carritoitemtotalAmount(integer)ConditionalInteger (12)Payments"total\_amount": 1200,""Precio total = Precio unitario \* quantity / CSITTOTALAMOUNT = CSITUNITPRICE \* CSITQUANTITY"itemunitPrice(integer)ConditionalInteger (12)Payments"unit\_price": 1200""Precio Unitario del producto."#### Ejemplo

[](#ejemplo-9)

```
  $csmdd = array(
            array(
                "csmdd17" => "17"
            ),
            array(
                "csmdd18" => "18"
            ),
            array(
                "csmdd19" => "19.999"
            )
        );
  $cs_data = array(
        "send_to_cs" => true,
        "channel" => "Web",
        "device_unique_id" => "1234-1234",
        "bill_to" => array(
          "city" => "Buenos Aires",
          "country" => "AR",
          "customer_id" => "martinid",
          "email" => "accept@decidir.com.ar",
          "first_name" => "martin",
          "last_name" => "perez",
          "phone_number" => "1547766111",
          "postal_code" => "1768",
          "state" => "BA",
          "street1" => "GARCIA DEL RIO 3333",
          "street2" => "GARCIA DEL RIO 3333",
        ),
        "ship_to" => array(
          "city" => "Buenos Aires",
          "country" => "AR",
          "customer_id" => "martinid",
          "email" => "accept@decidir.com.ar",
          "first_name" => "martin",
          "last_name" => "perez",
          "phone_number" => "1547766111",
          "postal_code" => "1768",
          "state" => "BA",
          "street1" => "GARCIA DEL RIO 3333",
          "street2" => "GARCIA DEL RIO 3333",
        ),
        "currency" => "ARS",
        "amount" => 1200,
        "days_in_site" => 243,
        "is_guest" => false,
        "password" => "password",
        "num_of_transactions" => 1,
        "cellphone_number" => "12121",
        "date_of_birth" => "129412",
        "street" => "RIO 4041",
        "days_to_delivery" => "55",
        "dispatch_method" => "storepickup",
        "tax_voucher_required" => true,
        "customer_loyality_number" => "123232",
        "coupon_code" => "cupon22",
        "csmdds" => $csmdd
      );

  //Datos de productos, array con los diferentes productos involucrados.
  $cs_products = array(
        array(
          "csitproductcode" => "electronic_product", //Código de producto. MANDATORIO.
          "csitproductdescription" => "NOTEBOOK L845 SP4304LA DF TOSHIBA", //Descripción del producto. MANDATORIO.
          "csitproductname" => "NOTEBOOK L845 SP4304LA DF TOSHIBA",  //Nombre del producto. MANDATORIO.
          "csitproductsku" => "LEVJNSL36GN", //Código identificador del producto. MANDATORIO.
          "csittotalamount" => 1200,
          "csitquantity" => 1,//Cantidad del producto. MANDATORIO.
          "csitunitprice" => 1200 //Formato Idem CSITTOTALAMOUNT. MANDATORIO
          ),
        array(
          "csitproductcode" => "default", //Código de producto. MANDATORIO.
          "csitproductdescription" => "PENDRIVE 2GB KINGSTON", //Descripción del producto. MANDATORIO.
          "csitproductname" => "PENDRIVE 2GB", //Nombre del producto. MANDATORIO.
          "csitproductsku" => "KSPDRV2g", //Código identificador del producto. MANDATORIO.
          "csittotalamount" => 1200, //MANDATORIO
          "csitquantity" => 1, //Cantidad del producto. MANDATORIO.
          "csitunitprice" => 1200 //Formato Idem CSITTOTALAMOUNT. MANDATORIO
        )
      );

```

Para incorporar estos datos en el requerimiento inicial, se debe instanciar un objeto de la clase Decidir\\Data\\Cybersource\\Retail de la siguiente manera.

```
$cybersource = new Decidir\Cybersource\Retail(
                    $datos_cs,  // Datos de la operación
                    $cs_productos, // Datos de los productos
  );

$connector->payment()->setCybersource($cybersource->getData());

$data = array(
      "site_transaction_id" => "12042017_20",
      "token" => "be211413-757b-487e-bb0c-283d21c0fb6f",
      "user_id" => "usuario",
      "payment_method_id" => 1,
      "bin" => "450799",
      "amount" => 1200,
      "currency" => "ARS",
      "installments" => 1,
      "description" => "",
      "payment_type" => "single",
      "sub_payments" => array()
    );

    $response = $connector->payment()->ExecutePayment($data);
```

[Volver al inicio](#Inicio)

#### Ticketing

[](#ticketing)

Los siguientes parámetros se deben enviar específicamente para la vertical Ticketing. Además se deben enviar datos específicos de cada producto involucrado en la transacción. [Documentación - Ticketing](https://documentacion-ventasonline.payway.com.ar/docs/gateway/zrf947tv94afc-cybersourse-ticketing)

Descripcion (Data set)API FieldsRequired/OptionalData TypeOrigen del datoCampo referente en ApiRestComentariosfraud\_detectionsend\_to\_cs(Boolean)RequiredBooleanMDD40 - Fraud Update"send\_to\_cs": true/falsefraud\_detectionChannel(String)RequiredStringMDD6 - Sales Channel"channel": "Web"fraud\_detectiondevice\_unique\_id(String)RequiredStringUnique identifier for the device"device\_unique\_id": "1234-1234"billTocity(string)RequiredString (50)Payments"city": "Buenos Aires","Ciudad / Debe comenzar con una letrabillTocountry(string)RequiredString (2)Payments"country": "AR","[Código ISO](http://apps.cybersource.com/library/documentation/sbc/quickref/countries_alpha_list.pdf)billTocustomerID(string)RequiredString (50)Payments"customer\_id": "leilaid","Identificador del usuario unico logueado al portal (No puede ser una direccion de email)billToemail(string)RequiredString (100)Payments"email": "","correo electronico del compradorbillTofirstName(string)RequiredString (60)Payments"first\_name": "leila","Nombre del tarjeta habiente / Sin caracteres especiales como acentos invertidos, sólo letras, números y espaciosbillTolastName(string)RequiredString (60)Payments"last\_name": "leila","Apellido del tarjetahabiente / Sin caracteres especiales como acentos invertidos, sólo letras, números y espaciosbillTophoneNumber(string)RequiredString (15)Payments"phone\_number": "1548866329","Número de telefonobillTopostalCode(string)RequiredString (10)Payments"postal\_code": "1427","Codigo PostalbillTostate(string)RequiredString (2)Payments"state": "BA","Estado (Si el country = US, el campo se valida para un estado valido en USA)billTostreet1(string)RequiredString (60)Payments"street1": "LAVALLE 4041","Calle Numero interior Numero ExteriorbillTostreet2(string)OptionalString (60)Payments"street2": "LAVALLE 4041","BarriopurchaseTotalscurrency(string)RequiredString (5)Payments"currency": "ARS"purchaseTotalsgrandTotalAmount(integer)RequiredInteger (12)Payments"amount": 1200customer\_in\_site (General for all Verticals)MDD7- Fecha Registro Comprador (num Dias)OptionalString (255)Payments"days\_in\_site": 243,"Numero de dias que tiene registrado un cliente en el portal del comercio.customer\_in\_site (General for all Verticals)MDD8- Usuario Guest? (S/N)OptionalString (255)Payments"is\_guest": false,"Valor Boleano para indicar si el usuario esta comprando como invitado en la pagina del comercio. Valores posibles (S/N)customer\_in\_site (General for all Verticals)MDD9- Customer password HashOptionalString (255)Payments"password": "abracadabra","Valor del password del usuario registrado en el portal del comercio. Incluir el valor en hashcustomer\_in\_site (General for all Verticals)MDD10- Historico de compras del comprador (Num transacciones)OptionalString (255)Payments"num\_of\_transactions": 1,"Conteo de transacciones realizadas por el mismo usuario registrado en el portal del comerciocustomer\_in\_site (General for all Verticals)MDD11- Customer Cell PhoneOptionalString (255)Payments"cellphone\_number": "12121"Incluir numero de telefono adicional del compradorcustomer\_in\_site (General for all Verticals)MDD39- Visa ValidationOptionalString (255)Payments"street": "Av. Corrientes 1234"Incluir Domicilio de clientecustomer\_in\_site (General for all Verticals)MDD10- TXs QuantityOptionalString (255)Payments"num\_of\_transactions": 1Incluir numero de transaccionticketing\_transaction\_dataMDD33 - Days to EventRequeridoIntegerPayments"days\_to\_event": 55Incluir dias para el eventoticketing\_transaction\_dataMDD34 - Delivery TypeRequeridoIntegerPayments"delivery\_type": "Pick Up"Incluir tipo de entregaitemproductCode(string)ConditionalString (255)Payments"code": "popblacksabbat2016","adult\_content , coupon, gift\_certificate , handling\_only , shipping\_and\_handling , shipping\_only, electronics, Apparel, Housewares, Sports, Toys, Books, Music, Video, Drugs/HBAitemproductDescription(string)ConditionalString (255)Payments"description": "Popular Black Sabbath 2016","Descripcion general del productoitemproductName(string)ConditionalString (255)Payments"name": "popblacksabbat2016ss","Nombre en catalogo del productoitemproductSKU(string)ConditionalString (255)Payments"sku": "asas","SKU en catalogoitemquantity(integer)ConditionalInteger (10)Payments"quantity": 1,"Cantidad productos del mismo tipo agregados al carritoitemtotalAmount(integer)ConditionalInteger (12)Payments"total\_amount": 1200,""Precio total = Precio unitario \* quantity / CSITTOTALAMOUNT = CSITUNITPRICE \* CSITQUANTITY"itemunitPrice(integer)ConditionalInteger (12)Payments"unit\_price": 1200""Precio Unitario del producto."#### Ejemplo

[](#ejemplo-10)

```
  $csmdd = array(
            array(
                "csmdd17" => "17"
            ),
            array(
                "csmdd18" => "18"
            ),
            array(
                "csmdd19" => "19.999"
            )
        );
  $cs_data = array(
        "send_to_cs" => true,
        "channel" => "Web",
        "device_unique_id" => "1234-1234",
        "bill_to" => array(
          "city" => "Buenos Aires",
          "country" => "AR",
          "customer_id" => "martinid",
          "email" => "accept@decidir.com.ar",
          "first_name" => "martin",
          "last_name" => "perez",
          "phone_number" => "1547766111",
          "postal_code" => "1427",
          "state" => "BA",
          "street1" => "GARCIA DEL RIO 4000",
          "street2" => "GARCIA DEL RIO 4000",
        ),
        "currency" => "ARS",
        "amount" => 1200,
        "days_in_site" => 243,
        "is_guest" => false,
        "password" => "abracadabra",
        "num_of_transactions" => 1,
        "cellphone_number" => "12121",
        "date_of_birth" => "129412",
        "street" => "RIO 4041",
        "delivery_type"=> "Pick up",
        "days_to_event"=> 55,
        "csmdds" => $csmdd
      );

  //Datos de productos, array con los diferentes productos involucrados.
  $cs_products = array(
        array(
          "csitproductcode" => "concierto2016",
                  "csitproductdescription" => "Popular Concierto 2016",
                  "csitproductname" => "concierto2016",
                  "csitproductsku" => "BS01",
                  "csittotalamount" => 1200,
                  "csitquantity" => 1,
                  "csitunitprice" => 1200
          ),
        array(
          "csitproductcode" => "concierto2017",
                  "csitproductdescription" => "Popular Concierto 2017",
                  "csitproductname" => "concierto2017",
                  "csitproductsku" => "BS01",
                  "csittotalamount" => 1200,
                  "csitquantity" => 1,
                  "csitunitprice" => 1200
        )
      );

```

Para incorporar estos datos en el requerimiento inicial, se debe instanciar un objeto de la clase Decidir\\Data\\Cybersource\\Ticketing de la siguiente manera.

```
$cybersource = new Decidir\Cybersource\Ticketing(
                    $datos_cs,  // Datos de la operación
                    $cs_productos, // Datos de los productos
  );

$connector->payment()->setCybersource($cybersource->getData());

$data = array(
      "site_transaction_id" => "12042017_20",
      "token" => "be211413-757b-487e-bb0c-283d21c0fb6f",
      "user_id" => "usuario",
      "payment_method_id" => 1,
      "bin" => "450799",
      "amount" => 1200,
      "currency" => "ARS",
      "installments" => 1,
      "description" => "",
      "payment_type" => "single",
      "sub_payments" => array()
    );

$response = $connector->payment()->ExecutePayment($data);
```

[Volver al inicio](#Inicio)

#### Digital Goods

[](#digital-goods)

Los siguientes parámetros se deben enviar específicamente para la vertical Digital Goods. Además se deben enviar datos específicos de cada producto involucrado en la transacción. [Documentación - Digital Goods](https://documentacion-ventasonline.payway.com.ar/docs/gateway/mbpu3o5rso0e2-cybersourse-digital-goods)

Descripcion (Data set)API FieldsRequired/OptionalData TypeOrigen del datoCampo referente en ApiRestComentariosfraud\_detectionsend\_to\_cs(Boolean)RequiredBooleanMDD40 - Fraud Update"send\_to\_cs": true/falsefraud\_detectionChannel(String)RequiredStringMDD6 - Sales Channel"channel": "Web"fraud\_detectiondevice\_unique\_id(String)RequiredStringUnique identifier for the device"device\_unique\_id": "1234-1234"billTocity(string)RequiredString (50)Payments"city": "Buenos Aires","Ciudad / Debe comenzar con una letrabillTocountry(string)RequiredString (2)Payments"country": "AR","[Código ISO](http://apps.cybersource.com/library/documentation/sbc/quickref/countries_alpha_list.pdf)billTocustomerID(string)RequiredString (50)Payments"customer\_id": "leilaid","Identificador del usuario unico logueado al portal (No puede ser una direccion de email)billToemail(string)RequiredString (100)Payments"email": "","correo electronico del compradorbillTofirstName(string)RequiredString (60)Payments"first\_name": "leila","Nombre del tarjeta habiente / Sin caracteres especiales como acentos invertidos, sólo letras, números y espaciosbillTolastName(string)RequiredString (60)Payments"last\_name": "leila","Apellido del tarjetahabiente / Sin caracteres especiales como acentos invertidos, sólo letras, números y espaciosbillTophoneNumber(string)RequiredString (15)Payments"phone\_number": "1548866329","Número de telefonobillTopostalCode(string)RequiredString (10)Payments"postal\_code": "1427","Codigo PostalbillTostate(string)RequiredString (2)Payments"state": "BA","Estado (Si el country = US, el campo se valida para un estado valido en USA)billTostreet1(string)RequiredString (60)Payments"street1": "LAVALLE 4041","Calle Numero interior Numero ExteriorbillTostreet2(string)OptionalString (60)Payments"street2": "LAVALLE 4041","BarriopurchaseTotalscurrency(string)RequiredString (5)Payments"currency": "ARS"purchaseTotalsgrandTotalAmount(integer)RequiredInteger (12)Payments"amount": 1200customer\_in\_site (General for all Verticals)MDD7- Fecha Registro Comprador (num Dias)OptionalString (255)Payments"days\_in\_site": 243,"Numero de dias que tiene registrado un cliente en el portal del comercio.customer\_in\_site (General for all Verticals)MDD8- Usuario Guest? (S/N)OptionalString (255)Payments"is\_guest": false,"Valor Boleano para indicar si el usuario esta comprando como invitado en la pagina del comercio. Valores posibles (S/N)customer\_in\_site (General for all Verticals)MDD9- Customer password HashOptionalString (255)Payments"password": "abracadabra","Valor del password del usuario registrado en el portal del comercio. Incluir el valor en hashcustomer\_in\_site (General for all Verticals)MDD10- Historico de compras del comprador (Num transacciones)OptionalString (255)Payments"num\_of\_transactions": 1,"Conteo de transacciones realizadas por el mismo usuario registrado en el portal del comerciocustomer\_in\_site (General for all Verticals)MDD11- Customer Cell PhoneOptionalString (255)Payments"cellphone\_number": "12121"Incluir numero de telefono adicional del compradorcustomer\_in\_site (General for all Verticals)MDD39- Visa ValidationOptionalString (255)Payments"street": "Av. Corrientes 1234"Incluir Domicilio de clientecustomer\_in\_site (General for all Verticals)MDD10- TXs QuantityOptionalString (255)Payments"num\_of\_transactions": 1Incluir numero de transacciondigital\_goods\_transaction\_dataMDD32 - Delivery TypeRequeridoIntegerPayments"delivery\_type": "Pick Up"Incluir tipo de entregaitemproductCode(string)ConditionalString (255)Payments"code": "popblacksabbat2016","adult\_content , coupon, gift\_certificate , handling\_only , shipping\_and\_handling , shipping\_only, electronics, Apparel, Housewares, Sports, Toys, Books, Music, Video, Drugs/HBAitemproductDescription(string)ConditionalString (255)Payments"description": "Popular Black Sabbath 2016","Descripcion general del productoitemproductName(string)ConditionalString (255)Payments"name": "popblacksabbat2016ss","Nombre en catalogo del productoitemproductSKU(string)ConditionalString (255)Payments"sku": "asas","SKU en catalogoitemquantity(integer)ConditionalInteger (10)Payments"quantity": 1,"Cantidad productos del mismo tipo agregados al carritoitemtotalAmount(integer)ConditionalInteger (12)Payments"total\_amount": 1200,""Precio total = Precio unitario \* quantity / CSITTOTALAMOUNT = CSITUNITPRICE \* CSITQUANTITY"itemunitPrice(integer)ConditionalInteger (12)Payments"unit\_price": 1200""Precio Unitario del producto."#### Ejemplo

[](#ejemplo-11)

```
$csmdd = array(
            array(
                "csmdd17" => "17"
            ),
            array(
                "csmdd18" => "18"
            ),
            array(
                "csmdd19" => "19.999"
            )
        );
$cs_data = array(
      "send_to_cs" => true,
      "channel" => "Web",
      "device_unique_id" => "1234-1234",
      "bill_to" => array(
        "city" => "Buenos Aires",
        "country" => "AR",
        "customer_id" => "martinid",
        "email" => "accept@decidir.com.ar",
        "first_name" => "martin",
        "last_name" => "perez",
        "phone_number" => "1547766111",
        "postal_code" => "1427",
        "state" => "BA",
        "street1" => "GARCIA DEL RIO 4000",
        "street2" => "GARCIA DEL RIO 4000",
      ),
      "currency" => "ARS",
      "amount" => 1200,
      "days_in_site" => 243,
      "is_guest" => false,
      "password" => "abracadabra",
      "num_of_transactions" => 1,
      "cellphone_number" => "12121",
      "date_of_birth" => "129412",
      "street" => "RIO 4041",
      "delivery_type"=> "Pick up",
      "csmdds" => $csmdd
    );

//lista de productos cybersource
$cs_products = array(
      array(
        "csitproductcode" => "software2016",
                "csitproductdescription" => "Software 2016",
                "csitproductname" => "soft2016",
                "csitproductsku" => "ST01",
                "csittotalamount" => 1200,
                "csitquantity" => 1,
                "csitunitprice" => 1200
      ),
      array(
        "csitproductcode" => "software2017",
                "csitproductdescription" => "Software 2017",
                "csitproductname" => "soft2017",
                "csitproductsku" => "ST01",
                "csittotalamount" => 1200,
                "csitquantity" => 1,
                "csitunitprice" => 1200
      )
    );

```

Para incorporar estos datos en el requerimiento inicial, se debe instanciar un objeto de la clase Decidir\\Data\\Cybersource\\DigitalGoods de la siguiente manera.

```
$cybersource = new Decidir\Cybersource\DigitalGoods(
                    $datos_cs,  // Datos de la operación
                    $cs_productos, // Datos de los productos
  );

$connector->payment()->setCybersource($cybersource->getData());

$data = array(
      "site_transaction_id" => "12042017_20",
      "token" => "be211413-757b-487e-bb0c-283d21c0fb6f",
      "user_id" => "usuario",
      "payment_method_id" => 1,
      "bin" => "450799",
      "amount" => 1200,
      "currency" => "ARS",
      "installments" => 1,
      "description" => "",
      "payment_type" => "single",
      "sub_payments" => array()
    );

$response = $connector->payment()->ExecutePayment($data);
```

#### Services

[](#services)

Los siguientes parámetros se deben enviar específicamente para la vertical Digital Goods. Además se deben enviar datos específicos de cada producto involucrado en la transacción. [Documentación - Services](https://documentacion-ventasonline.payway.com.ar/docs/gateway/bo2f68vz6x9rw-cybersourse-services)

Descripcion (Data set)API FieldsRequired/OptionalData TypeOrigen del datoCampo referente en ApiRestComentariosfraud\_detectionsend\_to\_cs(Boolean)RequiredBooleanMDD40 - Fraud Update"send\_to\_cs": true/falsefraud\_detectionChannel(String)RequiredStringMDD6 - Sales Channel"channel": "Web"fraud\_detectiondevice\_unique\_id(String)RequiredStringUnique identifier for the device"device\_unique\_id": "1234-1234"billTocity(string)RequiredString (50)Payments"city": "Buenos Aires","Ciudad / Debe comenzar con una letrabillTocountry(string)RequiredString (2)Payments"country": "AR","[Código ISO](http://apps.cybersource.com/library/documentation/sbc/quickref/countries_alpha_list.pdf)billTocustomerID(string)RequiredString (50)Payments"customer\_id": "leilaid","Identificador del usuario unico logueado al portal (No puede ser una direccion de email)billToemail(string)RequiredString (100)Payments"email": "","correo electronico del compradorbillTofirstName(string)RequiredString (60)Payments"first\_name": "leila","Nombre del tarjeta habiente / Sin caracteres especiales como acentos invertidos, sólo letras, números y espaciosbillTolastName(string)RequiredString (60)Payments"last\_name": "leila","Apellido del tarjetahabiente / Sin caracteres especiales como acentos invertidos, sólo letras, números y espaciosbillTophoneNumber(string)RequiredString (15)Payments"phone\_number": "1548866329","Número de telefonobillTopostalCode(string)RequiredString (10)Payments"postal\_code": "1427","Codigo PostalbillTostate(string)RequiredString (2)Payments"state": "BA","Estado (Si el country = US, el campo se valida para un estado valido en USA)billTostreet1(string)RequiredString (60)Payments"street1": "LAVALLE 4041","Calle Numero interior Numero ExteriorbillTostreet2(string)OptionalString (60)Payments"street2": "LAVALLE 4041","BarriopurchaseTotalscurrency(string)RequiredString (5)Payments"currency": "ARS"purchaseTotalsgrandTotalAmount(integer)RequiredInteger (12)Payments"amount": 1200customer\_in\_site (General for all Verticals)MDD7- Fecha Registro Comprador (num Dias)OptionalString (255)Payments"days\_in\_site": 243,"Numero de dias que tiene registrado un cliente en el portal del comercio.customer\_in\_site (General for all Verticals)MDD8- Usuario Guest? (S/N)OptionalString (255)Payments"is\_guest": false,"Valor Boleano para indicar si el usuario esta comprando como invitado en la pagina del comercio. Valores posibles (S/N)customer\_in\_site (General for all Verticals)MDD9- Customer password HashOptionalString (255)Payments"password": "abracadabra","Valor del password del usuario registrado en el portal del comercio. Incluir el valor en hashcustomer\_in\_site (General for all Verticals)MDD10- Historico de compras del comprador (Num transacciones)OptionalString (255)Payments"num\_of\_transactions": 1,"Conteo de transacciones realizadas por el mismo usuario registrado en el portal del comerciocustomer\_in\_site (General for all Verticals)MDD11- Customer Cell PhoneOptionalString (255)Payments"cellphone\_number": "12121"Incluir numero de telefono adicional del compradorcustomer\_in\_site (General for all Verticals)MDD39- Visa ValidationOptionalString (255)Payments"street": "Av. Corrientes 1234"Incluir Domicilio de clientecustomer\_in\_site (General for all Verticals)MDD10- TXs QuantityOptionalString (255)Payments"num\_of\_transactions": 1Incluir numero de transaccionservices\_transaction\_dataService TypeRequeridoString (255)"service\_type": "eltipodelservicio"Incluir el tipo de servicioservices\_transaction\_dataReference paymentRequeridoString (255)"reference\_payment\_service1": "reference1"Incluir una referencia de pagoservices\_transaction\_dataReference paymentRequeridoString (255)"reference\_payment\_service2": "reference1"Incluir una referencia de pagoservices\_transaction\_dataReference paymentRequeridoString (255)"reference\_payment\_service3": "reference1"Incluir una referencia de pagoitemproductCode(string)ConditionalString (255)Payments"code": "popblacksabbat2016","adult\_content , coupon, gift\_certificate , handling\_only , shipping\_and\_handling , shipping\_only, electronics, Apparel, Housewares, Sports, Toys, Books, Music, Video, Drugs/HBAitemproductDescription(string)ConditionalString (255)Payments"description": "Popular Black Sabbath 2016","Descripcion general del productoitemproductName(string)ConditionalString (255)Payments"name": "popblacksabbat2016ss","Nombre en catalogo del productoitemproductSKU(string)ConditionalString (255)Payments"sku": "asas","SKU en catalogoitemquantity(integer)ConditionalInteger (10)Payments"quantity": 1,"Cantidad productos del mismo tipo agregados al carritoitemtotalAmount(integer)ConditionalInteger (12)Payments"total\_amount": 1200,""Precio total = Precio unitario \* quantity / CSITTOTALAMOUNT = CSITUNITPRICE \* CSITQUANTITY"itemunitPrice(integer)ConditionalInteger (12)Payments"unit\_price": 1200""Precio Unitario del producto."#### Ejemplo

[](#ejemplo-12)

```
$csmdd = array(
            array(
                "csmdd17" => "17"
            ),
            array(
                "csmdd18" => "18"
            ),
            array(
                "csmdd19" => "19.999"
            )
        );
$cs_data = array(
    "send_to_cs" => true,
    "channel" => "Web",
    "device_unique_id" => "1234-1234",
    "bill_to" => array(
        "city" => "Buenos Aires",
        "country" => "AR",
        "customer_id" => "martinid",
        "email" => "accept@decidir.com.ar",
        "first_name" => "martin",
        "last_name" => "perez",
        "phone_number" => "1547766111",
        "postal_code" => "1768",
        "state" => "BA",
        "street1" => "GARCIA DEL RIO 3333",
        "street2" => "GARCIA DEL RIO 3333",
    ),
    "currency" => "ARS",
    "amount" => 1200,
    "days_in_site" => 243,
    "is_guest" => false,
    "password" => "password",
    "num_of_transactions" => 1,
    "cellphone_number" => "12121",
    "date_of_birth" => "129412",
    "street" => "RIO 4041",
    "service_type" => "tiposervicio",
    "reference_payment_service1" => "reference1",
    "reference_payment_service2" => "reference2",
    "reference_payment_service3" => "reference3",
    "csmdds" => $csmdd
);

//lista de productos cybersource
$cs_products = array(
    array(
        "csitproductcode" => "popblacksabbat2016",
        "csitproductdescription" => "Popular Black Sabbath 2016",
        "csitproductname" => "popblacksabbat2016ss",
        "csitproductsku" => "asas",
        "csittotalamount" => 1200,
        "csitquantity" => 1,
        "csitunitprice" => 1200
    ),
    array(
        "csitproductcode" => "popblacksabbat2017",
        "csitproductdescription" => "Popular Black Sabbath 2017",
        "csitproductname" => "popblacksabbat2017ss",
        "csitproductsku" => "asas",
        "csittotalamount" => 1200,
        "csitquantity" => 1,
        "csitunitprice" => 1200
    )
);
```

Para incorporar estos datos en el requerimiento inicial, se debe instanciar un objeto de la clase Decidir\\Data\\Cybersource\\Service de la siguiente manera.

```
$cybersource = new Decidir\Cybersource\Service(
                    $datos_cs,  // Datos de la operación
                    $cs_productos, // Datos de los productos
  );

$connector->payment()->setCybersource($cybersource->getData());

$data = array(
      "site_transaction_id" => "12042017_20",
      "token" => "be211413-757b-487e-bb0c-283d21c0fb6f",
      "user_id" => "usuario",
      "payment_method_id" => 1,
      "bin" => "450799",
      "amount" => 1200,
      "currency" => "ARS",
      "installments" => 1,
      "description" => "",
      "payment_type" => "single",
      "sub_payments" => array()
    );

$response = $connector->payment()->ExecutePayment($data);
```

#### Travel

[](#travel)

Los siguientes parámetros se deben enviar específicamente para la vertical Travel. Además se deben enviar datos específicos de cada pasajero involucrado en la transacción. [Documentación - Travel](https://documentacion-ventasonline.payway.com.ar/docs/gateway/bml3xwx0xuvpi-cybersourse-travel)

Descripcion (Data set)API FieldsRequired/OptionalData TypeOrigen del datoCampo referente en ApiRestComentariosfraud\_detectionsend\_to\_cs(Boolean)RequiredBooleanMDD40 - Fraud Update"send\_to\_cs": true/falsefraud\_detectionChannel(String)RequiredStringMDD6 - Sales Channel"channel": "Web"fraud\_detectiondevice\_unique\_id(String)RequiredStringUnique identifier for the device"device\_unique\_id": "1234-1234"billTocity(string)RequiredString (50)Payments"city": "Buenos Aires","Ciudad / Debe comenzar con una letrabillTocountry(string)RequiredString (2)Payments"country": "AR","[Código ISO](http://apps.cybersource.com/library/documentation/sbc/quickref/countries_alpha_list.pdf)billTocustomerID(string)RequiredString (50)Payments"customer\_id": "leilaid","Identificador del usuario unico logueado al portal (No puede ser una direccion de email)billToemail(string)RequiredString (100)Payments"email": "","correo electronico del compradorbillTofirstName(string)RequiredString (60)Payments"first\_name": "leila","Nombre del tarjeta habiente / Sin caracteres especiales como acentos invertidos, sólo letras, números y espaciosbillTolastName(string)RequiredString (60)Payments"last\_name": "leila","Apellido del tarjetahabiente / Sin caracteres especiales como acentos invertidos, sólo letras, números y espaciosbillTophoneNumber(string)RequiredString (15)Payments"phone\_number": "1548866329","Número de telefonobillTopostalCode(string)RequiredString (10)Payments"postal\_code": "1427","Codigo PostalbillTostate(string)RequiredString (2)Payments"state": "BA","Estado (Si el country = US, el campo se valida para un estado valido en USA)billTostreet1(string)RequiredString (60)Payments"street1": "LAVALLE 4041","Calle Numero interior Numero ExteriorbillTostreet2(string)OptionalString (60)Payments"street2": "LAVALLE 4041","BarriopurchaseTotalscurrency(string)RequiredString (5)Payments"currency": "ARS"purchaseTotalsgrandTotalAmount(integer)RequiredInteger (12)Payments"amount": 1200customer\_in\_site (General for all Verticals)MDD8- Usuario Guest? (S/N)OptionalString (255)Payments"is\_guest": false,"Valor Boleano para indicar si el usuario esta comprando como invitado en la pagina del comercio. Valores posibles (S/N)customer\_in\_site (General for all Verticals)MDD9- Customer password HashOptionalString (255)Payments"password": "abracadabra","Valor del password del usuario registrado en el portal del comercio. Incluir el valor en hashcustomer\_in\_site (General for all Verticals)MDD10- Historico de compras del comprador (Num transacciones)OptionalString (255)Payments"num\_of\_transactions": 1,"Conteo de transacciones realizadas por el mismo usuario registrado en el portal del comerciocustomer\_in\_site (General for all Verticals)MDD11- Customer Cell PhoneOptionalString (255)Payments"cellphone\_number": "12121"Incluir numero de telefono adicional del compradorcustomer\_in\_site (General for all Verticals)MDD39- Visa ValidationOptionalString (255)Payments"street": "Av. Corrientes 1234"Incluir Domicilio de clientecustomer\_in\_site (General for all Verticals)MDD10- TXs QuantityOptionalString (255)Payments"num\_of\_transactions": 1Incluir numero de transacciontravel\_transaction\_datareservation\_codeRequeridoString (255)"reservation\_code": "GJH784"Incluir el codigo de serviciotravel\_transaction\_datathird\_party\_bookingRequeridoString (255)"third\_party\_booking": falseIncluir "true" si es booking por tercerostravel\_transaction\_datadeparture\_cityRequeridoString (255)"departure\_city": "EZE"Incluir codigo de ciudad de salidatravel\_transaction\_datafinal\_destination\_cityRequeridoString (255)"final\_destination\_city": "HND"Incluir codigo de ciudad de llegadatravel\_transaction\_datainternational\_flightRequeridoString (255)"international\_flight": falseIncluir "true" si es vuelo internacionaltravel\_transaction\_datafrequent\_flier\_numberRequeridoString (255)"frequent\_flier\_number": "00000123"Incluir el numero de viajero frecuentetravel\_transaction\_dataclass\_of\_serviceRequeridoString (255)"class\_of\_service": "class"Incluir la clase de serviciotravel\_transaction\_dataday\_of\_week\_of\_flightRequeridoString (255)"day\_of\_week\_of\_flight": 2Incluir el día de la semana de vuelotravel\_transaction\_dataweek\_of\_year\_of\_flightRequeridoString (255)"week\_of\_year\_of\_flight": 5Incluir la semana del año de vuelotravel\_transaction\_dataairline\_codeRequeridoString (255)"airline\_code": "AA"Incluir el código de la aerolíneatravel\_transaction\_datacode\_shareRequeridoString (255)"code\_share": "SKYTEAM"Incluir el código de compartidotravel\_transaction\_datacode\_shareRequeridoString (255)"code\_share": "SKYTEAM"Incluir el código de compartidotravel\_transaction\_data decision\_manager\_travelcomplete\_routeRequeridoString (255)"complete\_route": "EZE-LAX:LAX-HND"Incluir código de ruta completatravel\_transaction\_data decision\_manager\_traveljourney\_typeRequeridoString (255)"journey\_type": "one way"Incluir tipo de viajetravel\_transaction\_data decision\_manager\_traveldeparture\_date departure\_timeRequeridoString (255)"departure\_time": "2017-05-30T09:00Z"Incluir el tiempo de partidatravel\_transaction\_data decision\_manager\_traveldeparture\_date departure\_zoneRequeridoString (255)"departure\_zone": "2017-05-30T09:00Z"Incluir la zona de partidapassengersemail(string)ConditionalString (255)Payments"email": ""Email del pasajeropassengersfirst\_name(string)ConditionalString (255)Payments"first\_name": "Juan"Primer nombre del pasajeropassengerslast\_name(string)ConditionalString (255)Payments"last\_name": "Perez"Apellido del pasajeropassengerspassport\_id(string)ConditionalString (255)Payments"passport\_id": "412314851231"Id del pasaporte del pasajeropassengersphone(string)ConditionalString (255)Payments"phone": "541134356768"Teléfono del pasajeropassengerspassenger\_status(string)ConditionalString (255)Payments"passenger\_status": "gold"Status del pasajeropassengerspassenger\_type(string)ConditionalString (255)Payments"passenger\_type": "ADT"Tipo de pasajero#### Ejemplo

[](#ejemplo-13)

```
$cs_data = array(
    "send_to_cs" => true,
    "channel" => "Web",
    "device_unique_id" => "1234-1234",
    "bill_to" => array(
        "city" => "Buenos Aires",
        "country" => "AR",
        "customer_id" => "martinid",
        "email" => "accept@decidir.com.ar",
        "first_name" => "martin",
        "last_name" => "perez",
        "phone_number" => "1547766111",
        "postal_code" => "1768",
        "state" => "BA",
        "street1" => "GARCIA DEL RIO 3333",
        "street2" => "GARCIA DEL RIO 3333",
    ),
    "currency" => "ARS",
    "amount" => 1200,
    "days_in_site" => 243,
    "is_guest" => false,
    "password" => "password",
    "num_of_transactions" => 1,
    "cellphone_number" => "12121",
    "date_of_birth" => "129412",
    "street" => "RIO 4041",
    "reservation_code" => "GJH784",
    "third_party_booking" => false,
    "departure_city" => "EZE",
    "final_destination_city" => "HND",
    "international_flight" => true,
    "frequent_flier_number" => "00000123",
    "class_of_service" => "class",
    "day_of_week_of_flight" => 2,
    "week_of_year_of_flight" => 5,
    "airline_code" => "AA",
    "code_share" => "SKYTEAM",
    "decision_manager_travel" => array(
            "complete_route" => "EZE-LAX:LAX-HND",
            "journey_type" => "one way",
            "departure_date" => array(
                    "departure_time" =>  "2017-05-30T09:00Z",
                    "departure_zone "=> "GMT-0300"
            )
    ),
    "airline_number_of_passengers" => 1
);

$cs_passenger = array(
    array(
        "email" => "juan@mail.com",
        "first_name" => "Juan",
        "last_name" => "Perez",
        "passport_id" => "412314851231",
        "phone" => "541134356768",
        "passenger_status" => "gol",
        "passenger_type" => "ADT"
    )
);
```

Para incorporar estos datos en el requerimiento inicial, se debe instanciar un objeto de la clase Decidir\\Data\\Cybersource\\Travel de la siguiente manera.

```
$cybersource = new Decidir\Cybersource\Travel(
                    $datos_cs,  // Datos de la operación
                    $cs_passenger, // Datos de los pasajeros
  );

$connector->payment()->setCybersource($cybersource->getData());

$data = array(
      "site_transaction_id" => "12042017_20",
      "token" => "be211413-757b-487e-bb0c-283d21c0fb6f",
      "user_id" => "usuario",
      "payment_method_id" => 1,
      "bin" => "450799",
      "amount" => 1200,
      "currency" => "ARS",
      "installments" => 1,
      "description" => "",
      "payment_type" => "single",
      "sub_payments" => array()
    );

$response = $connector->payment()->ExecutePayment($data);
```

[Volver al inicio](#Inicio)

Tablas de Referencia
--------------------

[](#tablas-de-referencia)

### Códigos de Medios de pago

[](#códigos-de-medios-de-pago)

[Medios de pago disponibles](https://documentacion-ventasonline.payway.com.ar/docs/gateway/3jw3eiapx1jwu-medios-de-pago#medios-de-pago-disponibles)

1. Visa Debito no acepta devoluciones parciales en e-commerce.

[Volver al inicio](#Inicio)

### Divisas Aceptadas

[](#divisas-aceptadas)

[Medios de pago con Divisas Aceptadas](https://documentacion-ventasonline.payway.com.ar/docs/gateway/3jw3eiapx1jwu-medios-de-pago#divisas-aceptadas)

DivisaDescripciónCódigo APIAR$Pesos ArgentinosARSU$SDólares AmericanosUSD[Volver al inicio](#Inicio)

### Provincias

[](#provincias)

[Códigos de Provincia para Cybersource](https://documentacion-ventasonline.payway.com.ar/docs/gateway/vwd3zic062ibr-manejo-de-errores-cyber-source#c%c3%b3digos-de-provincias-para-cybersource)

ProvinciaCódigoCABACBuenos AiresBCatamarcaKChacoHChubutUCórdobaXCorrientesWEntre RíosRFormosaPJujuyYLa PampaLLa RiojaFMendozaMMisionesNNeuquénQRío NegroRSaltaASan JuanJSan LuisDSanta CruzZSanta FeSSantiago del EsteroGTierra del FuegoVTucumánT[Volver al inicio](#Inicio)

Errores
-------

[](#errores)

### Manejo de Errores Cybersource

[](#manejo-de-errores-cybersource)

Listado de [Manejo de errores por Cybersource](https://documentacion-ventasonline.payway.com.ar/docs/gateway/vwd3zic062ibr-manejo-de-errores-cyber-source)

### Errores de Marca

[](#errores-de-marca)

Listado de [Códigos de Errores de Medios de Pago](https://documentacion-ventasonline.payway.com.ar/docs/gateway/82s1y7wr0hq3k-manejo-de-errores-de-medios-de-pago#c%c3%b3digos-de-errores-del-medio-de-pago)

[Volver al inicio](#Inicio)

###  Health Score

58

—

FairBetter than 98% of packages

Maintenance80

Actively maintained with recent releases

Popularity42

Moderate usage in the ecosystem

Community26

Small or concentrated contributor base

Maturity73

Established project with proven stability

 Bus Factor1

Top contributor holds 53.1% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~102 days

Recently: every ~37 days

Total

32

Last Release

73d ago

Major Versions

V1.7.6 → V2.0.02023-09-21

V1.5.1 → V2.0.32025-02-05

### Community

Maintainers

![](https://www.gravatar.com/avatar/a768bc658ec2e7fc76190db9820902f42d32ff89b8d62e225256beb1dc14e612?d=identicon)[mmansilla-prisma](/maintainers/mmansilla-prisma)

---

Top Contributors

[![EzequielAlg](https://avatars.githubusercontent.com/u/96450215?v=4)](https://github.com/EzequielAlg "EzequielAlg (78 commits)")[![mabogado-rb](https://avatars.githubusercontent.com/u/72889177?v=4)](https://github.com/mabogado-rb "mabogado-rb (11 commits)")[![lschinini](https://avatars.githubusercontent.com/u/96256928?v=4)](https://github.com/lschinini "lschinini (11 commits)")[![andreok9](https://avatars.githubusercontent.com/u/76975417?v=4)](https://github.com/andreok9 "andreok9 (9 commits)")[![FNQuispe](https://avatars.githubusercontent.com/u/40809079?v=4)](https://github.com/FNQuispe "FNQuispe (8 commits)")[![gbangertes-rb](https://avatars.githubusercontent.com/u/141166595?v=4)](https://github.com/gbangertes-rb "gbangertes-rb (8 commits)")[![BartoDev](https://avatars.githubusercontent.com/u/122897005?v=4)](https://github.com/BartoDev "BartoDev (7 commits)")[![gshokida](https://avatars.githubusercontent.com/u/19551711?v=4)](https://github.com/gshokida "gshokida (5 commits)")[![sartiniomar](https://avatars.githubusercontent.com/u/13125192?v=4)](https://github.com/sartiniomar "sartiniomar (3 commits)")[![Bcolmenares](https://avatars.githubusercontent.com/u/58581803?v=4)](https://github.com/Bcolmenares "Bcolmenares (3 commits)")[![wadeturrism](https://avatars.githubusercontent.com/u/15057557?v=4)](https://github.com/wadeturrism "wadeturrism (1 commits)")[![mavalos89](https://avatars.githubusercontent.com/u/21197687?v=4)](https://github.com/mavalos89 "mavalos89 (1 commits)")[![LuisAlejandroBernalRomero](https://avatars.githubusercontent.com/u/88789347?v=4)](https://github.com/LuisAlejandroBernalRomero "LuisAlejandroBernalRomero (1 commits)")[![omarpigmalion](https://avatars.githubusercontent.com/u/80266745?v=4)](https://github.com/omarpigmalion "omarpigmalion (1 commits)")

---

Tags

phpsdk

### Embed Badge

![Health badge](/badges/payway-ar-php-sdk-venta-online/health.svg)

```
[![Health](https://phpackages.com/badges/payway-ar-php-sdk-venta-online/health.svg)](https://phpackages.com/packages/payway-ar-php-sdk-venta-online)
```

###  Alternatives

[omnipay/paypal

PayPal gateway for Omnipay payment processing library

3156.8M53](/packages/omnipay-paypal)[eduardokum/laravel-boleto

Biblioteca com boletos para o laravel

626351.9k2](/packages/eduardokum-laravel-boleto)[tbbc/money-bundle

This is a Symfony bundle that integrates moneyphp/money library (Fowler pattern): https://github.com/moneyphp/money.

1961.9M](/packages/tbbc-money-bundle)[2checkout/2checkout-php

2Checkout PHP Library

83740.3k2](/packages/2checkout-2checkout-php)[smhg/sepa-qr-data

Generate QR code data for SEPA payments

61717.2k5](/packages/smhg-sepa-qr-data)[omnipay/dummy

Dummy driver for the Omnipay payment processing library

271.2M33](/packages/omnipay-dummy)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
