2012-08-23 125 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例子那樣。 –