gpt4 book ai didi

具有复杂类型的 Node.js SOAP 调用

转载 作者:搜寻专家 更新时间:2023-10-31 22:35:05 26 4
gpt4 key购买 nike

我目前正在尝试使用 node-soap ( https://github.com/milewise/node-soap ) 调用 Authorize.net 的 SOAP 服务器。但是,我似乎无法让我的客户端代码传递正确的参数。我知道该函数正在调用服务器,因为我收到服务器错误响应。

当我检查 WSDL 时,我注意到服务器调用需要 ComplexType 参数。有没有一种方法可以创建我需要的 ComplexType,或者我可以只使用 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);
}
});

});

最佳答案

node-soap 模块在将事务发送到服务器之前将您的 JavaScript 对象转换为 XML。它将请求包装在 xml 元素中,如 wsdl 所述。以下是传递您提供的对象时 node-soap 可能生成的示例(重要的是要注意外部元素是由 node-soap 模块根据 wsdl 创建的):

此示例使用 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 是如何工作的,但听起来您可能想在必要时使用用户名 token 身份验证进行检查:

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

关于具有复杂类型的 Node.js SOAP 调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15579743/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com