我正在工作的网站正在向Sagepay发送不正确的“帐单国家/地区”信息(此字段现在是3.00更新的强制要求),而我正在尝试寻找一种在PHP文件中传递正确信息的方法。
发送此信息的当前行是:
$crypt .= "&BillingCountry=".$orderArray["country"];
问题在于,orderArray中的“国家/地区”字段提供了我们CMS中设置的国家/地区名称,而不是Sagepay要求的ISO代码。
正确的ISO代码保存在SQL数据库中,因此该信息可用。数据库表包含唯一的ID,名称,ISO代码,ISO编号以及一些其他有关站点的信息。
我需要用以下替换上面的地穴:
$crypt .="&BillingCountry=".$countryISO;
$ countryISO作为查询添加到代码中的位置。该查询应在“国家”数据库表的“ ISO代码”列(isocode)中查找,并返回与orderArray中“国家”名称相对应的ISO代码值。
我已经尝试将其他网站上用于其他文件的php放在一起,似乎正在实现类似的目的。例如:
$countryISO = $dbA->query("SELECT isocode FROM $tableCountries WHERE name=".$orderArray["country"]);
我也尝试过:
$countryISO = $dbA->retrieveAllRecordsFromQuery("SELECT isocode FROM $tableCountries WHERE name=".$orderArray["country"]);
站点服务器上包含一个php文件,该文件具有“查询”和“ retrieveAllRecordsFromQuery”功能,以及其他功能(例如,count,fetch,retrieveAllRecords),并且还包含一个与$ dbA有关的功能,我相信该功能可以连接到数据库。
我需要一些建议,以了解如何从SQL数据库中提取ISO代码。我的代码在我需要的地方附近吗?
通过使用用于网站另一个网关的类似代码,我设法找到了解决方案。这已解决了“帐单国家/地区”问题,并且现在已通过3.00协议成功将数据发送到Sagepay。
解决方案:
$countryMatch = $orderArray["country"];
$cResult = $dbA->query("select * from $tableCountries where name=\"$countryMatch\"");
if (count($cResult) > 0) {
$cRecord = $dbA->fetch($cResult);
$customerCountry = $cRecord["isocode"];
} else {
$customerCountry = "";
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句