2013-01-05 80 views
0

對於我的項目,我一直在整合貝寶沙箱。標準方法我使用了以下代碼。但我無法從PayPal收到通知電話(notify-url)。怎麼了?貝寶標準方法

<form id="form1" action="https://www.sandbox.paypal.com/cgi-bin/webscr" method="post" style="display:none;" accept-charset="utf-8"> 
    <input type="hidden" name="business" value="[email protected]" /> 
    <input type="hidden" name="cmd" value="_cart" /> 
    <input type="hidden" name="paymentaction" value="sale" /> 
    <input type="hidden" name="item_name_1" value="lap" /> 
    <input type="hidden" name="amount_1" value="1" /> 
    <input type="hidden" name="quantity_1" value="1" /> 
    <input type="hidden" name="first_name" value="1" /><!--customer first name --> 
    <input type="hidden" name="last_name" value="1" /><!--customer last name --> 
    <input type="hidden" name="address1" value="1" /><!--customer address 1 name --> 
    <input type="hidden" name="address2" value="1" /><!--customer add2 name --> 
    <input type="hidden" name="email" value="[email protected]" /><!--customer email name --> 
    <input type="hidden" name="city" value="1" /><!--customer city name --> 
    <input type="hidden" name="state" value="1" /><!--customer state name --> 
    <input type="hidden" name="country" value="1" /><!--customer country name --> 
    <input type="hidden" name="zip" value="1" /><!--customer zip name --> 
    <input type="hidden" name="currency_code" value="USD" /><!--currrecy in which payment u need--> 
    <input type="hidden" name="upload" value="1" /><!--paypal parameter--> 
    <input type="hidden" name="return" value="HOST_NAME/default/index/order-return" /> 
    <input type="hidden" name="cancel_return" id="cancel_return" value="" /> 
    <input type="hidden" name="notify_url" id="notify_url" value="HOST_NAME/default/index/notify-url/order/222"> 
    <input type="submit" value="submit"> 
    </form> 

回答

0

正如我在評論中寫道,你應該有一個適當的IPN監聽器與消息驗證貝寶考慮成功調用您的網址。 這是一個基本的聽衆的一個粗略的例子:

<?php 

    function validateIpnMessage() { 
     $ch = curl_init('https://www.sandbox.paypal.com/cgi-bin/webscr'); 
     curl_setopt($ch, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_1); 
     curl_setopt($ch, CURLOPT_POST, true); 
     curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
     curl_setopt($ch, CURLOPT_POSTFIELDS, "cmd=_notify-validate&".http_build_query($_POST)); 
     curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); 
     curl_setopt($ch, CURLOPT_FORBID_REUSE, true); 
     curl_setopt($ch, CURLOPT_HTTPHEADER, array('Connection: Close')); 

     if(!curl_errno($ch)) { 
      $res = curl_exec($ch); 
      curl_close($ch); 
      if ($res === "VERIFIED") { 
       return TRUE; 
      } 
     } 

     return FALSE; 
    } 


    if ($_SERVER['REQUEST_METHOD'] == 'POST' && !empty($_POST)) { 
     if(validateIpnMessage()) { 
      // THE MESSAGE IS VALIDATED 

      // REST OF YOUR CODE GOES HERE 
     } 
    } 
?> 

你確定你在你的配置文件中啓用IPN? 無論如何,我建議你先檢查你的聽衆URL的工作方式與IPN測試工具(在「測試工具」可在您的帳戶PayPal Sandbox

+0

手動測試它 是的,我看到你添加它。但你檢查你可以使用sandbox帳戶中的工具輕鬆地做到這一點,它位於左側菜單上的「測試工具」鏈接下。請查看 –

+0

我正在使用沙箱帳戶。在PayPal表單中添加了notify_url,所以我認爲不需要在profile中啓用IPN,我已經手動測試了通知url,它正在工作,作爲你的建議,我已經用IPN測試工具進行了測試,但是我得到了這個錯誤。 IPN交付失敗,無法連接到指定的網址,請驗證網址並重試。「\ – 2plus

+0

好吧,某件事情不對tener script.if你可以在這裏發佈代碼,這將有助於很多找到問題。 –