2011-09-08 114 views
2

我正在使用使用paypals Website Payments Pro Hosted Solution,所以我們可以通過paypal接受付款,而我們的用戶感覺他們正在離開網站,並且我們不必遵守PCI標準。Paypal的工作示例Website Payments Pro託管解決方案Iframe?

我們希望這個以這種格式的工作:

  • 用戶點擊購買頁面中的項目,並選擇數量和命中現在購買按鈕
  • AJAX請求被髮送到服務器,以驗證數量/計算總等
  • AJAX請求的iframe
  • iframe是填充了頁面返回的URL,然後一旦完成加載的iframe顯示
  • 用戶填寫信用卡信息和paypal完成交易
  • paypal重定向iframe的成功頁面,以在父頁面中調用一些JavaScript重定向到另一個url。

所以, 我有數量選擇頁面,
我知道如何將數據發送到服務器,並驗證量/計算總

什麼我不知道該怎麼做的是從這個點發送請求到貝寶獲取iframe的網址。

我試圖做(作爲一個非常基本的獨立的例子)是:

<?php 

class paypal { 

    private $APIuser; 
    private $APIpass; 
    private $APIsign; 
    private $APIvers = '74.0'; 
    private $APIaddr = 'https://api-3t.sandbox.paypal.com/nvp'; 
    private $post_params = array(); 

    function __construct($APIuser, $APIpass, $APIsign){ 
     $this->APIuser = $APIuser; 
     $this->APIpass = $APIpass; 
     $this->APIsign = $APIsign; 
    } 

    function param($name, $value = null){ 
     $this->post_params[$name] = $value; 
     return $this; 
    } 

    function getUrl(){ 

     $post = $this->post_params; 
     $post['pwd']  = $this->APIpass; 
     $post['user']  = $this->APIuser; 
     $post['method']  = 'BMCreateButton'; 
     $post['version'] = $this->APIvers; 
     $post['signature'] = $this->APIsign; 
     $post['buttoncode'] = 'CLEARTEXT'; 
     $post['buttontype'] = 'PAYMENT'; 

     $post_string = '?'; 
     foreach($post as $k => $v) 
      $post_string .= $k.'='.urlencode($v).'&'; 

     $post_string = substr($post_string, 0, -1); 

     $ch = curl_init(); 
     curl_setopt($ch, CURLOPT_URL, $this->APIaddr.$post_string); 
     curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
     curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); 
     $out = curl_exec($ch); 
     curl_close($ch); 

     $out = explode('&', $out); 
     $final = array(); 
     foreach($out as $k => &$v){ 
      $v = explode('=', $v); 
      $final[$v[0]] = urldecode($v[1]); 
     } 
     return $final; 
    } 
} 

//mock variables 
$price = 10.00; 
$APIu = 'xxxxxxxxxx'; 
$APIp = 'xxxxxxxxxx'; 
$APIs = 'xxxxxxxxxx'; 


$paypal = new paypal($APIu, $APIp, $APIs); 
$paypal->param('L_BUTTONVAR0=subtotal', $price*$_GET['quantity']); 
$paypal->param('L_BUTTONVAR1=template', 'templateD'); 
$resp = $paypal->getUrl(); 
?> 
<iframe width="100%" height=100%" src="<?php echo $resp['EMAILLINK']; ?>"></iframe> 

起初似乎做工精細,直到你進入你的測試購房者的信用卡信息並獲得擊中

請返回付款頁面並更正地址。

我在做什麼錯誤/我需要做什麼工作?

+0

如果你不確定,經常檢查官方文檔 - https://cms.paypal.com/us/cgi-bin/?cmd=_render- content&content_ID = developer/library_documentation – ajreal

+2

@ajreal:我做到了!事實上,在經歷了八個小時的考驗之後,他們稱這是我想出的文檔!因此我尋求幫助! – Hailwood

+0

LMGTFY - 可能重複[Paypal集成:請返回付款頁面並更正地址](http://stackoverflow.com/questions/6648804/paypal-integration-please-return-to-the-payment-page-和正確的地址) – ajreal

回答

0

事實上,試試下面的API調用,讓我知道,如果這對你的作品:

METHOD = BMCreateButton &
按鈕類型=付款&
BUTTONCODE = TOKEN &
L_BUTTONVAR0 =小計= 11 &
L_BUTTONVAR1 =稅= 2 &
L_BUTTONVAR2 = shipping = 3 &
L_BUTTONVAR3 = =處理4 &
L_BUTTONVAR4 =模板= templateC

相關問題