4

私たち*には、注文プロセスを管理する Delphi + Intraweb (フロント エンド/Web コード管理用) によって作成された Web アプリケーションがあります。注文情報を取得し、トランザクション リクエストを authorize.net に送信します (基本的にはSIM サンプル コードを使用します)。これは見事に機能し、クレジット カードの注文が処理されます。

ただし、authorize.net がフォーム ポストをリレー応答 URL (http://developer.authorize.net/guides/SIM/Receipt_Options/Relay_Response.htm) に送り返すと、Intraweb アプリが異常終了します。TamperData を使用して、フォーム データが正しく送信されていることを確認できます。彼女は、自分のプログラムがデータベース接続を開き、その後タイムアウトになることを確認できます。

  • 私は自分の google-fu を使い果たしましたが、受信フォームの投稿を受け入れることができる Intraweb コードの例は見つかりませんでした。(おそらく、本当に必要なのはこれだけです。データIntraweb/Delphi の世界に入れることができれば、残りを管理できます。)
  • Intrawebのドキュメントは、IW が URL で渡されたパラメータを受け入れることを示唆していますが、POST データの受け入れについては言及していません。
  • authorize.net コミュニティ フォーラムには、基本的に「申し訳ありませんが、Delphi のコード サンプルはありません。ベンダーにお問い合わせください」という質問と回答の投稿があります。
  • Intraweb Tech Support は彼女を助けることができませんでした。(数週間前からのリクエストに応じていないと思いますが、定かではありません。)
  • 私は、フォーム オブジェクトが適切に作成されていることを確認するために、authorize.net フォーム ポストを模倣したテスト アプリケーション スタブを作成することを彼女に提案しました。(ドラッグ アンド ドロップ フォーム フィールドの裏側で何が起こっているのかよくわかりませんが、生成されたソース コードを調べてみました。) しかし、フォーム POST はフォーム POST ですよね? つまり、魔法ではなく HTTP です。しかし、それには2つの問題がありました。1.) Intraweb は、フォーム フィールド名をすべて大文字にするように強制しているようです。2.) 彼女は、IW はフォーム フィールド名の一部としてアンダースコアを受け入れないと言います。そしてもちろん、authorize.net が送信するもの、小文字、アンダースコアの区切りなどすべてにこだわっています。

サンプルコードへの洞察、ポインタ、またはすべてを破棄して別のソリューションに移行するためのアドバイスはありますか? 上記のいずれかをいただければ幸いです。

*私たちは、Delphi を徹底的に知っている古い学校の Delphi プログラマー/DBA ですが、Intraweb は「自動的に機能します」。私は、Java プログラマーであり、時には PHP ハッカーとして、ビジュアル IDE にアレルギーがあるが、ビジュアル IDE にアレルギーがあるが、解釈しようとしている、国の反対側にいます。彼女のためのインターネットと HTTP の謎。この特定の問題については、私たちは自分たちの部分の合計よりも小さいように見えます.

4

3 に答える 3

2

Authorize.net には SOAP インターフェイスを使用することをお勧めします。authorize.net で支払いとサブスクリプションを処理する Delphi/Intraweb アプリケーションを使用していますが、理解するのに 1 時間かかりました。小さなテスト プロジェクトをセットアップし、wsdl を authorize.net からインポートするだけで、提供されるすべてをすぐに処理できます。試して問題が発生したい場合は、私のコードからいくつかの例を挙げてお手伝いします。

于 2011-04-05T16:36:25.947 に答える
2

@ioan からの指示のおかげで、SOAP ソリューションを稼働させることができました。私の同僚は Pascal コードを書くのに少し試行錯誤しましたが、他の誰かの時間を節約できるように、彼女はそれを私に投稿するように渡しました。彼女が最終的に得たものは次のとおりです。

procedure TfrmSOAP.btnGetUnsettledReportClick(Sender: TObject);
var
  X : ServiceSoap;
  MyAuthentication : MerchantAuthenticationType;
  MyRequest : GetUnsettledTransactionListRequestType;
  aResponse : GetUnsettledTransactionListResponseType;
  msg : string;
  i : integer;
begin
  inherited;
  //Call the service
  X := GetServiceSoap(false);
  //create some variables/parameters to pass back and forth
  MyAuthentication := MerchantAuthenticationType.Create;
  MyRequest := GetUnsettledTransactionListRequestType.Create;
  aResponse := GetUnsettledTransactionListResponseType.Create;
  try
    //assign values to the MerchantAuthenticationType parameter
    MyAuthentication.name_ := APILoginTest;
    MyAuthentication.transactionKey := TransKeyTest;
    //request a list of unsettled transactions
    aResponse := X.GetUnsettledTransactionList(MyAuthentication, MyRequest);
    //check to see if the request was successful
    if aResponse.resultCode <> messagetypeenum(0) then
        begin
          ShowMsg('Error');
          ShowMsg(aResponse.messages[0].text);
        end;
    //step through the list, and display i, InvoiceNo, and LastName.
    for i := 0 to high(aResponse.transactions) do
       msg := msg + IntToStr(i) + ') ' + aResponse.transactions[i].invoiceNumber
              + '  '+ aResponse.transactions[i].lastName + #13;
    ShowMsg(msg);
  finally
    MyRequest.Free;
    MyAuthentication.Free;
    aResponse.Free;
  end;
end;

彼女はまた、テストと本番を実行するときに正しい情報を使用していることを確認するためのリマインダーを送信します。空のリストを取得し続け、コードのエラーであると考え、応答が得られませんでした。」

すべての助けと提案をありがとう!

于 2011-04-12T15:01:41.433 に答える
0

かつて、Intrawebおよびauthorize.netと連携するために特別に作成されたArcana(www.arcanatech.com)のクレジットカードコンポーネントがありました。使用に必要なSSLを構成するのは少し難しいですが、このコードは安価であり、6〜8年前に作成されたアプリケーションで現在も使用されています。

于 2011-04-05T14:31:48.923 に答える