【发布时间】:2015-10-24 05:30:02
【问题描述】:
好的,我正在尝试将 Paypal 与我的网站集成。它要求我向安静的 Web 服务发出 cURL 请求。我已经设法让 php 看起来不错。我知道这是基本的,但它应该可以工作。
if(etc...){
$params = ['USER'=>'me',
'PWD'=>'mypassword',
'SIGNATURE'=>'SIG',
'METHOD'=>'SetExpressCheckout',
'VERSION'=>'93',
'PAYMENTREQUEST_0_PAYMENTACTION'=>'SALE',
'PAYMENTREQUEST_0_AMT'=>10,
'PAYMENTREQUEST_0_CURRENCYCODE'=>'GBP',
'RETURNURL'=>'http://returnPage.html',
'CANCELURL'=>'http://returnPage.html'];
$defaults = array(CURLOPT_URL => 'http://api.sandbox.paypal.com',
CURLOPT_POST => true,
CURLOPT_POSTFIELDS => http_build_query($params),
CURLOPT_RETURNTRANSFER, 1,);
$ch = curl_init();
curl_setopt_array($ch, $defaults);
$output = curl_exec($ch);
curl_close($ch);
$token = $output;
}
echo $token
问题是由于某种原因返回的输出是错误的,并且我浏览器上的网络选项卡显示对 php 文件的请求需要很长时间。实际上在测试所有其他代码时都可以工作,但是 php 文件不返回任何数据。如果我离开它一段时间,它有时会返回 false 而不是 cURL 数据。
任何关于我哪里出错的想法都将不胜感激。
编辑:
通过从命令提示符卷曲测试我的凭据时,一切正常。我的 PHP 中没有错误是否有办法诊断 cURL 命令不起作用的原因。
编辑 2:
得到响应所需的命令是
curl -s --insecure https://api-3t.sandbox.paypal.com/nvp -d "USER=users&PWD=pass=Abg0gYcQyxQvnf2HDJkKtA-p6pqhA1k-KTYE0Gcy1diujFio4io5Vqjf&METHOD=SetExpressCheckout&VERSION=78&PAYMENTREQUEST_0_PAYMENTACTION=SALE&PAYMENTREQUEST_0_AMT=19&PAYMENTREQUEST_0_CURRENCYCODE=USD&cancelUrl=http://www.example.com/cancel.html&returnUrl=http://www.example.com/success.html"
我不知道 --insecure 位是什么,我认为这与安全性有关,但我不知道如何在 php 中将其设置为选项。
【问题讨论】:
-
在您的参考api.sandbox.paypal.com上方的代码中-应该是https!
-
您认为在拥有数百万用户的网站上发布您的通行证是否明智?在 curl_exec
$info = curl_getinfo($ch); print_r($info);之后添加这些行以结果编辑您的问题 -
在 php 中,--insecure 的等价物是
CURLOPT_SSL_VERIFYHOST => 0;