Paypal IPN(即时付款通知)是PayPal的推送通知服务,在创建交易或状态发生变化时发送通知
PayPal IPN 未到达。重试但没有 HTTP 响应代码
我面临着一个从今天开始的奇怪问题。 PayPal IPN 无法访问我的网站。最后 4 个 IPN 在 IPN 历史记录中显示“正在重试”,但它们没有任何 HTTP 响应代码。我检查了我的...
我已经为此苦苦挣扎了几天。 我想读取通过 IPN 系统传递的自定义变量。 大多数人说 $custom = $_POST['custom'];就是你如何做。 豪...
我无法让 paypal 通过 webhooks 模拟器验证 webhook 请求。我的VerifyTask 和示例之间的唯一区别是我从webclient 转换为HttpClient。 ...
我正在与 Paypal 上的 Expresscheckout 合作,针对单次用户付款集成。 工作流程首先创建令牌,用户重定向到 paypal 页面,并成功到我的返回 URL 页面。 1.
我有一个用户填写表格的网站,当他们提交时,我的网站将信息插入 mySql 数据库,然后用户使用 PayPal 按钮进行付款。售后完成后...
我有一个 PayPal 捐赠 IPN 的监听器。然而,它没有被调用,PayPal 沙箱中也没有日志。代码是: donations.php: 我有一个 PayPal 捐赠 IPN 的监听器。然而,它没有被调用,PayPal 沙箱中也没有日志。代码是: donations.php: <?php // For test payments we want to enable the sandbox mode. If you want to put live // payments through then this setting needs changing to `false`. $enableSandbox = true; // Database settings. Change these for your database configuration. $dbConfig = [ 'host' => 'localhost', 'username' => 'xxxx', 'password' => 'xxxx', 'name' => 'xxxx' ]; // PayPal settings. Change these to your account details and the relevant URLs // for your site. $paypalConfig = [ 'email' => $enableSandbox ? '[email protected]' : '[email protected]', 'return_url' => 'https://example.com/index.php?page=/donation-successful.php', 'cancel_url' => 'https://example.com/index.php?page=/donation-cancelled.php', 'notify_url' => 'https://example.com/donations.php', ]; $paypalUrl = $enableSandbox ? 'https://ipnpb.sandbox.paypal.com/cgi-bin/webscr' : 'https://ipnpb.paypal.com/cgi-bin/webscr'; function verifyTransaction($data) { global $paypalUrl; $req = 'cmd=_notify-validate'; foreach ($data as $key => $value) { $value = urlencode(stripslashes($value)); //$value = preg_replace('/(.*[^%^0^D])(%0A)(.*)/i', '${1}%0D%0A${3}', $value); // IPN fix $req .= "&$key=$value"; } $ch = curl_init($paypalUrl); 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_SSLVERSION, 6); 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_CONNECTTIMEOUT, 30); curl_setopt($ch, CURLOPT_HTTPHEADER, array('Connection: Close')); $res = curl_exec($ch); if (!$res) { $errno = curl_errno($ch); $errstr = curl_error($ch); curl_close($ch); throw new Exception("cURL error: [$errno] $errstr"); } $info = curl_getinfo($ch); // Check the http response $httpCode = $info['http_code']; if ($httpCode != 200) { throw new Exception("PayPal responded with http code $httpCode"); } curl_close($ch); return $res == 'VERIFIED'; } function checkTxnid($txnid) { $db = new mysqli($dbConfig['host'], $dbConfig['username'], $dbConfig['password'], $dbConfig['name']); $txnid = $db->real_escape_string($txnid); $results = $db->query('SELECT * FROM `donations` WHERE txnid = \'' . $txnid . '\''); return ! $results->num_rows; } function addPayment($data) { $db = new mysqli($dbConfig['host'], $dbConfig['username'], $dbConfig['password'], $dbConfig['name']); if (is_array($data)) { if ($db->query("INSERT INTO 'donations' (txnid, payment_amount, payment_status, createdtime) VALUES('" . $data["txn_id"] . "', '" . $data["payment_amount"] . "', '" . $data["payment_status"] . "', '" . date("Y-m-d H:i:s") . "')")) { return true; } } return false; } // Check if paypal request or response // STEP 1: read POST data // Reading POSTed data directly from $_POST causes serialization issues with array data in the POST. // Instead, read raw POST data from the input stream. $raw_post_data = file_get_contents('php://input'); $raw_post_array = explode('&', $raw_post_data); $data = array(); foreach ($raw_post_array as $keyval) { $keyval = explode ('=', $keyval); if (count($keyval) == 2) { $data[$keyval[0]] = urldecode($keyval[1]); } } if (!isset($data["txn_id"]) && !isset($data["txn_type"])) { // Set the PayPal account. $data['business'] = $paypalConfig['email']; // Set the PayPal return addresses. $data['return'] = stripslashes($paypalConfig['return_url']); $data['cancel_return'] = stripslashes($paypalConfig['cancel_url']); $data['notify_url'] = stripslashes($paypalConfig['notify_url']); // Set the currency so that these aren't overridden by the form data. $data['currency_code'] = 'GBP'; // Build the query string from the data. $queryString = http_build_query($data); // Redirect to paypal IPN header('location:' . $paypalUrl . '?' . $queryString); exit(); } else { // Handle the PayPal response. // Create a connection to the database. $db = new mysqli($dbConfig['host'], $dbConfig['username'], $dbConfig['password'], $dbConfig['name']); // We need to verify the transaction comes from PayPal and check we've not // already processed the transaction before adding the payment to our // database. if (verifyTransaction($data) && checkTxnid($data['txn_id'])) { // Assign posted variables to local data array. $data = [ 'item_name' => $data['item_name'], 'item_number' => $data['item_number'], 'payment_status' => $data['payment_status'], 'payment_amount' => $data['mc_gross'], 'payment_currency' => $data['mc_currency'], 'txn_id' => $data['txn_id'], 'receiver_email' => $data['receiver_email'], 'payer_email' => $data['payer_email'], ]; if (addPayment($data) !== false) { // Payment successfully added. } } } ?> 替换了一些地方的敏感信息,但你明白了。 PayPal 日志中没有任何内容。我的捐赠数据库中没有添加任何内容。付款在交易列表中显示为已完成。
为什么要将运费添加到我的 IPN 响应中?这已经工作了很多年,但突然间我们的一些 IPN 请求包含运输参数,例如下面的 17.01 我们从来没有...
我们在我们的网络应用程序中附加了一个 PayPal $4 按钮。现在我们计划根据位置添加额外费用。那么将额外费用添加到 PayPal 的最佳可能性是什么......
我明白IPN是如何工作的,以及发送信息、验证等的基本想法。但是,对我来说,我无法让它工作!!!这就是我试图让它工作的原因。这是我想做的...... 用户选择一个...
是否可以手动向paypal客户收费。我可以做到像用户得到重定向到paypal确认所有的细节,但我需要用户允许我的系统向他收取每个月没有......。
我在我的代码点火器网站中集成了PayPal支付网关。我正在使用这个ref https:/www.codexworld.compaypal-payment-gateway-integration-in-codeigniter 所有的事情都成功......
我必须弄清楚我需要做什么来解决我产生的几个IPN问题。下面是我的情况。- 一个PayPal账户--PayPal按钮不需要IPNs--2个Xenforo论坛,...
我已经在paypal中设置了webhook和IPNs(Instanst Payment Notifications)。我的理解是,如果我在webhook设置中选择'*所有事件',我将收到webhook ...
我试图让这个PayPal的IPN脚本工作,但似乎我没有得到Paypal的响应。我不知道问题出在哪里,是在表格还是在脚本中。
我已使用https://www.sandbox.paypal.com/cgi-bin/customerprofileweb?cmd=_profile-ipn-notify在我的网站上将IPN挂钩设置为PHP脚本,我已在https上设置了返回页面: //www.sandbox.paypal.com / ...
我的网站上的PayPal IPN侦听器已开始在有人在Ebay上向我付款时引发Guid错误
下面是我的IPN侦听器,在我的网站上,我的客户PayPal付款一直很正常。它以Guid格式(32位4破折号)设置了我的网站的订单。但是,我使用相同的...
我已经在网上商店中集成了贝宝付款。在沙盒模式下,使用沙盒贝宝帐户付款时,一切正常。在生产模式下并使用REAL Paypal时...
Paypal Checkout按钮未将自定义字段传递到IPN邮件
我正在更新我的网站上的PayPal系统,用较新的PayPal Checkout替换旧的PayPal按钮,并且在尝试将自定义字段从按钮脚本传递到IPN时遇到问题...
我的PayPal IPN脚本运行得很好。当我使用自己的沙盒帐户进行测试时,付款即刻完成,但是当我使用客户的公司电子邮件时,我收到的Payment_status为“待处理”,并带有...
我需要向我的PayPal按钮添加一个自定义密钥,该密钥会从IPN侦听器返回一个值。我当前的PayPal代码如下。我可以在src url或paypal中添加自定义键/属性吗?...