【发布时间】:2014-01-16 19:36:54
【问题描述】:
我有一个非托管按钮来进行 Paypal 付款,其中一个变量是:
<input type="hidden" name="amount" value="<?php echo $payment->amount;?>">
这会正确完成 Paypal 付款,但我没有在我的 POST 数据中获取“金额”变量,以便使用我在 notify_url 设置的函数进行处理
我正在使用 Micah Carrick 出色的 IPN 监听器
http://www.micahcarrick.com/paypal-ipn-with-php.html
https://github.com/Quixotix/PHP-PayPal-IPN
是否可以修改 processIPN 函数以将“金额”(或任何其他)变量发送到我在 notify_url 设置的函数?我基本上试图确保 mc_gross 等于最初发送的要支付的金额。我可以使用数据库查询来检查 mc_gross 与预期金额,但如果我可以将金额作为 POST 变量取回,它似乎效率低下。只是不确定更改 IPN 侦听器是否可行,如果可行,该怎么做!
供参考的process_IPN函数为:
public function processIpn($post_data=null) {
$encoded_data = 'cmd=_notify-validate';
if ($post_data === null) {
// use raw POST data
if (!empty($_POST)) {
$this->post_data = $_POST;
$encoded_data .= '&'.file_get_contents('php://input');
} else {
throw new Exception("No POST data found.");
}
} else {
// use provided data array
$this->post_data = $post_data;
foreach ($this->post_data as $key => $value) {
$encoded_data .= "&$key=".urlencode($value);
}
}
if ($this->use_curl) $this->curlPost($encoded_data);
else $this->fsockPost($encoded_data);
if (strpos($this->response_status, '200') === false) {
throw new Exception("Invalid response status: ".$this->response_status);
}
if (strpos($this->response, "VERIFIED") !== false) {
return true;
} elseif (strpos($this->response, "INVALID") !== false) {
return false;
} else {
throw new Exception("Unexpected response from PayPal.");
}
}
感谢您的帮助!
【问题讨论】:
标签: php post paypal paypal-ipn paypal-sandbox