paypal-ipn 相关问题

Paypal IPN(即时付款通知)是PayPal的推送通知服务,在创建交易或状态发生变化时发送通知

PayPal IPN 未到达。重试但没有 HTTP 响应代码

我面临着一个从今天开始的奇怪问题。 PayPal IPN 无法访问我的网站。最后 4 个 IPN 在 IPN 历史记录中显示“正在重试”,但它们没有任何 HTTP 响应代码。我检查了我的...

回答 1 投票 0

如何读取 Paypal IPN 回发变量

我已经为此苦苦挣扎了几天。 我想读取通过 IPN 系统传递的自定义变量。 大多数人说 $custom = $_POST['custom'];就是你如何做。 豪...

回答 1 投票 0

PayPal Webhook 永远不会返回已验证

我无法让 paypal 通过 webhooks 模拟器验证 webhook 请求。我的VerifyTask 和示例之间的唯一区别是我从webclient 转换为HttpClient。 ...

回答 1 投票 0

IPN未发送,握手未验证。请检查您的信息。

我正在与 Paypal 上的 Expresscheckout 合作,针对单次用户付款集成。 工作流程首先创建令牌,用户重定向到 paypal 页面,并成功到我的返回 URL 页面。 1.

回答 4 投票 0

使用贝宝付款后更新我的数据库

我有一个用户填写表格的网站,当他们提交时,我的网站将信息插入 mySql 数据库,然后用户使用 PayPal 按钮进行付款。售后完成后...

回答 0 投票 0

PayPal 捐赠的 IPN 监听器未被正确调用 PHP

我有一个 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 日志中没有任何内容。我的捐赠数据库中没有添加任何内容。付款在交易列表中显示为已完成。

回答 0 投票 0

为什么要将运费添加到我的 PayPal IPN 响应中?

为什么要将运费添加到我的 IPN 响应中?这已经工作了很多年,但突然间我们的一些 IPN 请求包含运输参数,例如下面的 17.01 我们从来没有...

回答 1 投票 0

向贝宝付款按钮添加额外费用

我们在我们的网络应用程序中附加了一个 PayPal $4 按钮。现在我们计划根据位置添加额外费用。那么将额外费用添加到 PayPal 的最佳可能性是什么......

回答 1 投票 0

PayPal IPN和更新数据库

我明白IPN是如何工作的,以及发送信息、验证等的基本想法。但是,对我来说,我无法让它工作!!!这就是我试图让它工作的原因。这是我想做的...... 用户选择一个...

回答 1 投票 6

如何手动向支付宝客户收费

是否可以手动向paypal客户收费。我可以做到像用户得到重定向到paypal确认所有的细节,但我需要用户允许我的系统向他收取每个月没有......。

回答 1 投票 1

关于codeignitor中的paypal IPN问题

我在我的代码点火器网站中集成了PayPal支付网关。我正在使用这个ref https:/www.codexworld.compaypal-payment-gateway-integration-in-codeigniter 所有的事情都成功......

回答 1 投票 1

PayPal、Xenforo和Buttons的IPN。

我必须弄清楚我需要做什么来解决我产生的几个IPN问题。下面是我的情况。- 一个PayPal账户--PayPal按钮不需要IPNs--2个Xenforo论坛,...

回答 1 投票 0

支付宝网络钩子(Paypal Webhooks)

我已经在paypal中设置了webhook和IPNs(Instanst Payment Notifications)。我的理解是,如果我在webhook设置中选择'*所有事件',我将收到webhook ...

回答 1 投票 0

如何测试支付宝IPN通知

我试图让这个PayPal的IPN脚本工作,但似乎我没有得到Paypal的响应。我不知道问题出在哪里,是在表格还是在脚本中。

回答 2 投票 0

PayPal IPN hook没有被调用

我已使用https://www.sandbox.paypal.com/cgi-bin/customerprofileweb?cmd=_profile-ipn-notify在我的网站上将IPN挂钩设置为PHP脚本,我已在https上设置了返回页面: //www.sandbox.paypal.com / ...

回答 1 投票 0

我的网站上的PayPal IPN侦听器已开始在有人在Ebay上向我付款时引发Guid错误

下面是我的IPN侦听器,在我的网站上,我的客户PayPal付款一直很正常。它以Guid格式(32位4破折号)设置了我的网站的订单。但是,我使用相同的...

回答 1 投票 1

PayPal沙箱有效,生产无效。有人可以提供解决方案吗?

我已经在网上商店中集成了贝宝付款。在沙盒模式下,使用沙盒贝宝帐户付款时,一切正常。在生产模式下并使用REAL Paypal时...

回答 1 投票 0

Paypal Checkout按钮未将自定义字段传递到IPN邮件

我正在更新我的网站上的PayPal系统,用较新的PayPal Checkout替换旧的PayPal按钮,并且在尝试将自定义字段从按钮脚本传递到IPN时遇到问题...

回答 1 投票 1

贝宝IPN返回未决原因:单方面

我的PayPal IPN脚本运行得很好。当我使用自己的沙盒帐户进行测试时,付款即刻完成,但是当我使用客户的公司电子邮件时,我收到的Payment_status为“待处理”,并带有...

回答 4 投票 10

PayPal按钮-添加要从IPN侦听器发送回的自定义属性

我需要向我的PayPal按钮添加一个自定义密钥,该密钥会从IPN侦听器返回一个值。我当前的PayPal代码如下。我可以在src url或paypal中添加自定义键/属性吗?...

回答 2 投票 0

© www.soinside.com 2019 - 2024. All rights reserved.