ayuda con PHP y SDK

909 views
Skip to first unread message

Alexandrox92

unread,
Apr 30, 2015, 11:45:08 AM4/30/15
to desarrollador...@googlegroups.com

Tengo un script sencillo para hacer una prueba pero sale que datos no validos.

Mi codigo (datos de ejemplo):

<?php
require_once
'pay/lib/PayU.php';


$reference
= "payment_test_00000xxzxzxzx001";
$value
= "10000";

$parameters
= array(
   
//Ingrese aquí el identificador de la cuenta.
   
PayUParameters::ACCOUNT_ID => "500538",
   
//Ingrese aquí el código de referencia.
   
PayUParameters::REFERENCE_CODE => $reference,
   
//Ingrese aquí la descripción.
   
PayUParameters::DESCRIPTION => "payment test",
   
   
// -- Valores --
   
//Ingrese aquí el valor.      
   
PayUParameters::VALUE => $value,
   
//Ingrese aquí la moneda.
   
PayUParameters::CURRENCY => "COP",
   
   
// -- Comprador
   
//Ingrese aquí el nombre del comprador.
   
PayUParameters::BUYER_NAME => "First name and second buyer name",
   
//Ingrese aquí el email del comprador.
   
PayUParameters::BUYER_EMAIL => "otroa...@hotmail.com",
   
//Ingrese aquí el teléfono de contacto del comprador.
   
PayUParameters::BUYER_CONTACT_PHONE => "7563126",
   
//Ingrese aquí el documento de contacto del comprador.
   
PayUParameters::BUYER_DNI => "5415668464654",
   
//Ingrese aquí la dirección del comprador.
   
PayUParameters::BUYER_STREET => "calle 100",
   
PayUParameters::BUYER_STREET_2 => "5555487",
   
PayUParameters::BUYER_CITY => "Medellin",
   
PayUParameters::BUYER_STATE => "Antioquia",
   
PayUParameters::BUYER_COUNTRY => "CO",
   
PayUParameters::BUYER_POSTAL_CODE => "000000",
   
PayUParameters::BUYER_PHONE => "7563126",
   
   
// -- pagador --
   
//Ingrese aquí el nombre del pagador.
   
PayUParameters::PAYER_NAME => "First name and second payer name",
   
//Ingrese aquí el email del pagador.
   
PayUParameters::PAYER_EMAIL => "alg...@gmail.com",
   
//Ingrese aquí el teléfono de contacto del pagador.
   
PayUParameters::PAYER_CONTACT_PHONE => "7563126",
   
//Ingrese aquí el documento de contacto del pagador.
   
PayUParameters::PAYER_DNI => "5415668464654",
   
//Ingrese aquí la dirección del pagador.
   
PayUParameters::PAYER_STREET => "calle 93",
   
PayUParameters::PAYER_STREET_2 => "125544",
   
PayUParameters::PAYER_CITY => "Bogota",
   
PayUParameters::PAYER_STATE => "Bogota",
   
PayUParameters::PAYER_COUNTRY => "CO",
   
PayUParameters::PAYER_POSTAL_CODE => "000000",
   
PayUParameters::PAYER_PHONE => "7563126",
   
   
// -- Datos de la tarjeta de crédito --
   
//Ingrese aquí el número de la tarjeta de crédito
   
PayUParameters::CREDIT_CARD_NUMBER => "4111111111111111",
   
//Ingrese aquí la fecha de vencimiento de la tarjeta de crédito
   
PayUParameters::CREDIT_CARD_EXPIRATION_DATE => "2015/01",
   
//Ingrese aquí el código de seguridad de la tarjeta de crédito


   
PayUParameters::processWithoutCvv2 => true,

   
PayUParameters::CREDIT_CARD_SECURITY_CODE=> "000",
   
//Ingrese aquí el nombre de la tarjeta de crédito
   
//PaymentMethods::VISA||PaymentMethods::MASTERCARD||PaymentMethods::AMEX||PaymentMethods::DINERS
   
PayUParameters::PAYMENT_METHOD => PaymentMethods::VISA,
   
   
//Ingrese aquí el número de cuotas.
   
PayUParameters::INSTALLMENTS_NUMBER => "1",
   
//Ingrese aquí el nombre del pais.
   
PayUParameters::COUNTRY => PayUCountries::CO,
   
   
//Session id del device.
   
PayUParameters::DEVICE_SESSION_ID => "vSSghs6tvkcle931686k1900o6e1",
   
//IP del pagadador
   
PayUParameters::IP_ADDRESS => "127.0.0.1",
   
//Cookie de la sesión actual.
   
PayUParameters::PAYER_COOKIE=>"Ept1t38347bs6jc9ruv2ecpv7o2",
   
//Cookie de la sesión actual.      
   
PayUParameters::USER_AGENT=>"Mozilla/5.0 (Windows NT 5.1; rv:18.0) Gecko/20100101 Firefox/18.0"
);
   
