php curl pem key,php – curl_setopt cacert.pem for paypal

我正在尝试为IPN(paypal)验证设置一个回调处理程序.我知道curl会做什么,但我不知道’cacert.pem’是什么(证书……?).

这是callback.php文件失败的地方(存在):

curl_setopt($ch, CURLOPT_CAINFO, 'cacert.pem');

if( !($res = curl_exec($ch)) ) {

echo ("Got " . curl_error($ch) . " when processing IPN data");

curl_close($ch);

exit;

}

curl_close($ch);

出现以下错误消息:

Got error setting certificate verify locations: CAfile: cacert.pem

CApath: none when processing IPN data

所以我下载了cacert.pem并复制到callback.php文件所在的目录.

这是上面代码之前的注释:

// In wamp like environments that do not come bundled with root authority certificates,

// please download 'cacert.pem' from "http://curl.haxx.se/docs/caextract.html" and set the directory path

// of the certificate as shown below.

我正在使用XAMPP,这会是问题吗?

// STEP 1: Read POST data

// reading posted data from directly from $_POST causes serialization

// issues with array data in POST

// reading raw POST data from input stream instead.

$raw_post_data = file_get_contents('php://input');

$raw_post_array = explode('&', $raw_post_data);

$myPost = array();

foreach ($raw_post_array as $keyval) {

$keyval = explode ('=', $keyval);

if (count($keyval) == 2)

$myPost[$keyval[0]] = urldecode($keyval[1]);

}

// read the post from PayPal system and add 'cmd'

$req = 'cmd=_notify-validate';

if(function_exists('get_magic_quotes_gpc')) {

$get_magic_quotes_exists = true;

}

foreach ($myPost as $key => $value) {

if($get_magic_quotes_exists == true && get_magic_quotes_gpc() == 1) {

$value = urlencode(stripslashes($value));

} else {

$value = urlencode($value);

}

$req .= "&$key=$value";

}

// STEP 2: Post IPN data back to paypal to validate

$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, 1);

curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);

curl_setopt($ch, CURLOPT_POSTFIELDS, $req);

curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 1);

curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2);

curl_setopt($ch, CURLOPT_FORBID_REUSE, 1);

curl_setopt($ch, CURLOPT_HTTPHEADER, array('Connection: Close'));

// In wamp like environments that do not come bundled with root authority certificates,

// please download 'cacert.pem' from "http://curl.haxx.se/docs/caextract.html" and set the directory path

// of the certificate as shown below.

curl_setopt($ch, CURLOPT_CAINFO, 'cacert.pem');

if( !($res = curl_exec($ch)) ) {

echo ("Got " . curl_error($ch) . " when processing IPN data");

curl_close($ch);

exit;

}

curl_close($ch);

// STEP 3: Inspect IPN validation result and act accordingly

if (strcmp ($res, "VERIFIED") == 0) {

// check whether the payment_status is Completed

// check that txn_id has not been previously processed

// check that receiver_email is your Primary PayPal email

// check that payment_amount/payment_currency are correct

// process payment

// assign posted variables to local variables

$item_name = $_POST['item_name'];

$item_number = $_POST['item_number'];

$payment_status = $_POST['payment_status'];

$payment_amount = $_POST['mc_gross'];

$payment_currency = $_POST['mc_currency'];

$txn_id = $_POST['txn_id'];

$receiver_email = $_POST['receiver_email'];

$payer_email = $_POST['payer_email'];

$string = "------------------------\r\n";

$string .= "item_name: ".$item_name."\r\n";

$string .= "item_number: ".$item_number."\r\n";

$string .= "payment_status: ".$payment_status."\r\n";

$string .= "payment_amount: ".$payment_amount."\r\n";

$string .= "payment_currency: ".$payment_currency."\r\n";

$string .= "txn_id: ".$txn_id."\r\n";

$string .= "receiver_email: ".$receiver_email."\r\n";

$string .= "payer_email: ".$payer_email."\r\n";

$fp = fopen('test.log', 'w');

fwrite($fp, $string."\r\n");

fclose($fp);

} else if (strcmp ($res, "INVALID") == 0) {

// log for manual investigation

}

?>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值