5

現在、node-soap ( https://github.com/milewise/node-soap ) を使用して Authorize.net の 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);
          }
      });

});

4

1 に答える 1

1

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

この例では、Cyber​​Source API の wsdl を使用しています

<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’));
于 2013-11-07T19:08:25.283 に答える