$response
= PayUPayments::doAuthorizationAndCapture($parameters);

if ($response) {
    $response
->transactionResponse->orderId;
    $response
->transactionResponse->transactionId;
    $response
->transactionResponse->state;
   
if ($response->transactionResponse->state=="PENDING") {
        $response
->transactionResponse->pendingReason;    
   
}
    $response
->transactionResponse->paymentNetworkResponseCode;
    $response
->transactionResponse->paymentNetworkResponseErrorMessage;
    $response
->transactionResponse->trazabilityCode;
    $response
->transactionResponse->responseCode;
    $response
->transactionResponse->responseMessage;      
}



mi archivo de configuracion (Mis datos son el usuario aprobado para pruebas en colombia)

/**
 *
 * Holds basic request information
 *
 * @author PayU Latam
 * @since 1.0.0
 * @version 1.0.0, 20/10/2013
 *
 */
abstract class PayU {
    
    /**
     * Api version
     */
    const  API_VERSION = "4.0.1";

    /**
     * Api name
     */
    const  API_NAME = "PayU SDK";
    
    
    const API_CODE_NAME = "PAYU_SDK";

    /**
     * The method invocation is for testing purposes
     */
    public static $isTest = true;

    /**
     * The merchant API key
     */
    public static  $apiKey =  "6u39nqhq8tfd0hlvnjfs66eh8c";

    /**
     * The merchant API Login
     */
    public static  $apiLogin = "11959c415b33d0c";

    /**
     * The merchant Id
     */
    public static  $merchantId = "500238";

    /**
     * The request language
     */
    public static $language = SupportedLanguages::ES;
    

}


No logro hacer mi primera prueba, ayuda.
Estoy trabajando con el SDK, en donde o con que parámetros debo configurar direcciones de envío y  respuesta ?
Gracias.

ADMIN

unread,
Apr 30, 2015, 11:55:23 AM4/30/15
to desarrollador...@googlegroups.com
Hola Alexandro.

Revisando el código encontré dos cosas:

1. El parámetro PayUParameters::proprocessWithoutCvv2 debe ir en mayúsculas: PayUParameters::PROCESS_WITHOUT_CVV2

2. Te recomiendo que la configuración no la realices en la clase PayU. Es mejor que la realices en otra clase o método de la siguiente forma:

PayU::$apiKey = "6u39nqhq8ftd0hlvnjfs66eh8c";
PayU::$apiLogin = "11959c415b33d0c";
PayU::$merchantId = "500238";
PayU::$language = SupportedLanguages::EN;
PayU::$isTest = false;

De esta forma puedes alternan entre pruebas y producción sólo cambiando un parámetro. Mira este ejemplo básico:

$ambiente=1;
if($ambiente==1){
   
   
PayU::$apiKey = "53l**************il5"; //Ingrese aquí su propio apiKey.
   
PayU::$apiLogin = "ba************f2a3"; //Ingrese aquí su propio apiLogin.
   
PayU::$merchantId = "500199"; //Ingrese aquí su Id de Comercio.
   
PayU::$language = SupportedLanguages::ES; //Seleccione el idioma.
   
PayU::$isTest = false; //Dejarlo verdadero cuando sean pruebas.
}else if($ambiente==2){
   
PayU::$apiKey = "6u39nqhq8ftd0hlvnjfs66eh8c"; //Ingrese aquí su propio apiKey.
   
PayU::$apiLogin = "11959c415b33d0c"; //Ingrese aquí su propio apiLogin.
   
PayU::$merchantId = "500238"; //Ingrese aquí su Id de Comercio.
   
PayU::$language = SupportedLanguages::ES; //Seleccione el idioma.
   
PayU::$isTest = true; //Dejarlo verdadero cuando sean pruebas con tarjeta de crédito.
   
//URL de pagos
   
Environment::setPaymentsCustomUrl("https://stg.api.payulatam.com/payments-api/4.0/service.cgi");
   
//URL de Reportes
   
Environment::setReportsCustomUrl("https://stg.api.payulatam.com/reports-api/4.0/service.cgi");
   
//URL de Suscripciones a planes
   
Environment::setSubscriptionsCustomUrl("https://stg.api.payulatam.com/payments-api/rest/v4.3/");
}



