decidir / php-sdk
Decidir SDK
Requires
- php: >=5.3
This package is not auto-updated.
Last update: 2017-03-30 10:12:43 UTC
README
DECIDIR支付网关连接模块
- 安装
- 集成手册
- 概述
- SendAuthorizeRequest
- [GetAuthorizeAnswer] (#getauthorizeanswer)
- 执行
- GetByOperationId
- 参考表
安装
应从Download ZIP按钮下载SDK的最新版本,分支master。下载并解压后,应将位于/vendor目录中的autoload.php文件包含为项目中的库。
也可以通过Composer进行安装。composer require decidir/php-sdk
应将vendor/autoload.php文件包含到项目中。
注意:取消注释php.ini中的extension=php_soap.dll和extension=php_openssl.dll,因为连接到网关时使用了PHP的SoapClient类。
集成手册
集成手册[Manual de Integración Decidir](https://www.gitbook.com/book/decidir/documentacion/details)可在Gitbook上找到,可供在线查询或下载,其中详细说明了集成过程。其中解释了可用的服务和操作,包括请求和响应的示例,这里仅示例如何使用此SDK调用不同服务。
概述
实例化类Decidir\Connector
,它接收Decidir为商家提供的HTTP头部和执行操作的端点作为参数。
$http_header = array('Authorization'=>'PRISMA RV82RVHO5T0O5CZUUTX2FLHU'); $endpoint = Decidir\Connector::DECIDIR_ENDPOINT_TEST; // Opciones disponibles: DECIDIR_ENDPOINT_TEST, DECIDIR_ENDPOINT_PROD $connector = new Decidir\Connector($http_header, $endpoint);
注意: SDK包含2个示例,一个是简单的控制台执行示例,另一个是完整的示例,需要从浏览器访问,允许配置不同的选项。由于功能扩展,如果您使用的是1.0.2之前的版本,则必须删除ordenes.tsv文件以正确运行。
SendAuthorizeRequest
SendAuthorizeRequest操作是Authorize服务的一部分,用于发送初始授权请求以开始交易的支付周期,应按以下方式调用:创建一个Decidir\Authorize\SendAuthorizeRequest\Data
类的实例,包含请求的参数
$sar_data = new Decidir\Authorize\SendAuthorizeRequest\Data( array( "security" => 'RV82RVHO5T0O5CZUUTX2FLHU', // Mandatorio. Código provisto por Decidir "encoding_method" => 'XML', // Opcional "merchant" => 22067736, // Mandatorio. Nro. de Comercio provisto por Decidir "nro_operacion" => 123456, // Mandatorio. Nro. de operación único y propio del comercio "monto" => 50.00, // Mandatorio. Monto de la operación "email_cliente" => 'ejemplo@misitio.com' // Mandatorio. E-mail del cliente ));
然后,通过传递前面创建的对象调用服务
$sar_rta = $connector->Authorize()->sendAuthorizeRequest($sar_data);
它将返回一个 Decidir\Authorize\SendAuthorizeRequest\Response
类的实例。
$sar_rta->getStatusMessage(); // Mensaje del estado del requerimiento $sar_rta->getStatusCode(); // Código de estado $sar_rta->getRequestKey(); // Private Request Key $sar_rta->getPublicRequestKey(); // Public Request Key
支付方式
在执行 SendAuthorizeRequest 操作时,必须根据使用的不同支付方式发送额外数据。为此,提供了针对每种支付方式的具体类,这些类必须添加到数据对象中。
信用卡
要使用信用卡作为支付方式,必须创建一个 Decidir\Data\Mediopago\TarjetaCredito
类的实例,并使用以下参数:
$tarjeta_credito = new Decidir\Data\Mediopago\TarjetaCredito( array( "medio_pago" => 1, // Mandatorio. Código del tipo de tarjeta a utilizar. [Tabla Medios de Pago] (#tablas-medios-de-pago) "cuotas" => 6, // Mandatorio. Nro. de cuotas en los que se hará la operacion "bin" => 450799, // Opcional. Código BIN que identifica al emisor de la tarjeta de crédito. Permite al comercio operar con promociones bancarias. "tokenizar" => true //Opcional. Indica sí se desea recibir un token la tarjeta para futuras compras ));
然后必须在数据对象中包含支付方式的信息。
$sar_data->setMedioPago($tarjeta_credito);
Rapipago
要使用 Rapipago 作为支付方式,必须创建一个 Decidir\Data\Mediopago\Rapipago
类的实例,并使用以下参数:
$rapipago = new Decidir\Data\Mediopago\Rapipago( array( "medio_pago" => 26 // Mandatorio. Código del tipo de tarjeta a utilizar. [Tabla Medios de Pago] (#tablas-medios-de-pago) "cantdiasfechavenc" => 10 // Mandatorio. Son los días que existen entre el 1º y 2º vencimiento de la factura. Poner “00” si la factura no tiene 2º vencimiento. "cantdiaspago" => 12 // Mandatorio. Son los días después del 1º vencimiento y hasta el que el cliente puede pagar la factura por Rapipago. "recargo" => 22.00 // Mandatorio. Recargo por vencimiento del plazo. Es un monto (no un porcentaje). "fechavto" => 1601010 // Mandatorio. Fecha de vencimiento para el pago del cupón. Formato AAMMDD "cliente" => 12345678 // Mandatorio. Código de cliente provisto por Rapipago al momento de habilitar el comercio. ));
然后必须在数据对象中包含支付方式的信息。
$sar_data->setMedioPago($rapipago);
易支付
要使用易支付作为支付方式,必须创建一个 Decidir\Data\Mediopago\PagoFacil
类的实例,并使用以下参数:
$pagofacil = new Decidir\Data\Mediopago\PagoFacil( array( "recargo" => 2500 // Mandatorio. Se debe enviar el monto toal para el segundo vencimiento. "fechavto" => 1601010 // Mandatorio. Fecha de vencimiento para el pago del cupón. Formato AAMMDD "fechavto2" => 1601010 // Mandatorio. Fecha del segundo vencimiento para el pago del cupón. Formato AAMMDD ));
然后必须在数据对象中包含支付方式的信息。
$sar_data->setMedioPago($pagofacil);
我的账户支付
要使用我的账户支付作为支付方式,必须创建一个 Decidir\Data\Mediopago\PagoMisCuentas
类的实例,并使用以下参数:
$pagomiscuentas = new Decidir\Data\Mediopago\PagoMisCuentas( array( "fechavto" => 1601010 // Mandatorio. Fecha y hora de vencimiento de la factura. En formato DDMMYY HHMM. Puede omitirse las “horas” y “minutos”, informando solo la fecha con formato DDMMYY. ));
然后必须在数据对象中包含支付方式的信息。
$sar_data->setMedioPago($pagomiscuentas);
与 Cybersource 集成
要使用 Cybersource 欺诈检测服务,在 SendAuthorizeRequest 操作中,必须发送有关要执行的购买操作的相关额外数据。已定义了五个业务垂直,它们需要特定的参数,以及所有垂直都通用的参数。
通用参数
所有垂直的通用参数必须与每个垂直的具体数据一起发送。以下将描述应添加到每个垂直数据中的通用参数,在实例化相应的类时。
$datos_comunes = array( 'device_fingerprint' => 'dj94utjg93', // Device Fingerprint Id. MANDATORIO. 'csbtcity'=>'Villa General Belgrano', //Ciudad de facturación, MANDATORIO. 'csbtcountry'=>'AR', //País de facturación. MANDATORIO. Código ISO. (http://apps.cybersource.com/library/documentation/sbc/quickref/countries_alpha_list.pdf) 'csbtcustomerid'=>'453458', //Identificador del usuario al que se le emite la factura. MANDATORIO. No puede contener un correo electrónico. 'csbtipaddress'=>'192.0.0.4', //IP de la PC del comprador. MANDATORIO. 'csbtemail'=>'decidir@hotmail.com', //Mail del usuario al que se le emite la factura. MANDATORIO. 'csbtfirstname'=>'Juan' ,//Nombre del usuario al que se le emite la factura. MANDATORIO. 'csbtlastname'=>'Perez', //Apellido del usuario al que se le emite la factura. MANDATORIO. 'csbtphonenumber'=>'541160913988', //Teléfono del usuario al que se le emite la factura. No utilizar guiones, puntos o espacios. Incluir código de país. MANDATORIO. 'csbtpostalcode'=>' C1010AAP', //Código Postal de la dirección de facturación. MANDATORIO. 'csbtstate'=>'B', //Provincia de la dirección de facturación. MANDATORIO. Ver tabla anexa de provincias. 'csbtstreet1'=>'Cerrito 740', //Domicilio de facturación (calle y nro). MANDATORIO. 'csbtstreet2'=>'Piso 8', //Complemento del domicilio. (piso, departamento). NO MANDATORIO. 'csptcurrency'=>'ARS', //Moneda. MANDATORIO. 'csptgrandtotalamount'=>'125.38', //Con decimales opcional usando el puntos como separador de decimales. No se permiten comas, ni como separador de miles ni como separador de decimales. MANDATORIO. (Ejemplos:$125,38-> 125.38 $12-> 12 o 12.00) 'csmdd6'=>'Mobile', // Canal de venta. NO MANDATORIO. (Valores posibles: Web, Mobile, Telefonica) 'csmdd7'=>'', // Fecha registro comprador(num Dias). NO MANDATORIO. 'csmdd8'=>'Y', //Usuario Guest? (Y/N). En caso de ser Y, el campo CSMDD9 no deberá enviarse. NO MANDATORIO. 'csmdd9'=>'', //Customer password Hash: criptograma asociado al password del comprador final. NO MANDATORIO. 'csmdd10'=>'', //Histórica de compras del comprador (Num transacciones). NO MANDATORIO. 'csmdd11'=>'', //Customer Cell Phone. NO MANDATORIO. );
零售
以下参数必须特别为零售垂直发送。此外,还必须发送涉及交易的每个产品的具体数据。
$datos_retail = array( 'csstcity'=>'rosario', //Ciudad de envío de la orden. MANDATORIO. 'csstcountry'=>'', //País de envío de la orden. MANDATORIO. 'csstemail'=>'jose@gmail.com', //Mail del destinatario, MANDATORIO. 'csstfirstname'=>'Jose', //Nombre del destinatario. MANDATORIO. 'csstlastname'=>'Perez', //Apellido del destinatario. MANDATORIO. 'csstphonenumber'=>'541155893737', //Número de teléfono del destinatario. MANDATORIO. 'csstpostalcode'=>'1414', //Código postal del domicilio de envío. MANDATORIO. 'csststate'=>'D', //Provincia de envío. MANDATORIO. Son de 1 caracter 'csststreet1'=>'San Martín 123', //Domicilio de envío. MANDATORIO. 'csststreet2'=>'San Luis', //Localidad de envío. NO MANDATORIO. 'csmdd12'=>'',//Shipping DeadLine (Num Dias). NO MADATORIO. 'csmdd13'=>'',//Método de Despacho. NO MANDATORIO. 'csmdd14'=>'',//Customer requires Tax Bill ? (Y/N). NO MANDATORIO. 'csmdd15'=>'',//Customer Loyality Number. NO MANDATORIO. 'csmdd16'=>'',//Promotional / Coupon Code. NO MANDATORIO. ); //Datos de productos, un array con los diferentes productos involucrados. $productos = array( array( // Producto 1 'csitproductcode'=>'electronic_good', //Código de producto. MANDATORIO. Valores posibles(adult_content;coupon;default;electronic_good;electronic_software;gift_certificate;handling_only;service;shipping_and_handling;shipping_only;subscription) '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'=>'1254.40', //CSITTOTALAMOUNT=CSITUNITPRICE*CSITQUANTITY "999999[.CC]" Con decimales opcional usando el puntos como separador de decimales. No se permiten comas, ni como separador de miles ni como separador de decimales. MANDATORIO. 'csitquantity'=>'1', //Cantidad del producto. MANDATORIO. 'csitunitprice'=>'1254.40', //Formato Idem CSITTOTALAMOUNT. MANDATORIO ), array( // Producto 2 'csitproductcode'=>'default', //Código de producto. MANDATORIO. Valores posibles(adult_content;coupon;default;electronic_good;electronic_software;gift_certificate;handling_only;service;shipping_and_handling;shipping_only;subscription) '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'=>'248.40', //CSITTOTALAMOUNT=CSITUNITPRICE*CSITQUANTITY "999999[.CC]" Con decimales opcional usando el puntos como separador de decimales. No se permiten comas, ni como separador de miles ni como separador de decimales. MANDATORIO. 'csitquantity'=>'1', //Cantidad del producto. MANDATORIO. 'csitunitprice'=>'248.40', //Formato Idem CSITTOTALAMOUNT. MANDATORIO ), ......... // Otros productos );
要将这些数据包含在初始要求中,必须以以下方式实例化 Decidir\Data\Cybersource\Retail
类。
//Se combinan los datos de retail con los comunes $datos_cs = array_merge($datos_comunes, $datos_retail); $cybersource = new Decidir\Data\Cybersource\Retail( $datos_cs, // Datos de la operación $productos, // Datos de los productos ); //Se agregan los datos el requerimiento inicial $sar_data->setCybersourceData($cybersource);
旅行
以下参数必须特别为旅行垂直发送。此外,还必须发送涉及交易的每个乘客的具体数据。
$datos_travel = array( 'csdmcompleteroute'=>'JFK-SFO:SFO-LAX', //Ruta completa del viaje, ORIG1-DEST1[:ORIG2-DEST2...:ORIGn-DESTn]. MANDATORIO. 'csdmjourneytypey'=>'round trip', //Tipo de viaje. valores posibles: round trip o one way. MANDATORIO. 'csdmdeparturedatetime'=>'2011-03-20 11:30pm GMT', /* Fecha y hora del primer tramo del viaje. Utilizar GMT. Formato: yyyy-MM-dd hh:mma z donde: hh = hora en formato 12-horas a = am o pm z = huso horario del vuelo de salida. Por ejemplo: Si la compañía tiene su sede en la ciudad de A, pero el vuelo sale de la ciudad B, z es el horario de la ciudad B al momento de la salida MANDATORIO */ 'csadnumberofpassengers'=>'4', //Cantidad total de pasajeros. MANDATORIO. 'csmdd17'=>'AWHWNV', //Código de Reserva (PNR). MANDATORIO. 'csmdd18'=>'N', //3rd Party Booking? (Y/N). MANDATORIO. 'csmdd19'=>'', //Departure City. NO MANDATORIO. 'csmdd20'=>'', //Final Destination City. NO MANDATORIO. 'csmdd21'=>'', //International Flight. NO MANDATORIO. 'csmdd22'=>'', //Frequent Flyer Number. NO MANDATORIO. 'csmdd23'=>'', //Class of Service. NO MANDATORIO. 'csmdd24'=>'', //Day of week of Flight. NO MANDATORIO. 'csmdd25'=>'', //Week of year of Flight. NO MANDATORIO. 'csmdd26'=>'', //Airline Code. NO MANDATORIO. 'csmdd27'=>'', //Code Share. NO MANDATORIO. ); //Datos de pasajeros, un array con los diferentes pasajeros involucrados. $pasajeros = array( array( // Pasajero 1 'csitpassengeremail'=>'jperez@hotmail.com', //Email del pasajero. MANDATORIO. 'csitpassengerfirstname'=>'Juan', //Nombre del pasajero. MANDATORIO. 'csitpassengerid'=>'11123123', //Número de pasaporte. NO MANDATORIO. 'csitpassengerlastname'=>'Perez', //Apellido del pasajero. MANDATORIO. 'csitpassengerphone'=>'541145454545', //Número de teléfono del pasajero. MANDATORIO. 'csitpassengerstatus'=>'gold', //Clasificación del pasajero dentro de la empresa. MANDATORIO. 'csitpassengertype'=>'INF', //Tipo de pasajero asociado al precio del pasaje. MANDATORIO.(ADT: Adult,CNN: Child,INF: Infant,YTH: Youth,STU: Student,SCR: Senior Citizen,MIL: Military) ), array( // Pasajero 2 'csitpassengeremail'=>'jperez@hotmail.com', //Email del pasajero. MANDATORIO. 'csitpassengerfirstname'=>'Juan', //Nombre del pasajero. MANDATORIO. 'csitpassengerid'=>'12123123', //Número de pasaporte. NO MANDATORIO. 'csitpassengerlastname'=>'Perez', //Apellido del pasajero. MANDATORIO. 'csitpassengerphone'=>'541145454546', //Número de teléfono del pasajero. MANDATORIO. 'csitpassengerstatus'=>'gold', //Clasificación del pasajero dentro de la empresa. MANDATORIO. 'csitpassengertype'=>'INF', //Tipo de pasajero asociado al precio del pasaje. MANDATORIO.(ADT: Adult,CNN: Child,INF: Infant,YTH: Youth,STU: Student,SCR: Senior Citizen,MIL: Military) ), ......... // Otros pasajeros );
要将这些数据包含在初始要求中,必须以以下方式实例化 Decidir\Data\Cybersource\Travel
类。
//Se combinan los datos de travel con los comunes $datos_cs = array_merge($datos_comunes, $datos_travel); $cybersource = new Decidir\Data\Cybersource\Travel( $datos_cs, // Datos de la operación $pasajeros, // Datos de los pasajeros ); //Se agregan los datos el requerimiento inicial $sar_data->setCybersourceData($cybersource);
票务
以下参数必须特别为票务垂直发送。此外,还必须发送涉及交易的每个产品的具体数据。
$datos_ticketing = array( 'csmdd33'=> 15, //Número de días en los que se desarrollara el evento. MANDATORIO 'csmdd34'=>'Email', //Tipo de envío. MANDATORIO. Valores posibles: Pick up, Email, Smartphone, Other ); //Datos de productos, un array con los diferentes productos involucrados. $productos = array( array( // Producto 1 'csitproductcode'=>'electronic_good', //Código de producto. MANDATORIO. Valores posibles(adult_content;coupon;default;electronic_good;electronic_software;gift_certificate;handling_only;service;shipping_and_handling;shipping_only;subscription) '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'=>'1254.40', //CSITTOTALAMOUNT=CSITUNITPRICE*CSITQUANTITY "999999[.CC]" Con decimales opcional usando el puntos como separador de decimales. No se permiten comas, ni como separador de miles ni como separador de decimales. MANDATORIO. 'csitquantity'=>'1', //Cantidad del producto. MANDATORIO. 'csitunitprice'=>'1254.40', //Formato Idem CSITTOTALAMOUNT. MANDATORIO ), array( // Producto 2 'csitproductcode'=>'default', //Código de producto. MANDATORIO. Valores posibles(adult_content;coupon;default;electronic_good;electronic_software;gift_certificate;handling_only;service;shipping_and_handling;shipping_only;subscription) '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'=>'248.40', //CSITTOTALAMOUNT=CSITUNITPRICE*CSITQUANTITY "999999[.CC]" Con decimales opcional usando el puntos como separador de decimales. No se permiten comas, ni como separador de miles ni como separador de decimales. MANDATORIO. 'csitquantity'=>'1', //Cantidad del producto. MANDATORIO. 'csitunitprice'=>'248.40', //Formato Idem CSITTOTALAMOUNT. MANDATORIO ), ......... // Otros productos );
要将这些数据包含在初始要求中,必须以以下方式实例化 Decidir\Data\Cybersource\Ticketing
类。
//Se combinan los datos de ticketing con los comunes $datos_cs = array_merge($datos_comunes, $datos_ticketing); $cybersource = new Decidir\Data\Cybersource\Ticketing( $datos_cs, // Datos de la operación $productos, // Datos de los productos ); //Se agregan los datos el requerimiento inicial $sar_data->setCybersourceData($cybersource);
服务
以下参数必须特别为服务垂直发送。此外,还必须发送涉及交易的每个产品的具体数据。
$datos_services = array( 'csmdd28'=>'Gas', //Tipo de Servicio. MANDATORIO. Valores posibles: Luz, Gas, Telefono, Agua, TV, Cable, Internet, Impuestos. 'csmdd29'=>'', //Referencia de pago del servicio 1. NO MANDATORIO. 'csmdd30'=>'', //Referencia de pago del servicio 2. NO MANDATORIO. 'csmdd31'=>'', //Referencia de pago del servicio 3. NO MANDATORIO. ); //Datos de productos, un array con los diferentes productos involucrados. $productos = array( array( // Producto 1 'csitproductcode'=>'electronic_good', //Código de producto. MANDATORIO. Valores posibles(adult_content;coupon;default;electronic_good;electronic_software;gift_certificate;handling_only;service;shipping_and_handling;shipping_only;subscription) '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'=>'1254.40', //CSITTOTALAMOUNT=CSITUNITPRICE*CSITQUANTITY "999999[.CC]" Con decimales opcional usando el puntos como separador de decimales. No se permiten comas, ni como separador de miles ni como separador de decimales. MANDATORIO. 'csitquantity'=>'1', //Cantidad del producto. MANDATORIO. 'csitunitprice'=>'1254.40', //Formato Idem CSITTOTALAMOUNT. MANDATORIO ), array( // Producto 2 'csitproductcode'=>'default', //Código de producto. MANDATORIO. Valores posibles(adult_content;coupon;default;electronic_good;electronic_software;gift_certificate;handling_only;service;shipping_and_handling;shipping_only;subscription) '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'=>'248.40', //CSITTOTALAMOUNT=CSITUNITPRICE*CSITQUANTITY "999999[.CC]" Con decimales opcional usando el puntos como separador de decimales. No se permiten comas, ni como separador de miles ni como separador de decimales. MANDATORIO. 'csitquantity'=>'1', //Cantidad del producto. MANDATORIO. 'csitunitprice'=>'248.40', //Formato Idem CSITTOTALAMOUNT. MANDATORIO ), ......... // Otros productos );
为了将数据纳入初始需求,需要按照以下方式实例化类 Decidir\Data\Cybersource\Services
的对象。
//Se combinan los datos de services con los comunes $datos_cs = array_merge($datos_comunes, $datos_services); $cybersource = new Decidir\Data\Cybersource\Services( $datos_cs, // Datos de la operación $productos, // Datos de los productos ); //Se agregan los datos el requerimiento inicial $sar_data->setCybersourceData($cybersource);
数字商品
以下参数必须特别发送以供数字商品行业使用。此外,还需要发送涉及交易的具体产品数据。
$datos_digitalgoods = array( 'csmdd31'=>'', //Tipo de delivery. MANDATORIO. Valores posibles: WEB Session, Email, SmartPhone ); //Datos de productos, un array con los diferentes productos involucrados. $productos = array( array( // Producto 1 'csitproductcode'=>'electronic_good', //Código de producto. MANDATORIO. Valores posibles(adult_content;coupon;default;electronic_good;electronic_software;gift_certificate;handling_only;service;shipping_and_handling;shipping_only;subscription) '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'=>'1254.40', //CSITTOTALAMOUNT=CSITUNITPRICE*CSITQUANTITY "999999[.CC]" Con decimales opcional usando el puntos como separador de decimales. No se permiten comas, ni como separador de miles ni como separador de decimales. MANDATORIO. 'csitquantity'=>'1', //Cantidad del producto. MANDATORIO. 'csitunitprice'=>'1254.40', //Formato Idem CSITTOTALAMOUNT. MANDATORIO ), array( // Producto 2 'csitproductcode'=>'default', //Código de producto. MANDATORIO. Valores posibles(adult_content;coupon;default;electronic_good;electronic_software;gift_certificate;handling_only;service;shipping_and_handling;shipping_only;subscription) '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'=>'248.40', //CSITTOTALAMOUNT=CSITUNITPRICE*CSITQUANTITY "999999[.CC]" Con decimales opcional usando el puntos como separador de decimales. No se permiten comas, ni como separador de miles ni como separador de decimales. MANDATORIO. 'csitquantity'=>'1', //Cantidad del producto. MANDATORIO. 'csitunitprice'=>'248.40', //Formato Idem CSITTOTALAMOUNT. MANDATORIO ), ......... // Otros productos );
为了将数据纳入初始需求,需要按照以下方式实例化类 Decidir\Data\Cybersource\DigitalGoods
的对象。
//Se combinan los datos de digitalgoods con los comunes $datos_cs = array_merge($datos_comunes, $datos_digitalgoods); $cybersource = new Decidir\Data\Cybersource\DigitalGoods( $datos_cs, // Datos de la operación $productos, // Datos de los productos ); //Se agregan los datos el requerimiento inicial $sar_data->setCybersourceData($cybersource);
聚合商家
需要将以下额外的 VISA 数据添加到 SendAuthorizeRequest 的初始需求中,用于聚合商家。
需要使用特定参数实例化类 Decidir\Data\ComerciosAgregadores
的对象。
$agregadores = new Decidir\Data\ComerciosAgregadores( array( 'aindicador'=>0, //Indicador del tipo de documento. Numérico, 1 dígito. Valores posibles(0:cuit, 1:cuil, 2:número único). 'adocumento'=>'2325xxxxxx9', //Número de CUIT, CUIL o Número Único(en el último caso se debe completar con ceros a la izquierda) 'afactpagar'=>'c0000234321', //Número de factura a pagar. Alfanumérico de 12 caracteres. 'afactdevol'=>'c0000234320', // Número de factura de anulación/devolución, 'anombrecom'=>'jorge/Rufalo', //Nombre del comercio o nombre y apellido del vendedor. Alfanumérico 20 caracteres. en el caso de nombre y apellido debe estar separado por "/". 'adomiciliocomercio'=>'Salta', //Dirección del comercio o vendedor. Alfanumérico 20 caracteres. 'anropuerta'=>'153', //Número de puerta. Alfanumérico 6 caracteres 'acodpostal'=>'H3509XAP', //Código postal. Alfanumérico de 8 caracteres. 'arubro'=>'', //Código de actividad (rubro). Alfanumérico de 5 caracteres. 'acodcanal'=>'', //Código de canal. Alfanumérico de 3 caracteres. 'acodgeografico'=>'',//Código geográfico del vendedor. Alfanumérico de 5 caracteres. ));
然后将此信息包含在数据对象中
$sar_data->setAgregadoresData($agregadores);
交易拆分
需要将以下额外数据添加到 SendAuthorizeRequest 的初始需求中,以执行交易拆分。
固定金额
需要使用特定参数实例化类 Decidir\Data\SplitTransacciones\MontoFijo
的对象。
$split = new Decidir\Data\SplitTransacciones\MontoFijo( array( 'impdist'=>'123.4#12#12.05',//Importe de cada una de las substransacciones. Los importes deben postearse separados por "#". 'sitedist'=>'00100511#0234803245#00230031',//Número de comercio de cada uno de los subcomercios asociados al comercio padre 'cuotasdist'=>'01#06#24',//cantidad de cuotas para cada subcomercio. Decimal de 2 dígitos. 'idmodalidad'=>'S',// indica si la transacción es distribuida. (S= transacción distribuida; N y null = no distribida) ));
然后将此信息包含在数据对象中
$sar_data->setSplitData($split);
百分比
需要使用特定参数实例化类 Decidir\Data\SplitTransacciones\Porcentaje
的对象。
$split = new Decidir\Data\SplitTransacciones\Porcentaje( array( 'idmodalidad'=>'S',// indica si la transacción es distribuida. (S= transacción distribuida; N y null = no distribida) ));
然后将此信息包含在数据对象中
$sar_data->setSplitData($split);
GetAuthorizeAnswer
属于 Authorize 服务的 GetAuthorizeAnswer 操作必须按照以下方式调用:创建一个类 Decidir\Authorize\GetAuthorizeAnswer\Data
的实例,其中包含请求参数
$gaa_data = new Decidir\Authorize\GetAuthorizeAnswer\Data( array( "security" => 'RV82RVHO5T0O5CZUUTX2FLHU', // Mandatorio. Código provisto por Decidir "merchant" => 22067736, // Mandatorio. Nro. de Comercio provisto por Decidir "requestKey" => '6bb242a3-d8c5-fcd8-57ef-3bb0280b6db4', // Mandatorio. Private Request Key devuelta por el requerimiento SendAuthorizeRequest "answerKey" => '77215fe6-f9d5-f1c2-372b-c0065e0c4429', // Mandatorio. Answer Key devuelta por la función callback del formulario de pago. ));
然后,通过传递前面创建的对象调用服务
$gaa_rta = $connector->Authorize()->getAuthorizeAnswer($gaa_data);
它将返回一个 Decidir\Authorize\GetAuthorizeAnswer\Response
类的实例
$gaa_rta->getStatusMessage(); // Mensaje del estado del requerimiento $gaa_rta->getStatusCode(); // Código de estado $gaa_rta->getAuthorizationKey(); // Authorization Key $gaa_rta->getPayload(); // Array asociativo <clave=>valor> con información adicional.
Execute
属于 Authorize 服务的 Execute 操作允许对交易执行不同的操作,如下所述。
取消
为了执行交易的取消,需要创建一个类 Decidir\Authorize\Execute\Anulacion
的实例,其中包含请求参数
$anul_data = new Decidir\Authorize\Execute\Anulacion( array( "security" => 'RV82RVHO5T0O5CZUUTX2FLHU', // Mandatorio. Código provisto por Decidir "merchant" => 22067736, // Mandatorio. Nro. de Comercio provisto por Decidir "nro_operacion" => 123456, // Mandatorio. Nro. de Operación. ));
然后,通过传递前面创建的对象调用服务
$anul_rta = $connector->Authorize()->execute($anul_data);
它将返回一个 Decidir\Authorize\Execute\Response
类的实例
$anul_rta->getStatusMessage(); // Mensaje del estado del requerimiento $anul_rta->getStatusCode(); // Código de estado $anul_rta->getAuthorizationKey(); // Authorization Key $anul_rta->getPayload(); // Array asociativo <clave=>valor> con información adicional.
全额退款
为了执行交易的退款,需要创建一个类 Decidir\Authorize\Execute\Devolucion\Total
的实例,其中包含请求参数
$devol_data = new Decidir\Authorize\Execute\Devolucion\Total( array( "security" => 'RV82RVHO5T0O5CZUUTX2FLHU', // Mandatorio. Código provisto por Decidir "merchant" => 22067736, // Mandatorio. Nro. de Comercio provisto por Decidir "nro_operacion" => 123456, // Mandatorio. Nro. de Operación. ));
然后,通过传递前面创建的对象调用服务
$devol_rta = $connector->Authorize()->execute($devol_data);
它将返回一个 Decidir\Authorize\Execute\Response
类的实例
$devol_rta->getStatusMessage(); // Mensaje del estado del requerimiento $devol_rta->getStatusCode(); // Código de estado $devol_rta->getAuthorizationKey(); // Authorization Key $devol_rta->getPayload(); // Array asociativo <clave=>valor> con información adicional.
部分退款
为了执行交易的部分退款,需要创建一个类 Decidir\Authorize\Execute\Devolucion\Parcial
的实例,其中包含请求参数
$devol_data = new Decidir\Authorize\Execute\Devolucion\Parcial( array( "security" => 'RV82RVHO5T0O5CZUUTX2FLHU', // Mandatorio. Código provisto por Decidir "merchant" => 22067736, // Mandatorio. Nro. de Comercio provisto por Decidir "nro_operacion" => 123456, // Mandatorio. Nro. de Operación. "monto" => 12.00, // Mandatorio. Monto a devolver. ));
然后,通过传递前面创建的对象调用服务
$devol_rta = $connector->Authorize()->execute($devol_data);
它将返回一个 Decidir\Authorize\Execute\Response
类的实例
$devol_rta->getStatusMessage(); // Mensaje del estado del requerimiento $devol_rta->getStatusCode(); // Código de estado $devol_rta->getAuthorizationKey(); // Authorization Key $devol_rta->getPayload(); // Array asociativo <clave=>valor> con información adicional.
GetByOperationId
属于 Operation 服务的 GetByOperationId 操作允许在线查询交易的最新状态,必须按照以下方式调用:创建一个类 Decidir\Operation\GetByOperationId\Data
的实例,其中包含请求参数
$gboi_data = new Decidir\Operation\GetByOperationId\Data( array( "idsite" => 22067736, // Mandatorio. Nro. de Comercio provisto por Decidir "idtransactionsit" => 123456, // Mandatorio. Nro. de operación único y propio del comercio ));
然后,通过传递前面创建的对象调用服务
$gboi_rta = $connector->Operation()->getByOperationId($gboi_data);
它将返回一个 Decidir\Operation\GetByOperationId\Response
类的实例
$gboi_rta->getStatusMessage(); // Mensaje del estado del requerimiento $gboi_rta->getStatusCode(); // Código de estado $gboi_rta->getEstado_descri(); // Estado de la transacción ......
参考表
支付方式代码
支付方式 | 名称 |
---|---|
1 | visa |
6 | 美洲Express |
8 | 大来卡 |
15 | 万事达卡 |
20 | 万事达卡测试 |
23 | 购物卡 |
24 | 橙卡 |
25 | 付款易 |
26 | 拉皮帕戈 |
27 | 卡巴尔 |
29 | 伊塔尔克雷德 |
30 | 阿根廷卡 |
31 | visa借记卡 |
34 | COOPEPLUS |
36 | ARCASH |
37 | NEXO |
38 | CREDIMAS |
39 | 内华达 |
41 | 付款我的账户 |
42 | 原生的 |
43 | MAS/CENCOSUD信用卡 |
44 | CETELEM |
45 | NACIONPYMES |
46 | PAYSAFECARD |
47 | 在线钱包 |
48 | 支付箱 |
状态代码
状态ID | 描述 |
---|---|
1 | 已录入 |
2 | 正在处理 |
3 | 已处理 |
4 | 已授权 |
5 | 拒绝 |
6 | 已确认 |
7 | 已取消 |
8 | 取消确认 |
9 | 已退货 |
10 | 退货确认 |
11 | 预授权 |
12 | 过期 |
13 | 授权未完成 |
14 | 授权(*) |
15 | 准备撤销 |
16 | 注册到Visa |
17 | Visa开始验证 |
18 | 发送至Visa验证 |
19 | Visa验证OK |
20 | 从Visa接收 |
21 | Visa验证不OK |
22 | 已生成发票 |
23 | 未生成发票 |
24 | 未认证拒绝 |
25 | 无效数据拒绝 |
28 | 注册到IdValidador |
29 | 发送至IdValidador |
32 | 未验证拒绝 |
38 | 购买超时 |
50 | 已录入分发 |
51 | 被分组拒绝 |
52 | 被分组取消 |
省份
省份 | 代码 |
---|---|
CABA | C |
布宜诺斯艾利斯 | B |
卡塔马卡 | K |
查科 | H |
楚布特 | U |
科尔多瓦 | X |
科连特斯 | W |
恩特雷里奥斯 | R |
福尔摩萨 | P |
胡胡伊 | Y |
拉潘帕 | L |
拉里奥哈 | F |
门多萨 | M |
米森特斯 | N |
内乌肯 | Q |
里奥内格罗 | R |
萨尔特 | A |
圣胡安 | J |
圣路易斯 | D |
圣克鲁斯 | Z |
圣菲 | S |
圣地亚哥德尔埃斯特罗 | G |
火地岛 | V |
图库曼 | T |