簡體   English   中英

Paypal Express結帳+ php cURL執行付款不在沙箱上顯示付款通知

[英]Paypal Express checkout + php cURL Execute payment not show payment notification on sandbox

我正在使用vhost在我的apache服務器上的php演示測試中測試Paypal集成-> test.it/paypal。 我使用Express Checkout +服務器端REST(cURL)。 我的js添加PayPal按鈕是:

 <script> var CREATE_PAYMENT_URL = 'http://test.it/paypal/create-payment.php'; var EXECUTE_PAYMENT_URL = 'http://test.it/paypal/execute-payment.php'; paypal.Button.render({ env: 'sandbox', // Or 'production', commit: true, // Show a 'Pay Now' button locale: 'it_IT', style: { size: 'small', color: 'blue', shape: 'pill', label: 'checkout' }, commit: true, // Show a 'Pay Now' button payment: function() { // Make a call to the merchant server to set up the payment return paypal.request.post(CREATE_PAYMENT_URL).then(function(res) { //return res.payToken; console.log(res); return res.paymentID; }); }, // Wait for the payment to be authorized by the customer onAuthorize: function(data) { //alert(data.payerID); return paypal.request.post(EXECUTE_PAYMENT_URL, { paymentID: data.paymentID, payerID: data.payerID }).then(function(res) { /* Go to a success page */ console.log('SUCCESS!!!!!!!!!'); console.log(res); // The payment is complete! // You can now show a confirmation message to the customer alert('pagamento completato'); }).catch(function (err) { /* Go to an error page */ console.log('ERROR!!!!!!!!!'); console.log(data); console.log(err); }); } }, '#paypal-button'); </script> 

create-payment.php如下:

 <?php session_start(); include 'config.php'; // autenticazione per ottenere user token $url_wbs="https://api.sandbox.paypal.com/v1/oauth2/token"; $ch = curl_init(); $clientId = "Aeet9T-pG4XQU-GnDL2uSrkJQ4_qaxgAu9XtVTP6qeuXDGBOnHf2TiVF2Qv5OurFmSo9dPkwVk-x0J3x"; $secret = "EGQguUgHcN4TLjAEAXb4Jo8qoTQCvC3o_54FL2r2wQUtjbGoRoWeRlDyNNhU3HO8lpdexzNsW-ePb2qe"; // id web experience profile $experience_profile_id="XP-V52K-SKNH-FK7Y-HLYQ"; curl_setopt($ch, CURLOPT_URL, $url_wbs); curl_setopt($ch, CURLOPT_HEADER, false); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($ch, CURLOPT_POST, true); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_USERPWD, $clientId.":".$secret); curl_setopt($ch, CURLOPT_POSTFIELDS, "grant_type=client_credentials"); $result = curl_exec($ch); curl_close($ch); if(empty($result))die("Error: No response."); else { $obj=json_decode( $result ); //var_dump($obj->access_token); $_SESSION['token']=$obj->access_token; // imposto il web profile ottenendone l'id $header_rest_call[]='Authorization: Bearer '.$obj->access_token; $json_body='{ "intent": "sale", "experience_profile_id":"'.$experience_profile_id.'", "redirect_urls": { "return_url": "http://test.it/paypal/checkout.php", "cancel_url": "http://test.it/paypal/pagamento-cancellato.php" }, "payer": { "payment_method": "paypal" }, "transactions": [ { "amount": { "total": "4.00", "currency": "EUR", "details": { "subtotal": "2.00", "shipping": "1.00", "tax": "2.00", "shipping_discount": "-1.00" } }, "item_list": { "items": [ { "quantity": "1", "name": "item 1", "price": "1", "currency": "EUR", "description": "item 1 description", "tax": "1" }, { "quantity": "1", "name": "item 2", "price": "1", "currency": "EUR", "description": "item 2 description", "tax": "1" }] }, "description": "The payment transaction description.", "invoice_number": "merchant invoice", "custom": "merchant custom data" }] }'; $obj_payment=get_obj_json($payment_creation_url,$header_rest_call,$json_body,'POST'); //var_dump($obj_payment->id); $response=array( 'paymentID'=>$obj_payment->id ); echo json_encode($response); } ?> 

execute-payment.php如下:

 <?php session_start(); include 'config.php'; // imposto il web profile ottenendone l'id $header_rest_call[]='Authorization: Bearer '.$_SESSION['token']; // indirizzo wbs per pagamento $url_payment="https://api.sandbox.paypal.com/v1/payments/payment/".$_POST['paymentID']."/execute/"; $json_body='{ "payer_id": "'.$_POST['payerID'].'"; }'; $obj_payment=get_obj_json($url_payment,$header_rest_call,$json_body,'POST'); echo json_encode($obj_payment); ?> 

當我單擊貝寶按鈕時,貝寶登錄表單正確顯示了購買數據,我輸入了憑證,最后我單擊了“立即付款”按鈕。 似乎付款成功。.但是在沙盒帳戶->活動->沒有過渡/付款的痕跡..?

問題出在付款/執行請求的json格式錯誤。

$json_body='{
"payer_id": "'.$_POST['payerID'].'";

}';

在-> $ _POST ['payerID']之后,我誤輸入了一個分號。

現在可以了!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM