2013-03-22 16 views
5

Şu anda Authorize.net'in SOAP sunucusuna çağrı yapmak için düğüm sabun (https://github.com/milewise/node-soap) kullanmaya çalışıyorum. Ancak, müşteri kodumun uygun parametreleri geçmesini sağlayamıyorum. Sunucu hatası yanıtı aldığımdan beri, işlevin sunucuyu çağırdığını biliyorum.Node.js Karmaşık Türlerle SOAP Çağrısı

WSDL'yi incelediğimde, sunucu çağrısının ComplexType parametreleri gerektirdiğini fark ettim. İhtiyacım olan ComplexTypes'i yaratmanın bir yolu var mı, yoksa sadece Javascript nesnelerini kullanabilir miyim? İşte şu anki kodum:

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

buna hiç bir çözüm bulabildin mi? – tier1

+0

Maalesef değil. –

cevap

1

Düğüm sabunu modülü, işlemi sunucuya göndermeden önce JavaScript nesnesini XML'e dönüştürür. Bu istek, wsdl tarafından belirtildiği gibi bir xml öğesinde sarar. Burada sağladığınız nesneyi geçerken node-soap tarafından neyin üretilebileceğine dair bir örnek (dış elemanın wsdl'ye göre node-soap modülü tarafından oluşturulduğunu not etmek önemlidir):

Bu örnek wsdl'yi kullanıyor

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

Ayrıca CyberSource API için, tam olarak nasıl Authorize.net API eserlerini bilmiyorum ama gerekirse kullanıcı adını belirteç kimlik doğrulama kullanarak kontrol etmek isteyebilirsiniz gibi geliyor:

client.setSecurity(new soap.WSSecurity('username’, ‘password’)); 
İlgili konular