0

我正在研究一种简单的方法来编辑 Paypal 支付系统的状态,这样我就可以在需要时在测试模式下切换它而无需进入代码。“MODULE_PAYMENT_PAYPAL_STANDARD_GATEWAY_SERVER”被定义为“Live”,但由于某种原因,它不断抛出沙盒 url。

echo MODULE_PAYMENT_PAYPAL_STANDARD_GATEWAY_SERVER ;

if (MODULE_PAYMENT_PAYPAL_STANDARD_GATEWAY_SERVER == "Live") {
    $form_action_url = 'https://www.paypal.com/cgi-bin/webscr';
  } else {
    $form_action_url = 'https://www.sandbox.paypal.com/cgi-bin/webscr';
  }
echo ' '.$form_action_url;
die();

上述输出:

直播https://www.sandbox.paypal.com/cgi-bin/webscr '

如果我将 MODULE_PAYMENT_PAYPAL_STANDARD_GATEWAY_SERVER 替换为“live”,它会正确返回值,我还尝试将 DEFINE 移动到变量,然后再转到 IF 语句,但它仍然不起作用。

我正在使用 OsCommerce 通过管理系统来定义它。

var_dump 还显示:

字符串(20)“直播”

而不是应该的:

字符串(4)“直播”

MODULE_PAYMENT_PAYPAL_STANDARD_GATEWAY_SERVER 的选项是“实时”和“沙盒”。

4

3 回答 3

0

以下代码按预期工作:

<?php
    define("MODULE_PAYMENT_PAYPAL_STANDARD_GATEWAY_SERVER", "LIVE");
    echo MODULE_PAYMENT_PAYPAL_STANDARD_GATEWAY_SERVER ;

    if (MODULE_PAYMENT_PAYPAL_STANDARD_GATEWAY_SERVER == "Live") 
    {
        $form_action_url = 'https://www.paypal.com/cgi-bin/webscr';
    } 
    else 
    {
        $form_action_url = 'https://www.sandbox.paypal.com/cgi-bin/webscr';
    }
    echo ' '.$form_action_url;
    die();
?>

// Outpu: Live https://www.paypal.com/cgi-bin/webscr

你到底是如何定义你的常数的?

当以下内容发生变化时:

define("MODULE_PAYMENT_PAYPAL_STANDARD_GATEWAY_SERVER", "LIVE");

输出是

LIVE https://www.sandbox.paypal.com/cgi-bin/webscr

编辑:根据您的评论,代码的工作方式与当时应有的完全一样。您将常量定义为,LIVE但随后在 if 语句中针对Live. 当您比较它们时,它们相等,因此该if语句的计算结果为 false 并执行您的第二个条件。

于 2012-08-23T07:49:26.337 回答
0
<?php
if(!defined('MODULE_PAYMENT_PAYPAL_STANDARD_GATEWAY_SERVER')) {
  define('MODULE_PAYMENT_PAYPAL_STANDARD_GATEWAY_SERVER', 'Live');
}

if(MODULE_PAYMENT_PAYPAL_STANDARD_GATEWAY_SERVER == 'Live') {
 echo('live');
} else {
 echo('sandboxing');
}
?>

现场直播;-))

按预期工作 - 无法重现您描述的结果。

于 2012-08-23T07:51:59.007 回答
0

在删除并添加 MODULE_PAYMENT_PAYPAL_STANDARD_GATEWAY_SERVER 几次后,我完全从网站上删除了 paypal 脚本并再次安装它。现在它起作用了!

于 2012-08-23T12:16:36.633 回答