2012-08-23 121 views
0

我正在编写一个简单的方法来编辑PayPal支付系统的状态,以便在需要时可以在测试模式下将其切换,而无需进入代码。 “MODULE_PAYMENT_PAYPAL_STANDARD_GATEWAY_SERVER”被定义为“Live”,但由于某种原因,它不断抛出沙盒网址。定义if语句不工作的值

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‘活’了正确的返回值,我也试图移动定义了一个变量在进入IF语句之前,但它仍然不起作用。

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

的var_dump还显示:

管柱(20​​) “直播”

什么,而不是它应该:

串(4) “活”

MODULE_PAYMENT_PAYPAL_STANDARD_GATEWAY_SERVER的选项 是“现场”和“沙盒”。

+0

什么是其他条件或只有一个?我的意思是其他选项的生活?如果不是,你可以忘记现场。 – JonathanRomer

+0

向我们展示您的定义声明。 – Hameed

+0

向问题 –

回答

0

删除并添加MODULE_PAYMENT_PAYPAL_STANDARD_GATEWAY_SERVER几次没有任何改变我完全删除了该网站的PayPal脚本,并再次安装。现在它工作!

+0

我很高兴现在能工作 - 但是哈哈: - )... – thedom

+0

我发现了这个bug。另一个人试图“改善”速度,导致config.xml中的最后一个值因某种原因失败。它读取它的方式不是最好的方式,所以我会在稍后修复它。只是简单地说,似乎是“正确”的东西由于某些原因是不正确的... –

+0

如果您接受此答案,它将标记问题已解决。只要编辑“解决”到问题仍然留在未答复的问题池中。 –

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 

到底是如何你definine你不变?

如果发生下列变化:

define("MODULE_PAYMENT_PAYPAL_STANDARD_GATEWAY_SERVER", "LIVE"); 

输出

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

编辑:基于您的评论,代码工作,正是因为它应该然后。您正在将您的常数定义为LIVE,但随后在您的if语句中针对Live进行检查。当你比较它们时,它们是而不是等于,因此if语句的计算结果为false,并且执行第二个条件。

+0

添加了更多信息define(“MODULE_PAYMENT_PAYPAL_STANDARD_GATEWAY_SERVER”,“LIVE”);位于一个config.php文件中,该文件只需要在if语句的上面加载即可。 –

+0

@CasperO请参阅编辑。 – Fluffeh

+0

对不起,只是复制/粘贴你的定义..我的外观:\t define(“MODULE_PAYMENT_PAYPAL_STANDARD_GATEWAY_SERVER”,“Live”)和输出应该使if语句为真的生活..对吗? –

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'); 
} 
?> 

显示现场 ;-))

按预期工作 - 不能重现您所描述的结果。

+0

不适合我,出于某种原因,它只是不是我的幸运日与其他陈述。 –

+0

我提供的示例绝对有效:-p ...在一个空白的php文件中检查它。 – thedom

+0

它的确如@fluffeh例子那样。 –