2013-03-22 21 views
5

現在、ノード・ソープhttps://github.com/milewise/node-soap)を使用してAuthorize.netのSOAPサーバーを呼び出そうとしています。しかし、私はクライアントコードが適切なパラメータを渡すように見えることはできません。私はサーバーのエラー応答を取得するので、関数がサーバーを呼び出していることを知っています。Node.js複雑なタイプのSOAPコール

WSDLを調べると、サーバー呼び出しにComplexTypeパラメーターが必要であることがわかりました。必要なComplexTypesを作成する方法はありますか、またはJavascriptオブジェクトを使用するだけですか?私の現在のコードは以下の通りです:

var soap = require('soap'); 

    var url = 'https://api.authorize.net/soap/v1/Service.asmx?WSDL'; 

    soap.createClient(url, function(err, client) { 

    var args = { 
     merchantAuthentication: { 
     name: '285tUPuS', 
     transactionKey: '58JKJ4T95uee75wd' 
     } 
    }; 

    client.Service.ServiceSoap12.GetTransactionDetails(args, 
     function(err, result) { 

      if (err) { 
      console.log(err); 
      } else { 
      console.log(result.GetTransactionDetailsResult[0].messages); 
      } 
     }); 

});

+0

あなたはこれまでの解決策を見つけましたか? – tier1

+0

残念ながら、そうではありません。 –

答えて

1

node-soapモジュールは、トランザクションをサーバーに送信する前にJavaScriptオブジェクトをXMLに変換しています。これはwsdlの概要に従ってxml要素に要求をラップします。以下は、あなたが提供したオブジェクトを渡すときにnode-soapによって生成されるものの例です(外側の要素がwsdlに従ってnode-soapモジュールによって作成されていることに注意してください)。

この例ではwsdlサイバーソースのAPIも

<data:requestMessage xmlns:data="urn:schemas-cybersource-com:transaction-data-1.93" xmlns="urn:schemas-cybersource-com:transaction-data-1.93"> 

    <data:merchantAuthentication> 
    <data:name>285tUPuS</data:name> 
    <data:transactionKey>58JKJ4T95uee75wd</data:transactionKey> 
    </data:merchantAuthentication> 

</data:requestMessage> 

のために、私はAuthorize.net APIが動作します正確にどのように知りませんが、あなたが必要な場合は、ユーザー名トークン認証を使用してチェックアウトする場合がありますように聞こえる:

client.setSecurity(new soap.WSSecurity('username’, ‘password’)); 
関連する問題