我正在为我当地的银行制作自定义付款wordpress插件。在处理付款时,我收到了错误消息,例如“通知未定义索引:.......第4行”,如下面的截图:
来自上面屏幕截图的index.php脚本
<?php
ini_set('display_errors',1); error_reporting(E_ALL);
$data = array(
'MerchantID' => $_POST['MerchantID'],
'TransactionID' => $_POST['TransactionID'],
'RequestDate' => $_POST['RequestDate'],
'Amount' => $_POST['Amount'],
'CurrencyCode' =>$_POST['CurrencyCode'],
'Tax' => $_POST['Tax'],
'Signature' => $_POST['Signature'],
'Description' =>$_POST['Description'],
'CallbackURL' => $_POST['CallbackURL'],
'UserSession' => $_POST['UserSession'],
'TransactionNote' => $_POST['TransactionNote']
);
$url_send ="http://simpg.sprintasia.net:8779/bcasakuku/bak/InquiryProc";
$str_data = json_encode($data);
function sendPostData($url, $post){
$ch = curl_init($url);
$curl_header = array('Accept: application/json', 'Content-Type: application/json');
curl_setopt($ch, CURLOPT_HTTPHEADER, $curl_header);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POSTFIELDS,$post);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
$result = curl_exec($ch);
curl_close($ch); // Seems like good practice
return $result;
}
echo " " . sendPostData($url_send, $str_data);
?>
有关详细信息,请尝试this product并使用BCA sakuku作为付款选项,如下面的截图:
它很奇怪,因为这些插件在localhost中的魅力不像dev.galerigadget.com
我该如何解决?
干杯
2016年2月2日更新
它的新脚本index.php基于another question,但仍然没有运气
<?php
ini_set('display_errors',1); error_reporting(E_ALL);
//Checking to fix error
$MerchantID = $_POST['MerchantID'];
if (!isset($MerchantID)) $MerchantID = '';
$TransactionID = $_POST['TransactionID'];
if (!isset($TransactionID)) $TransactionID = '';
$RequestDate = $_POST['RequestDate'];
if (!isset($RequestDate)) $RequestDate = '';
$Amount = $_POST['Amount'];
if (!isset($Amount)) $Amount = '';
$CurrencyCode = $_POST['CurrencyCode'];
if (!isset($CurrencyCode)) $CurrencyCode = '';
$Tax = $_POST['Tax'];
if (!isset($Tax)) $Tax = '';
$Signature = $_POST['Signature'];
if (!isset($Signature)) $Signature = '';
$Description = $_POST['Description'];
if (!isset($Description)) $Description = '';
$CallbackURL = $_POST['CallbackURL'];
if (!isset($CallbackURL)) $CallbackURL = '';
$UserSession = $_POST['UserSession'];
if (!isset($UserSession)) $UserSession = '';
$TransactionNote = $_POST['TransactionNote'];
if (!isset($TransactionNote)) $TransactionNote = '';
$data = array(
'MerchantID' => $MerchantID,
'TransactionID' => $TransactionID,
'RequestDate' => $RequestDate,
'Amount' => $Amount,
'CurrencyCode' => $CurrencyCode,
'Tax' => $Tax,
'Signature' => $Signature,
'Description' => $Description,
'CallbackURL' => $CallbackURL,
'UserSession' => $UserSession,
'TransactionNote' => $TransactionNote,
);
$url_send ="http://simpg.sprintasia.net:8779/bcasakuku/bak/InquiryProc";
$str_data = json_encode($data);
function sendPostData($url, $post){
$ch = curl_init($url);
$curl_header = array('Accept: application/json', 'Content-Type: application/json');
curl_setopt($ch, CURLOPT_HTTPHEADER, $curl_header);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POSTFIELDS,$post);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
$result = curl_exec($ch);
curl_close($ch); // Seems like good practice
return $result;
}
echo " " . sendPostData($url_send, $str_data);
?>
答案 0 :(得分:0)
如果在localhost上一切正常,可能是因为没有正确执行迁移。请尝试阅读本文的codex https://codex.wordpress.org/Moving_WordPress
当您的域名或网址发生变化时,还会有其他问题。可以移动文件和数据库,但是对旧域名或位置的引用将保留在数据库中,这可能会导致链接或主题显示出现问题。
如果您对整个数据库进行搜索和替换以更改URL,则可能会导致数据序列化问题,因为某些主题和窗口小部件会存储标记了URL长度的值。当这种情况发生变化时,事情就会破裂。
或者使用此脚本确保您在所有数据库更改时正确迁移。
https://interconnectit.com/products/search-and-replace-for-wordpress-databases/
答案 1 :(得分:0)
如果您移动了网站,则序列化数据和网址地址可能会出错,并且会发生类似这样的事情。
要正确迁移网站,您应该安装该插件 WP Migrate DB - 它处理序列化数据并通过指定要搜索的URL以及应该替换它来更改数据库中的URL。
答案 2 :(得分:0)
$MerchantID = $_POST['MerchantID'];
if (!isset($MerchantID)) $MerchantID = '';
$_POST['MerchantID']
如E_NOTICE消息中所述......
注意:未定义的索引:MerchantID E_NOTICE是因为
MerchantID
未设置。换句话说,$_POST
数组的$MerchantID = isset($_POST['MerchantID']) ? $_POST['MerchantID'] : '';
索引未定义。看来数据还没有POST(提交)到这个脚本?
您应该为您的数据分配如下内容:
If (empty($MerchantID)) {
/* ABORT! */
}
这将解决您的E_NOTICE消息的直接问题,但是,它不能解决为什么您的数据尚未提交的更大问题。
稍后您仍需要进行某种验证检查......
friendly_id :slug_candidates, use: :slugged
def slug_candidates
[
[parent.try(:slug), :title]
]
end
答案 3 :(得分:0)
最后,我的插件向我的网站主办客户服务部门报告,我的网站连接到第三方服务器的端口已经被阻止。