Una pregunta:

¿A qué te refieres con "direcciones de envío y  respuesta"?



Quedamos atetentos.

Alexandrox92

unread,
Apr 30, 2015, 3:38:50 PM4/30/15
to desarrollador...@googlegroups.com
Muchas gracias ya logro hacer pagos sin embargo lo he logrado encontrar un ejemplo de pagina de respuesta (En algún lugar lo vi) pueden facilitármelo ?

Otra cosa, en el ambiente de pruebas y utilizando los datos de las cuentas de pruebas que ustedes suministran ¿ en donde puedo modificar la URL de la pagina de respuesta para hacer dichas pruebas ?

UPS y una  ultima, es posible modificar el template del correo que llega a los clientes ?
Gracias.

ADMIN

unread,
Apr 30, 2015, 3:45:39 PM4/30/15
to desarrollador...@googlegroups.com
Hola Alxandro.

Descarga la última version del SDK aqui: http://developers.payulatam.com/es/sdk/

Se incluyeron dos nuevos parámetros para la página de respuesta y de confirmación.

PayUParameters::NOTIFY_URL=>"https://www.testes.com/notify",
PayUParameters::RESPONSE_URL=>"https://www.testes.com/response"

Lo referente a como funcionan estas, lo puedes encontrar en la integración WebCheckout, en las secciones "Página de respuesta" y "Página de confiración". Adicionalmente aquí podrás encontrar los parámetros que se usan en este tipo de integraciones.

Alexandrox92

unread,
May 4, 2015, 9:53:22 AM5/4/15
to desarrollador...@googlegroups.com
Muchas gracias, en verdad necesitaba modificar la URL de respuesta para pruebas.

Una vez en producción puedo manejar varias paginas de respuesta ya que se incluyeron estos parámetros ?
Es decir:

script 1 la pagina de respuesta sea http://ejemplo.com/recibea
script 2 la pagina de respuesta sea http://ejemplo.com/recibeb

? claro, utilizando el mismo dominio siempre, es possible ?
en caso de que se pueda que debo hacer el en panel de PayU en la parte de pagina de respuesta ?

Gracias Nuevamente.

Gracias.

ADMIN

unread,
May 4, 2015, 10:01:41 AM5/4/15
to desarrollador...@googlegroups.com

Hola Alexandro.

Claro que podrás. Tiene prioridad la url de respuesta o confirmación que envíes en la petición. Si tienes una configurada en PayU Biz (panel), pero envías una en la petición de pago, nuestro sistema utilizará la envíada en la petición de pago. SI no envías ninguna, entonces se tomará la configurada en Payu Biz.

Puedes utilizar las url de respuesta o confirmación que desees para cada petición.

 

DP

unread,
May 19, 2015, 9:20:15 AM5/19/15
to desarrollador...@googlegroups.com
Buenas amigo ADMIN,

scribo porque de verdad he tratado de pdoer integrar la versión SDK en PHP para el pago con tarjetas de crédito pero no he podido, las páginas no me dan ninguna respuesta, se queda en blanco.

Esta es la version de pruebas de PayU.PHP dentro de la carpeta "lib"

<?php

