Paypal返回网站并提供交易ID,现在使用CURL发布它不起作用的数据,任何人都可以帮助我。它没有打印成功消息。我已经搜索了堆栈溢出,但仍然没有。
$tx = $_GET['tx'];
$ID = $_GET['cm'];
$currency = $_GET['cc'];
$identity = '0iMIW7w4OXAed9Tvz6l9fpUY8B-E_WtE3toU7sT5gIzDJc9uPUgt9sVCN30';
// Further processing
// Init cURL
// Init cURL
$request = curl_init();
// Set request options
$url = 'https://www.sandbox.paypal.com/cgi-bin/webscr';
$fields = array(
'cmd' => '_notify-synch',
'tx' => $tx,
'at' => $identity,
);
curl_setopt($request,CURLOPT_URL, $url);
curl_setopt($request,CURLOPT_POST, count($fields));
curl_setopt($request,CURLOPT_POSTFIELDS, http_build_query($fields));
curl_setopt($request,CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($request,CURLOPT_HEADER, FALSE);
// Execute request and get response and status code
$response = curl_exec($request);
$status = curl_getinfo($request, CURLINFO_HTTP_CODE);
// Close connection
curl_close($request);
答案 0 :(得分:3)
我看不到“成功消息” - 也没有任何尝试在卷曲请求之后输出任何东西,唯一令我震惊的事情 - 其他人可能不同意 - 是选项中没有任何内容专门处理https通信根据我的经验,这需要设置其他选项。我之前没有处理过PayPal api,所以这可能没什么用,但是......
尝试下载cacert.pem
的副本 - 谷歌是你的朋友。
<?php
$tx = $_GET['tx'];
$ID = $_GET['cm'];
$currency = $_GET['cc'];
$identity = '0iMIW7w4OXAed9Tvz6l9fpUY8B-E_WtE3toU7sT5gIzDJc9uPUgt9sVCN30';
/* Use the full path to your own cacert.pem, download from the interwebs if you do not have a copy */
$cacert = 'c:/wwwroot/cacert.pem';
$url = 'https://www.sandbox.paypal.com/cgi-bin/webscr';
$fields = array(
'cmd' => '_notify-synch',
'tx' => $tx,
'at' => $identity,
);
$request = curl_init();
curl_setopt($request,CURLOPT_URL, $url);
if( parse_url( $url,PHP_URL_SCHEME )=='https' ){
curl_setopt( $request, CURLOPT_SSL_VERIFYPEER, FALSE ); /* set to true once you get this working */
curl_setopt( $request, CURLOPT_SSL_VERIFYHOST, 2 );
curl_setopt( $request, CURLOPT_CAINFO, realpath( $cacert ) );
}
/* this should be true or false not count($fields): in this case true*/
/*curl_setopt($request,CURLOPT_POST, count( $fields ) );*/
curl_setopt($request,CURLOPT_POST, true );
curl_setopt($request,CURLOPT_POSTFIELDS, http_build_query( $fields ) );
curl_setopt($request,CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($request,CURLOPT_HEADER, FALSE);
/* Quite often requests get rejected for no useragent */
curl_setopt($request,CURLOPT_USERAGENT, 'paypal-mozilla-chrome-useragent' );
curl_setopt($request, CURLINFO_HEADER_OUT, TRUE );
$response = curl_exec($request);
$status = curl_getinfo($request, CURLINFO_HTTP_CODE);
curl_close($request);
/* See what the curl request has retrieved */
echo '<pre>',print_r( $response, true ),$status,'</pre>';
?>