conekta / conekta-php

PHP Bindings for Conekta's API
MIT License
88 stars 41 forks source link

Undefined Index Lang.php #175

Closed daniken1 closed 1 year ago

daniken1 commented 4 years ago

Hola estoy haciendo una integracion en un servidor con php 5.3.2. ya tengo este mismo codigo funcionando en php 7 pero aca en el 5 obtengo el siguiente error

Warning: opendir(/home/xxx/public_html/xxx/Conekta/../locales/messages) [function.opendir]: failed to open dir: No such file or directory in /home/continen/public_html/backmin/Conekta/Lang.php on line 41
Notice: Undefined index: en in /home/xxx/public_html/xxx/Conekta/Lang.php on line 19

Las llamadas al script la estoy haciendo de esta forma

Conekta\Conekta::setApiKey("$KEY_
DESARROLLO");
Conekta\Conekta::setApiVersion("2.0.0");
Conekta\Conekta::setLocale('es');

A que se puede deber?

silvaGarduno commented 4 years ago

Hola @daniken1 podrías pasarme tu código completo para intentar replicar el mismo error por favor, ya que estoy haciendo pruebas y no me resulta algún problema

daniken1 commented 4 years ago

Hola Muchas Gracias a continuación el codigo php

session_start();
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);
date_default_timezone_set('America/New_York');

require_once("Conekta.php");
$key_produccion="";
$key_desarrollo ="xxxxx";
Conekta\Conekta::setApiKey("xxxxx");
Conekta\Conekta::setApiVersion("2.0.0");
Conekta\Conekta::setLocale('es');

$valid_order =
    array(
        'line_items'=> array(
            array(
                'name'        => 'Box of Cohiba S1s',
                'description' => 'Imported From Mex.',
                'unit_price'  => 500,
                'quantity'    => 1,
                'sku'         => 'cohb_s1',
                'category'    => 'food',
                'tags'        => array('food', 'mexican food')
            )
        ),
        'currency'    => 'mxn',
        'metadata'    => array('test' => 'extra info'),
        'charges'     => array(
            array(
                'payment_method' => array(
                        'token_id' => "tok_test_visa_4242",
                        'object'=> 'card_payment',
                        'type'=> 'card',
                        'name'=> 'Jorge Lopez',
                        'exp_month'=> '12',
                        'exp_year'=> '19',
                        'auth_code'=> '49088432',
                        'last4'=> '42422',
                        'brand'=> 'visa',
                        'issuer'=> '',
                        'account_type'=> '',
                        'country'=> 'MX',
                        'fraud_score'=> 29
                ),
                'amount' => 500
            )
        ),
        'currency'      => 'mxn',
        'customer_info' => array(
            'name'  => 'John Constantinee',
            'phone' => '+5213353319758',
            'email' => 'cccc@ccc.com'
        )
    );

try {
    $order = \Conekta\Order::create($valid_order);
} catch (\Conekta\ProcessingError $e){
    echo $e->getMessage();
} catch (\Conekta\ParameterValidationError $e){
    echo $e->getMessage();
} catch (\Conekta\Handler $e){
    echo $e->getMessage();
}
$order = \Conekta\Order::create($valid_order);
var_dump($order)
silvaGarduno commented 4 years ago

Me puedes pasar tu email por favor para ayudar con la integración si gustas, veo que hacen falta enviar más cosas dentro de tu código y eso podría ser el origen del error

daniken1 commented 4 years ago

Hola Disculpa me acabo de dar cuenta que te envie un código superviejo y que jamas iba a funcionar sorry ya estaba dando lo ultimo el día viernes. A continuación te paso el código con el error pero si crees igual te puedo hacer llegar mi dirección a tu correo. Muchas gracias por tu ayuda.


ob_start();
session_start();
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);
include ("conf/conf.php");
require_once("Conekta.php");
$key_desarrollo ="xxxxxxxxxxxxx";
Conekta\Conekta::setApiKey($key_desarrollo);
Conekta\Conekta::setApiVersion("2.0.0");
Conekta\Conekta::setLocale('es');

$chr = "0123456789ABCDEFGHIJKMLNOPQRSTUVWXYZ";
$str = "";

while(strlen($str) < 6)
{
    $str .= substr($chr, mt_rand(0,(strlen($chr))), 1);
}

    $my_numeric_string  =$str;
    $inputCardNumbere   ='123456789';//$_GET["inputCardNumber"];
    $inputNameCard      ='danitest';//$_GET["inputNameCard"];
    $inputYear          ='2022';//$_GET["inputYear"];
    $inputMonth         ='12';//$_GET["inputMonth"];
    $inputCVV2          ='321';//$_GET["inputCVV2"];
    $conektaTokenId     ='123456';//$_GET["mytoken"];
    $totalgeneral       = '563';
    $satisfactorio      = 0;
    $ext2               = 'MX';
    $codigo_final       = "xx" . $my_numeric_string. ".".$ext2;
    $origen = 'MX';

