0

我正在将 Paypal 集成到购物车中,我想在创建付款后获取用户的运输信息。我知道有一种方法可以使用旧的 api,但似乎在 developer.paypal.com 启动时 api 发生了变化。我没有看到我需要使用什么 url 来获取扩展的付款人信息。

到目前为止,我将用户发送到贝宝进行创建,当用户回来时,我有一个付款人 ID 和令牌。在之前的通话中,我有一个执行链接,但没有详细信息链接。在联系贝宝之前,我是否需要强制用户输入运输信息?如果是这样的话,Paypal 显示来自他们系统而不是我的系统的运输信息似乎令人困惑。

一旦他们批准了金额,我如何从贝宝获取付款人的运输详细信息?

4

1 回答 1

0

大多数商家使用 PayPal 即时付款通知 (IPN) 来接收包括送货地址在内的付款详细信息。这使您可以从 PayPal 接收实时通知,而不是在您认为已付款后对我们进行 ping 操作。下面是一个简单的 PHP 脚本,它将获取 IPN 并对其进行验证,以确保它不是欺骗尝试。一旦通过验证,您就可以更新您的数据库、发送电子邮件或在您知道已付款后执行任何所需的任务。

// Validate with curl
  $req = 'cmd=_notify-validate';

  foreach ($_POST as $key => $value)  
  {  
       $value =  urlencode(stripslashes($value));  
       $req .=  "&" . $key . "=" . $value;  
  }

  $curl_result=$curl_err='';
  $ch = curl_init();
  curl_setopt($ch, CURLOPT_URL,'www.paypal.com');//Change URL to sandbox.paypal.com if testing in our developer environment
  curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
  curl_setopt($ch, CURLOPT_POST, 1);
  curl_setopt($ch, CURLOPT_POSTFIELDS, $req);
  curl_setopt($ch, CURLOPT_HTTPHEADER,  array("Content-Type: application/x-www-form-urlencoded",  "Content-Length: " . strlen($req)));
  curl_setopt($ch, CURLOPT_HEADER , 0);  
  curl_setopt($ch, CURLOPT_VERBOSE, 1);
  curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, true);
  curl_setopt($ch, CURLOPT_TIMEOUT, 30);
  $curl_result = @curl_exec($ch);
  $curl_err = curl_error($ch);
  curl_close($ch);

  //Set validation flag
  if (strpos($curl_result, "VERIFIED")!==false)
       $valid  = true;
  else
       $valid  = false;

这种方法比支付数据传输 (PDT) 更可靠,因为它不依赖消费者返回您的网站进行支付。

于 2013-03-20T23:30:08.707 回答