Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Laravel 5 + Paypal, la pesadilla definitiva

Estas en el tema de Laravel 5 + Paypal, la pesadilla definitiva en el foro de PHP en Foros del Web. Buenas de nuevo amigos. Sigo con mi primera aplicacion en laravel y a cada paso que doy me encuentro un nuevo problema. Estoy utilizando en ...
  #1 (permalink)  
Antiguo 11/09/2015, 01:20
 
Fecha de Ingreso: diciembre-2007
Mensajes: 79
Antigüedad: 16 años, 4 meses
Puntos: 0
Laravel 5 + Paypal, la pesadilla definitiva

Buenas de nuevo amigos.

Sigo con mi primera aplicacion en laravel y a cada paso que doy me encuentro un nuevo problema. Estoy utilizando en API de paypal para integrarlo en mi web. El caso es que el ejemplo que viene por defecto, viene con valores establecidos manualmente, se proponen 3 items y yo solo necesito 1. En el momento que quito los 2 items que me sobran me reporta un error de una excepcion.

he utilizado: http://learninglaravel.net/integrate...laravel-5/link

y el codigo de la discordia es:

Código:
  public function postPayment(Request $request)
{

    $payer = new Payer();
    $payer->setPaymentMethod('paypal');

    $item_1 = new Item();

    $item_1->setName($request->installation." ".$request->day) // item name
        ->setCurrency('USD')
        ->setQuantity(2)
        ->setPrice('15')
        ->setSku('1234556');
         // unit price

    $item_2 = new Item();
    $item_2->setName('Item 2')
        ->setCurrency('USD')
        ->setQuantity(4)
        ->setPrice('7');

    $item_3 = new Item();
    $item_3->setName('Item 3')
        ->setCurrency('USD')
        ->setQuantity(1)
        ->setPrice('20')
        ;

    // add item to list
    $item_list = new ItemList();
    $item_list->setItems(array($item_1, $item_2, $item_3));

    $amount = new Amount();
    $amount->setCurrency('USD')
        ->setTotal(78);

    $transaction = new Transaction();
    $transaction->setAmount($amount)
        ->setItemList($item_list)
        ->setDescription('Your transaction description');

    $redirect_urls = new RedirectUrls();
    $redirect_urls->setReturnUrl(URL::route('payment.status'))
        ->setCancelUrl(URL::route('payment.status'));

    $payment = new Payment();
    $payment->setIntent('Sale')
        ->setPayer($payer)
        ->setRedirectUrls($redirect_urls)
        ->setTransactions(array($transaction));

    try {
        $payment->create($this->_api_context);
    } catch (\PayPal\Exception\PPConnectionException $ex) {
        if (\Config::get('app.debug')) {
            echo "Exception: " . $ex->getMessage() . PHP_EOL;
            $err_data = json_decode($ex->getData(), true);
            exit;
        } else {
            die('Some error occur, sorry for inconvenient');
        }
    }

    foreach($payment->getLinks() as $link) {
        if($link->getRel() == 'approval_url') {
            $redirect_url = $link->getHref();
            break;
        }
    }

    // add payment ID to session
    Session::put('paypal_payment_id', $payment->getId());

    if(isset($redirect_url)) {
        // redirect to paypal
        return Redirect::away($redirect_url);
    }

    return Redirect::route('original.route')
        ->with('error', 'Unknown error occurred');
}
Logicamente los valores del item que quiero mantener sera dinamico, pero en el momento que cambio cantidades o precios me reporta tambien error.

A ver si alguien me puede ayudar
  #2 (permalink)  
Antiguo 11/09/2015, 05:11
 
Fecha de Ingreso: diciembre-2007
Mensajes: 79
Antigüedad: 16 años, 4 meses
Puntos: 0
Respuesta: Laravel 5 + Paypal, la pesadilla definitiva

Bueno parece que he conseguido solucionarlo.

Por si a alguien de es de ayuda, el problema radica en que el total de los precios de los items debe ser igual al precio del amount de la transaccion. Sino te salta la excepcion.

De esta manera ya se pueden borrar y añadir items. Este es el problema de no entender como funciona el API...

Gracias por todo. Un saludo

Etiquetas: laravel, paypal
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 08:21.