- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
下面是我的 IPN 代码。我的问题是我无法在表 payments_paypal
中添加多个项目名称或数量。实际上 IPN 并没有监听 payer_id,quantity,item_name(multiple items)。
我们如何在这里 $_POST item_name1 或 item_name2 等,以便在验证时我可以在其他页面中获取它,这将是成功页面。虽然我已经通过其他方法实现了这一点,但这不是正确的方法。所以我想知道为什么这些变量不是来自 ipn 的字符串形式,只有这些变量以字符串 txn、smt、st、currency 的形式出现,其余的都丢失了。如果我们必须在此处使用循环,我们如何发送值以从此处 ipn.php 插入循环。
如有任何帮助,我们将不胜感激。
$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]);
}
$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";
}
/*
* Post IPN data back to PayPal to validate the IPN data is genuine
* Without this step anyone can fake IPN data
*/
$paypalURL = PAYPAL_URL;
$ch = curl_init($paypalURL);
if ($ch == FALSE) {
return FALSE;
}
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);
// Set TCP timeout to 30 seconds
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 30);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Connection: Close', 'User-Agent: company-name'));
$res = curl_exec($ch);
/*
* Inspect IPN validation result and act accordingly
* Split response headers and payload, a better way for strcmp
*/
$tokens = explode("\r\n\r\n", trim($res));
$res = trim(end($tokens));
if (strcmp($res, "VERIFIED") == 0 || strcasecmp($res, "VERIFIED") == 0) {
// Retrieve transaction info from PayPal
$item_number = $_POST['item_number'];
$txn_id = $_POST['txn_id'];
$payment_gross = $_POST['mc_gross'];
$currency_code = $_POST['mc_currency'];
$payment_status = $_POST['payment_status'];
$quantity = $_POST['quantity'];
// Check if transaction data exists with the same TXN ID
$prevPayment = $db->query("SELECT payment_id FROM payments WHERE txn_id = '".$txn_id."'");
if($prevPayment->num_rows > 0){
exit();
}else{
// Insert transaction data into the database
$insert = $db->query("INSERT INTO payments_paypal(item_number,txn_id,payment_gross,currency_code,payment_status) VALUES('".$item_number."','".$txn_id."','".$payment_gross."','".$currency_code."','".$payment_status."')");
}
}
最佳答案
看起来您在 //Retrieve transaction info from PayPal
部分中使用的代码非常简单,并不是为了查找多个项目而编写的,例如编号变量,如 item_name1
、item_name2
等
您应该记录您收到但未正确处理的 IPN 的文本,或者从您的 PayPal 帐户历史记录中获取它们的文本:https://www.paypal.com/us/smarthelp/article/where-can-i-access-my-ipn-history-faq3692
另外,查看多个项目的变量名文档:https://developer.paypal.com/docs/classic/ipn/integration-guide/IPNandPDTVariables/
然后,您可以修改代码以读取和处理这些多编号变量,并将它们存储在您想要的任何数据库架构中,这可能需要额外的列或其他内容。
关于php - Paypal IPN : Reading multiple item_name and quantities and saving to a database,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59692984/
quantities.Quantity 是 numpy.ndarray 的子类,用于处理物理量的算术和转换。我如何在不对其进行子类化的情况下使用它的算术?下面的方法使用了 __array__-meth
我正在使用下面的代码:表1-添加,表2-删除 SELECT add.description, add.size, (sum(add.qty) - sum(remove.qty)) AS OnHand
我想要取每个唯一属性的总和,然后取这些值的最大值。关于如何使用 mySQL 执行此操作有什么建议吗?我不断收到“无效使用群组功能”的消息。 +-------------+-------------+-
在构建查询方面需要帮助。我有 quantity_price 表,列出数量和相应的价格如下所示 Quantity Price----------------1 -- € 175,352.5 --
使用 Dc.Js 和 crossfilter,我想创建一个堆积条形图。 基本上,我有两个变量: 类型:2018年,未涵盖,其他时期 地区 : Thu Duc, etc.... 在我的 StackedB
我正在使用 javax.measure 将用户输入转换为秒,秒数可以从秒到天不等,但是从任何单位转换为另一个单位不起作用,这是我设置的。 String units = "d"; double valu
表1: emp_id course_id ______ _________ 12345 4 23455 5 67890 6 表2: course_id cours
表: Article | Quantity | pricePerUnit | order_id | article_id --------|----------|-------------------
我尝试显示数据库表中的数量值,但浏览器中未显示 $quantity 值。为什么? prepare('SELECT * FROM cart WHERE Product_Name = :product')
我正在为杂货店网站创建购物 list 应用程序。我是 javascript 新手,而且还不太了解 javascript 对象。 我开始创建应用程序,这就是我所拥有的: http://casb1.clo
我有一个 CollectionViewSource,它的源是一个 ObservableCollection。 在 List 或 ObservableCollection 上,我可以使用 linq 对我
我正在构建一个数据库,其中包含自行车商店的大量商品。这家自行车店有许多相同的商品,例如 100 个尺寸为 4 且颜色为“红色”的车轮。我的问题是: 是向实体集添加“数量”字段并将所有相似项目放在一个实
有人知道 .NET 中 Quantity (with Unit of Measure) 或 Money (with Currency) classesss/patterns 的一个很好的 .NET 实
我有一个 MySQL 表 creatures : id | name | base_hp | quantity -------------------------------- 1 | gobl
我想使用 foreach 循环 在 mysql 中插入每个产品的多个 product 和 quantity 但代码如下仅插入我在输入字段中输入的最后一个产品。我使用 jquery 添加更多字段,这样我
它是在 MySQL 中还是在编程中...无法弄清楚!! 最佳答案 在 mysql 表中,Quantity 被设置为“int”数据类型。您可以更改表格并将其更改为“varchar”数据类型,这样您也可以
我的值为“1200000 mm”,并且我不想有一种自动转移到最佳前缀的方法,例如: import Qty from 'js-quantities' const qty = new Qty(120000
我有一个 HTML 网站,其中有一个页面使用 PHP 代码来查询 MySQL 数据库。该表包含 3 列(日期、时间、剩余)。根据当前日期和时间,我希望 HTML 页面返回并显示“剩余”列中的相应值。
我已经通过 StackOverflow 和多谷歌链接研究了我的问题,但我仍然感到困惑。我想对我来说最好的事情就是问... 我正在创建一个简单的命令行计算器。到目前为止,这是我的代码: const st
我正在尝试使用 PHP 和 xmlrpc 更新有关我的 odoo 产品的一些信息。这是我更新产品名称的代码。 $models->execute_kw($db, $uid, $password, 'pr
我是一名优秀的程序员,十分优秀!