我尝试使用node-soap客户端
向wdsl发送请求这是我的代码:
var url = 'https://bpm.shaparak.ir/pgwchannel/services/pgw?wsdl';
soap.createClient(url, function(err, client) {
var today = new Date();
var params = {
terminalId: "1926577",
userName: "test2",
userPassword: "test1",
orderId: receipt.recieptId + "",
amount: parseInt(receipt.overal_price) + "",
localDate: today.format('ymd'),
localTime: today.format('His'),
additionalData: "Customer No: 15220",
callBackUrl: "http://test.ir/pay/verify",
payerId: parseInt(receipt.user) + ""
};
console.log(params);
client.bpPayRequest(params, function(err, result) {
if (err) {
throw err;
}
console.log(result);
});
并且从wsdl:
返回此错误错误:soap:客户端:发现了意外的包装元素bpPayRequest 预计{http://interfaces.core.sw.bps.com/} bpPayRequest。
似乎没有将ns1添加为
的前缀xml请求中的
节点
我将模块更新到v0.13.0并添加了以下内容:
used this code :
var options = {
ignoredNamespaces: {
namespaces: [],
override: true
}
}
仍然是同样的错误:(
TEMPORARILY FIX 将此添加到node-soap的wsdl.js文件的第1496行:
name = 'ns1:'+name;
答案 0 :(得分:4)
使用此:
var options = {
overrideRootElement: {
namespace: 'ns1'
}
};
适用于版本0.16
答案 1 :(得分:2)
与node-soap版本0.14.0存在相同的问题 切换回0.11.0就解决了它。
答案 2 :(得分:0)
从版本0.16.0开始,建议的重置ignoredNamespaces
的解决方案再次起作用:
var options = {
ignoredNamespaces: {
namespaces: [],
override: true
}
}
答案 3 :(得分:0)
在版本0.16.0中,您应该更改第1530行:
WSDL.prototype.objectToDocumentXML = function(name, params, nsPrefix, nsURI, type) {
var args = {};
args["ns1:" + name] = params; // instead of args[name] = params;
...