require_once ('PayU/api/SupportedLanguages.php');
require_once ('PayU/api/PayUKeyMapName.php');
require_once ('PayU/api/PayUCommands.php');
require_once ('PayU/api/PayUTransactionResponseCode.php');
require_once ('PayU/api/PayUHttpRequestInfo.php');
require_once ('PayU/api/PayUResponseCode.php');
require_once ('PayU/api/PayuPaymentMethodType.php');
require_once ('PayU/api/PaymentMethods.php');
require_once ('PayU/api/PayUCountries.php');
require_once ('PayU/exceptions/PayUErrorCodes.php');
require_once ('PayU/exceptions/PayUException.php');
require_once ('PayU/exceptions/ConnectionException.php');
require_once ('PayU/api/PayUConfig.php');
require_once ('PayU/api/RequestMethod.php');
require_once ('PayU/util/SignatureUtil.php');
require_once ('PayU/api/PaymentMethods.php');
require_once ('PayU/api/TransactionType.php');
require_once ('PayU/util/PayURequestObjectUtil.php');
require_once ('PayU/util/PayUParameters.php');
require_once ('PayU/util/CommonRequestUtil.php');
require_once ('PayU/util/RequestPaymentsUtil.php');
require_once ('PayU/util/UrlResolver.php');
require_once ('PayU/util/PayUReportsRequestUtil.php');
require_once ('PayU/util/PayUTokensRequestUtil.php');
require_once ('PayU/util/PayUSubscriptionsRequestUtil.php');
require_once ('PayU/util/PayUSubscriptionsUrlResolver.php');
require_once ('PayU/util/HttpClientUtil.php');
require_once ('PayU/util/PayUApiServiceUtil.php');

require_once ('PayU/api/Environment.php');

require_once ('PayU/PayUBankAccounts.php');
require_once ('PayU/PayUPayments.php');
require_once ('PayU/PayUReports.php');
require_once ('PayU/PayUTokens.php');
require_once ('PayU/PayUSubscriptions.php');
require_once ('PayU/PayUCustomers.php');
require_once ('PayU/PayUSubscriptionPlans.php');
require_once ('PayU/PayUCreditCards.php');
require_once ('PayU/PayURecurringBill.php');
require_once ('PayU/PayURecurringBillItem.php');
public static  $apiKey = "6u39nqhq8ftd0hlvnjfs66eh8c";

/**
* The merchant API Login
*/
public static  $apiLogin = "11959c415b33d0c";

/**
* The merchant Id
*/
public static  $merchantId = "500238";

/**
* The request language
*/
public static $language = SupportedLanguages::ES;

}


/** validates Environment before begin any operation */
Environment::validate();



Luego, aunque quiero hacer lo de los pagos, estoy intentado almenos hacer un ping, pero nisiquiera hace nada, este es el codigo del ping.php

Los key, login, merchant id son los de prueba para PERU que aparecen en la pagina


<?
error_reporting(E_ALL);
require_once ('lib/PayU.php');


Environment::setPaymentsCustomUrl("https://api.payulatam.com/payments-api/4.0/service.cgi"); 
Environment::setReportsCustomUrl("https://api.payulatam.com/reports-api/4.0/service.cgi");
Environment::setSubscriptionsCustomUrl("https://api.payulatam.com/payments-api/rest/v4.3/");

print "1";

//PayU::$apiKey = "6u39nqhq8ftd0hlvnjfs66eh8c"; //Ingrese aquí su propio apiKey.
//PayU::$apiLogin = "11959c415b33d0c"; //Ingrese aquí su propio apiLogin.
//PayU::$merchantId = "500238"; //Ingrese aquí su Id de Comercio.
//PayU::$language = SupportedLanguages::ES; //Seleccione el idioma.
//PayU::$isTest = true; //Dejarlo True cuando sean pruebas.
    

$response = PayUPayments::doPing();
//$response->code;
print_r($response);

?>

ADMIN

unread,
May 19, 2015, 10:54:40 AM5/19/15
to desarrollador...@googlegroups.com
Hola,

Lo primero que debes tener en cuenta es: debes incluir la librería lib dentro de tu proyecto PHP, una vez la tengas en tu proyecto la debes llamar o incluir en cada archivo php que crees, lo puedes hacer con la siguiente sentencia include './lib/PayU.php';  o  require_once './lib/PayU.php';
Una vez hayas realizado lo anterior debes configurar tu API para que apunte a nuestro ambiente de pruebas:

Reply all
Reply to author
Forward
0 new messages