Implementing paypal in my laravel 5.8 app
I got error :
Got Http response code 400 when accessing https://api.sandbox.paypal.com/v1/payments/payment/PAYID-NNNNNNNNNN/execute.
My control :
public function paypal_payment_execute()
{
// After Step 1
$apiContext = new \PayPal\Rest\ApiContext(
new \PayPal\Auth\OAuthTokenCredential(
'NNNNN', // ClientID
'NNNNN' // ClientSecret
)
);
$paymentId = request('paymentId');
$PayerID = request('PayerID');
$payment = Payment::get($paymentId, $apiContext);
$execution = new PaymentExecution();
$execution->setPayerId( $PayerID);
$transaction = new Transaction();
$amount = new Amount();
$details = new Details();
$details->setShipping(1.2)
->setTax(1.3)
->setSubtotal(17.50); //
$amount->setCurrency('USD');
$total_sum= 20; // I check this sum is setShipping + setTax + setSubtotal
$amount->setTotal( (integer)$total_sum);
$amount->setDetails($details);
$transaction->setAmount($amount);
$execution->addTransaction( [ $transaction ] ); // !!! I found that here must be an array?
try {
$result = $payment->execute($execution, $apiContext); // Number of error points at this line
} catch (Exception $pce) {
echo '<pre>::'.print_r( json_decode($pce->getData()) );
die("-1 XXZ app/Http/Controllers/PaymentController.php");
}
return $result;
}
I my browse I see output : 1) Can somebody say which kind of error is it ?
2) I see lines like :
$this->logger->info
Is it some logging ? Where can I look into it ?
3) That was very strange that error line was shown and not pre output in try catch block: I expected to see pce->getData output:
} catch (Exception $pce) {
echo '<pre>::'.print_r( json_decode($pce->getData()) );
die("-1 XXZ app/Http/Controllers/PaymentController.php");
}
4) Searching I net I checked that making payment With JS code I set the same total and return urls, like :
<div id="paypal-button"></div>
<script src="https://www.paypalobjects.com/api/checkout.js"></script>
<script>
let total_sum= 20
alert( "-123 total_sum::"+(total_sum) )
paypal.Button.render({
// Configure environment
env: 'sandbox',
client: {
sandbox: 'NNNNN',
production: 'demo_production_client_id'
},
locale: 'en_US',
style: {
size: 'small',
color: 'blue',
shape: 'pill',
},
commit: true,
payment: function(data, actions) {
var payment = actions.payment.create({
"note_to_payer": "Contact us for any questions on your order.",
"intent": "sale",
"payer": {
"payment_method": "paypal"
},
redirect_urls : { //redirect_urls
return_url : '...paypal_payment',
cancel_url : '.../paypal_payment_cancel'
},
transactions: [{
amount: {
total: Number( total_sum ),
currency: 'USD'
}
}]
});
return payment;
},
onAuthorize: function(data, actions) {
return actions.payment.execute().then(function() {
return actions.redirect();
});
}
}, '#paypal-button');
</script>
On error in apps log I found :
> 2019-07-10 11:12:44] local.ERROR: Got Http response code 400 when
> accessing
> https://api.sandbox.paypal.com/v1/payments/payment/PAYID-LUS4QGI75E1056086596714T/execute.
> {"exception":"[object]
> (PayPal\\Exception\\PayPalConnectionException(code: 400): Got Http
> response code 400 when accessing
> https://api.sandbox.paypal.com/v1/payments/payment/PAYID-LUS4QGI75E1056086596714T/execute.
> at
> /var/www/html/votes/vendor/paypal/rest-api-sdk-php/lib/PayPal/Core/PayPalHttpConnection.php:207)
> [stacktrace]
> #0 /var/www/html/votes/vendor/paypal/rest-api-sdk-php/lib/PayPal/Transport/PayPalRestCall.php(78):
> PayPal\\Core\\PayPalHttpConnection->execute('{\"payer_id\":\"Z9...')
> #1 /var/www/html/votes/vendor/paypal/rest-api-sdk-php/lib/PayPal/Common/PayPalResourceModel.php(104):
> PayPal\\Transport\\PayPalRestCall->execute(Array,
> '/v1/payments/pa...', 'POST', '{\"payer_id\":\"Z9...', Array)
> #2 /var/www/html/votes/vendor/paypal/rest-api-sdk-php/lib/PayPal/Api/Payment.php(650):
> PayPal\\Common\\PayPalResourceModel::executeCall('/v1/payments/pa...',
> 'POST', '{\"payer_id\":\"Z9...', NULL,
> Object(PayPal\\Rest\\ApiContext),
> Object(PayPal\\Transport\\PayPalRestCall))
> #3 /var/www/html/votes/app/Http/Controllers/PaymentController.php(102):
> PayPal\\Api\\Payment->execute(Object(PayPal\\Api\\PaymentExecution),
> Object(PayPal\\Rest\\ApiContext))
> #4 [internal function]: App\\Http\\Controllers\\PaymentController->paypal_payment_execute()
> #5 /var/www/html/votes/vendor/laravel/framework/src/Illuminate/Routing/Controller.php(54):
> call_user_func_array(Array, Array)
> #6 /var/www/html/votes/vendor/laravel/framework/src/Illuminate/Routing/ControllerDispatcher.php(45):
> Illuminate\\Routing\\Controller->callAction('paypal_payment_...',
> Array)
> #7 /var/www/html/votes/vendor/laravel/framework/src/Illuminate/Routing/Route.php(219):
> Illuminate\\Routing\\ControllerDispatcher->dispatch(Object(Illuminate\\Routing\\Route),
> Object(App\\Http\\Controllers\\PaymentController),
> 'paypal_payment_...')
> #8 /var/www/html/votes/vendor/laravel/framework/src/Illuminate/Routing/Route.php(176):
> Illuminate\\Routing\\Route->runController()
> #9 /var/www/html/votes/vendor/laravel/framework/src/Illuminate/Routing/Router.php(680):
> Illuminate\\Routing\\Route->run()
> #10 /var/www/html/votes/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php(30):
> Illuminate\\Routing\\Router->Illuminate\\Routing\\{closure}(Object(Illuminate\\Http\\Request))
> #11 /var/www/html/votes/vendor/laravel/framework/src/Illuminate/Routing/Middleware/SubstituteBindings.php(41):
> Illuminate\\Routing\\Pipeline->Illuminate\\Routing\\{closure}(Object(Illuminate\\Http\\Request))
> #12 /var/www/html/votes/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(163):
> Illuminate\\Routing\\Middleware\\SubstituteBindings->handle(Object(Illuminate\\Http\\Request),
> Object(Closure))
> #13 /var/www/html/votes/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php(53):
> Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
> #14 /var/www/html/votes/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/VerifyCsrfToken.php(75):
> Illuminate\\Routing\\Pipeline->Illuminate\\Routing\\{closure}(Object(Illuminate\\Http\\Request))
> #15 /var/www/html/votes/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(163):
> Illuminate\\Foundation\\Http\\Middleware\\VerifyCsrfToken->handle(Object(Illuminate\\Http\\Request),
> Object(Closure))
> #16 /var/www/html/votes/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php(53):
> Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
> #17 /var/www/html/votes/vendor/laravel/framework/src/Illuminate/View/Middleware/ShareErrorsFromSession.php(49):
> Illuminate\\Routing\\Pipeline->Illuminate\\Routing\\{closure}(Object(Illuminate\\Http\\Request))
> #18 /var/www/html/votes/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(163):
> Illuminate\\View\\Middleware\\ShareErrorsFromSession->handle(Object(Illuminate\\Http\\Request),
> Object(Closure))
> #19 /var/www/html/votes/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php(53):
> Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
> #20 /var/www/html/votes/vendor/laravel/framework/src/Illuminate/Session/Middleware/StartSession.php(56):
> Illuminate\\Routing\\Pipeline->Illuminate\\Routing\\{closure}(Object(Illuminate\\Http\\Request))
> #21 /var/www/html/votes/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(163):
> Illuminate\\Session\\Middleware\\StartSession->handle(Object(Illuminate\\Http\\Request),
> Object(Closure))
> #22 /var/www/html/votes/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php(53):
> Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
> #23 /var/www/html/votes/vendor/laravel/framework/src/Illuminate/Cookie/Middleware/AddQueuedCookiesToResponse.php(37):
> Illuminate\\Routing\\Pipeline->Illuminate\\Routing\\{closure}(Object(Illuminate\\Http\\Request))
> #24 /var/www/html/votes/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(163):
> Illuminate\\Cookie\\Middleware\\AddQueuedCookiesToResponse->handle(Object(Illuminate\\Http\\Request),
> Object(Closure))
> #25 /var/www/html/votes/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php(53):
> Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
> #26 /var/www/html/votes/vendor/laravel/framework/src/Illuminate/Cookie/Middleware/EncryptCookies.php(66):
> Illuminate\\Routing\\Pipeline->Illuminate\\Routing\\{closure}(Object(Illuminate\\Http\\Request))
> #27 /var/www/html/votes/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(163):
> Illuminate\\Cookie\\Middleware\\EncryptCookies->handle(Object(Illuminate\\Http\\Request),
> Object(Closure))
> #28 /var/www/html/votes/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php(53):
> Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
> #29 /var/www/html/votes/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(104):
> Illuminate\\Routing\\Pipeline->Illuminate\\Routing\\{closure}(Object(Illuminate\\Http\\Request))
> #30 /var/www/html/votes/vendor/laravel/framework/src/Illuminate/Routing/Router.php(682):
> Illuminate\\Pipeline\\Pipeline->then(Object(Closure))
> #31 /var/www/html/votes/vendor/laravel/framework/src/Illuminate/Routing/Router.php(657):
> Illuminate\\Routing\\Router->runRouteWithinStack(Object(Illuminate\\Routing\\Route),
> Object(Illuminate\\Http\\Request))
> #32 /var/www/html/votes/vendor/laravel/framework/src/Illuminate/Routing/Router.php(623):
> Illuminate\\Routing\\Router->runRoute(Object(Illuminate\\Http\\Request),
> Object(Illuminate\\Routing\\Route))
> #33 /var/www/html/votes/vendor/laravel/framework/src/Illuminate/Routing/Router.php(612):
> Illuminate\\Routing\\Router->dispatchToRoute(Object(Illuminate\\Http\\Request))
> #34 /var/www/html/votes/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php(176):
> Illuminate\\Routing\\Router->dispatch(Object(Illuminate\\Http\\Request))
> #35 /var/www/html/votes/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php(30):
> Illuminate\\Foundation\\Http\\Kernel->Illuminate\\Foundation\\Http\\{closure}(Object(Illuminate\\Http\\Request))
> #36 /var/www/html/votes/vendor/proengsoft/laravel-jsvalidation/src/RemoteValidationMiddleware.php(53):
> Illuminate\\Routing\\Pipeline->Illuminate\\Routing\\{closure}(Object(Illuminate\\Http\\Request))
> #37 /var/www/html/votes/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(163):
> Proengsoft\\JsValidation\\RemoteValidationMiddleware->handle(Object(Illuminate\\Http\\Request),
> Object(Closure))
> #38 /var/www/html/votes/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php(53):
> Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
> #39 /var/www/html/votes/vendor/barryvdh/laravel-debugbar/src/Middleware/InjectDebugbar.php(65):
> Illuminate\\Routing\\Pipeline->Illuminate\\Routing\\{closure}(Object(Illuminate\\Http\\Request))
> #40 /var/www/html/votes/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(163):
> Barryvdh\\Debugbar\\Middleware\\InjectDebugbar->handle(Object(Illuminate\\Http\\Request),
> Object(Closure))
> #41 /var/www/html/votes/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php(53):
> Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
> #42 /var/www/html/votes/vendor/fideloper/proxy/src/TrustProxies.php(57):
> Illuminate\\Routing\\Pipeline->Illuminate\\Routing\\{closure}(Object(Illuminate\\Http\\Request))
> #43 /var/www/html/votes/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(163):
> Fideloper\\Proxy\\TrustProxies->handle(Object(Illuminate\\Http\\Request),
> Object(Closure))
> #44 /var/www/html/votes/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php(53):
> Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
> #45 /var/www/html/votes/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TransformsRequest.php(21):
> Illuminate\\Routing\\Pipeline->Illuminate\\Routing\\{closure}(Object(Illuminate\\Http\\Request))
> #46 /var/www/html/votes/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(163):
> Illuminate\\Foundation\\Http\\Middleware\\TransformsRequest->handle(Object(Illuminate\\Http\\Request),
> Object(Closure))
> #47 /var/www/html/votes/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php(53):
> Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
> #48 /var/www/html/votes/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TransformsRequest.php(21):
> Illuminate\\Routing\\Pipeline->Illuminate\\Routing\\{closure}(Object(Illuminate\\Http\\Request))
> #49 /var/www/html/votes/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(163):
> Illuminate\\Foundation\\Http\\Middleware\\TransformsRequest->handle(Object(Illuminate\\Http\\Request),
> Object(Closure))
> #50 /var/www/html/votes/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php(53):
> Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
> #51 /var/www/html/votes/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/ValidatePostSize.php(27):
> Illuminate\\Routing\\Pipeline->Illuminate\\Routing\\{closure}(Object(Illuminate\\Http\\Request))
> #52 /var/www/html/votes/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(163):
> Illuminate\\Foundation\\Http\\Middleware\\ValidatePostSize->handle(Object(Illuminate\\Http\\Request),
> Object(Closure))
> #53 /var/www/html/votes/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php(53):
> Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
> #54 /var/www/html/votes/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/CheckForMaintenanceMode.php(62):
> Illuminate\\Routing\\Pipeline->Illuminate\\Routing\\{closure}(Object(Illuminate\\Http\\Request))
> #55 /var/www/html/votes/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(163):
> Illuminate\\Foundation\\Http\\Middleware\\CheckForMaintenanceMode->handle(Object(Illuminate\\Http\\Request),
> Object(Closure))
> #56 /var/www/html/votes/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php(53):
> Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
> #57 /var/www/html/votes/vendor/itsgoingd/clockwork/Clockwork/Support/Laravel/ClockworkMiddleware.php(29):
> Illuminate\\Routing\\Pipeline->Illuminate\\Routing\\{closure}(Object(Illuminate\\Http\\Request))
> #58 /var/www/html/votes/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(163):
> Clockwork\\Support\\Laravel\\ClockworkMiddleware->handle(Object(Illuminate\\Http\\Request),
> Object(Closure))
> #59 /var/www/html/votes/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php(53):
> Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
> #60 /var/www/html/votes/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(104):
> Illuminate\\Routing\\Pipeline->Illuminate\\Routing\\{closure}(Object(Illuminate\\Http\\Request))
> #61 /var/www/html/votes/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php(151):
> Illuminate\\Pipeline\\Pipeline->then(Object(Closure))
> #62 /var/www/html/votes/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php(116):
> Illuminate\\Foundation\\Http\\Kernel->sendRequestThroughRouter(Object(Illuminate\\Http\\Request))
> #63 /var/www/html/votes/public/index.php(55): Illuminate\\Foundation\\Http\\Kernel->handle(Object(Illuminate\\Http\\Request))
> #64 {main}
How fix it ?
composer.json :
"type": "project",
"require": {
"php": "^7.1.3",
...
"laravel/framework": "5.8.*",
"paypal/rest-api-sdk-php": "*",
via Chebli Mohamed
Aucun commentaire:
Enregistrer un commentaire