2013-03-22 12 views
5

Obecnie próbuję użyć węzeł-mydło (https://github.com/milewise/node-soap), aby wykonywać połączenia z serwerem SOAP Authorize.net. Jednak nie mogę sprawić, że mój kod klienta przejdzie odpowiednie parametry. Wiem, że funkcja wywołuje serwer, ponieważ otrzymuję odpowiedź błędu serwera.Node.js Połączenie SOAP z typami złożonymi

Podczas przeglądania WSDL zauważam, że wywołanie serwera wymaga parametrów ComplexType. Czy istnieje sposób tworzenia złożonych typów, których potrzebuję, czy mogę użyć obiektów JavaScript? Oto mój obecny kod:

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

Czy kiedykolwiek znalazłeś rozwiązanie tego problemu? – tier1

+0

Niestety, nie. –

Odpowiedz

1

Moduł węzła mydła konwertuje obiekt JavaScript do formatu XML przed wysłaniem transakcji na serwer. Zawija żądanie w elemencie xml zgodnie z instrukcją wsdl. Oto przykład tego, co może być wytwarzane przez mydło-węzeł podczas przekazywania podanego obiektu (ważne, aby zauważyć, że element zewnętrzny jest tworzony przez moduł mydła węzła zgodnie z kluczem wsdl):

Ten przykład używa klucza wsdl dla API CyberSource

<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> 

Ponadto, nie wiem dokładnie, jak działa api authorize.net, ale to brzmi jak możesz sprawdzić za pomocą użytkownika, o ile to konieczne uwierzytelnianie tokena:

client.setSecurity(new soap.WSSecurity('username’, ‘password’)); 
Powiązane problemy