2009-07-20 20 views
3

従来のASPでPayPal Express Checkoutを統合すると大きな問題に直面しています。ASP Option Explicit - Paypal Expressチェックアウトトラブル

PayPal Integration Wizard」でPayPalが提供するコードは、Option Explicitを付けずに実行すると完全に動作します。

私のコーディングページに入れて、提供された機能を呼び出すと、大きな問題に直面しています。既存のページはすべてOption Explicitを使用しています。

この結果、PayPalのすべての変数を手動で宣言する必要があります。

サンプルPayPal関数は、PayPalサイトを呼び出すために必要な名前と値のペアを設定するための多数の配列/リスト/オブジェクト/インデックスで構成されています。私はASPの専門家ではなく、プロジェクトの締め切りは厳しいので、正しい宣言に変更することは全く簡単ではありません。

誰かから助言をいただけますか?

答えて

3

Option Explicit」-codeと「Option Explicit」以外のコードをExecuteの文で混在させることは可能です。ここで

は、私はちょうど(だけでなく、古典的なASPに適用されます)のVBScriptで作られた小さなテストです:

Message 1: (equal to the contents of vb2.vbs) 
Message 2: 200 

私が持っている:中

''#vb1.vbs (i.e. "your code") 
Option Explicit 

Dim fso, vb2, txt 
Set fso = CreateObject("Scripting.FileSystemObject") 
Set vb2 = fso.OpenTextFile("vb2.vbs", 1) 
txt = vb2.ReadAll 

MsgBox txt ''# Message 1 
Execute txt 

MsgBox foo ''# Message 2 

''# vb2.vbs (i.e. "their code") 
j = 100 

Function foo 
    k = 100 
    foo = j + k 
End Function 

結果これが最善の方法であるかどうかは考えていませんが、現在のところ、私はより良い方法を考えることはできません。試してみる。

グローバル変数や関数名が "そのコード"で名前空間に衝突することに注意してください。

+1

ASPは、解析/トークン化されたASPページやその他の「コンパイル済み」ASPページをキャッシュするという欠点があります。 Executeに渡されるコードは、ページが呼び出されるたびに解析され「コンパイル」される必要があります。 – AnthonyWJones

+1

名前空間の衝突の危険性は、クラスの中に大部分のコードを置くことによって緩和することができ、それによってコードがグローバルレベルで作成する識別子のセットを大幅に減らすことができます。 – AnthonyWJones

+0

@AnthonyWJones:両方のあなたのコメントのために+1、あなたの権利。一方、私は、スレッド内で発生するので、解析/コンパイルのビジネスは無視できる時間を要すると思います。リクエストを実行しているスクリプトエンジンは既にロードされており、PayPalコードはミリ秒以内に利用できるほど簡単です。私は心配することはありません。 – Tomalak