if( !empty($origen) )
{
    $totalgeneral2= $totalgeneral * 100;

    try {
        $customer = \Conekta\Customer::create(
            array(
                "name" => $inputNameCard,
                "email" => "dani@xxx.com",
                "phone" => "+55555555",
                "payment_sources" => array(
                    array(
                        "type" => "card",
                        "token_id" => $conektaTokenId
                    )
                )//payment_sources
            )//customer
        );
    } catch (\Conekta\ProccessingError $error){
            echo $error->getMesage();
    } catch (\Conekta\ParameterValidationError $error){
            echo $error->getMessage();
    } catch (\Conekta\Handler $error){
            echo $error->getMessage();
    }
    //$customerid= $customer->id;
    $totalgeneral2= $totalgeneral *100;

    $valid_order= array(
        'currency' => 'MXN',
        'customer_info' => array(
            'customer_id' => $customerid
        ),
        'line_items' => array(
            array(
                'name' => $codigo_final,
                'unit_price' => $totalgeneral2,
                'quantity' => 1
            )
        ),
        'charges' => array(
            array(
                'payment_method' => array(
                    'type' => 'default'
                )
            )
        )
    );

try {
    $order = \Conekta\Order::create($valid_order);

    /*     $idtrans        = $order->id ;
        $statustrans    = $order->payment_status   ;
        $codetrans      = $order->charges[0]->payment_method->auth_code    ;
        $cuatrodigitos  = $order->charges[0]->payment_method->last4;
        $tipo_tarjeta   = $order->charges[0]->payment_method->brand ;
        $tipotrans      = $order->charges[0]->payment_method->type ;
        $expir=$inputMonth."/".$inputYear; */

    } catch (\Conekta\Handler $error) {
         echo($error->getMessage());
         echo($error->getCode());
         echo($error->getLine());
         echo($error->getTraceAsString());
        }

       // $response =$idtrans.",".$statustrans.",".$codetrans.",".$cuatrodigitos;   
if ($_SESSION['intentosTDC'] >333 ){
                echo "<script>alert('Muchos intentos')</script>";
                }

        var_dump($order);
    if ($satisfactorio==1)
    {
        echo "<script>alert('Listo')</script>";

    }  else        {

            $_SESSION['intentosTDC']++;
            echo json_encode(array(
                'status' => 'error',
                'message'=> 'Ha ocurrido un error al procesar el pago, Verifique los datos de la tarjeta',
                'intentos'=> $_SESSION['intentosTDC']
            ));
        }

 } else {
     echo "<script>alert('Hay algo vacio')</script>";
} 
ob_end_flush();
silvaGarduno commented 4 years ago

Hola @daniken1

Para el valor ejemplo del tokenId puedes obtener alguno del siguiente enlace. https://developers.conekta.com/resources/testing

Al momento de enviar tu orden igual veo que faltan agregar shipping_line y shipping_contact.

si quieres pasame tu email y te envió mensaje para ayudar más con esto e igual si tienes dudas de como usar algo.

daniken1 commented 4 years ago

Gracias @silvaGarduno se me habia olvidado lo de los token de testing. Como te comente ya yo lo habia hecho en otro servidor y alli no coloco shipping_line y shipping_contact debido a que es un prestador de servicios virtual. Mi correo es daniken@gmail.com

silvaGarduno commented 4 years ago

@daniken1 puedes intentar con lo del token y ver que pasa

daniken1 commented 4 years ago

Usando el token se mantiene el error y arroja otro sobre el mismo archivo. y por ultimo te envio los mensajes del manejador de erroes de conecta, no se si es un tema de mi version de php y el Lang.php


Warning: opendir(/home/xxx/public_html/xxx/Conekta/../locales/messages)
 [function.opendir]: failed to open dir: No such file or directory in 
/home/xxx/public_html/xxx/Conekta/Lang.php on line 41

Notice: Undefined index: es in /home/xxx/public_html/xxx/Conekta/Lang.php 
on line 19
catch (\Conekta\Handler $error) {
        echo "manejador de error de conecta <br>";
     echo "getMessage= ".($error->getMessage())."<br>";
         echo "getCode= ".($error->getCode())."<br>";
         echo "getLine= ".($error->getLine())."<br>";
         echo "getTraceAsString= ".($error->getTraceAsString())."<br>";
        }

El Manejador de errore me devuelve estos valores

getMessage=
getCode=
getLine= 45
getTraceAsString= #0 /home/xxx/public_html/xxx/Conekta/Exceptions/Handler.php(98):
 Conekta\Handler::build(NULL, 0) #1 /home/xxx/public_html/backmin/Conekta
/Requestor.php(152): Conekta\Handler::errorHandler(NULL, 0) #2 /home/xxx/public_html
/xxx/Conekta/ConektaResource.php(80): Conekta\Requestor->request('post', '/orders',
 Array) #3 /home/xxx/public_html/xxx/Conekta/Order.php(73): 
Conekta\ConektaResource::_scpCreate('Conekta\Order', Array) #4 /home/xxx/public_html
/xxx/Tconekta.php(87): Conekta\Order::create(Array) #5 {main}