有人知道如何使用Netsuite https模块将自签名证书文件(.pem或.pfx扩展名)附加到外部Web服务来创建请求吗?
我想使用地图/缩小脚本将发票自动报告给西班牙税务注册实体(SII)。我已使用POSTMAN和CURL命令行将生成的XML测试到SII Web界面中,并且Web服务收到了我的请求并返回了预期的XML响应。但是我无法使用N / https模块创建请求而获得相同的结果,这主要是因为我不知道如何随附有证书文件一起发送该请求。我的脚本失败,并显示一条消息:
“类型”:“ error.SuiteScriptError”,“名称”:“ SSS_CONNECTION_TIME_OUT”
这是我尝试过的代码:
var siiURL = 'https://www7.aeat.es/wlpl/SSII-FACT/ws/fe/SiiFactFEV1SOAP';
//get the content of the generated xml
var xml_content = getXMLContent(url);
//get the url of the certificate file that is saved in the NS file cabinet
var certificate = getClientCertificate();
log.audit({ title: 'Certificate File', details: certificate });
var headers = {
'Content-Type': 'text/xml; charset=utf-8',
'SOAPAction': 'SuministroLRFacturasEmitidas',
'local_cert': certificate,
'passphrase': '****'
};
var SIIresponse = https.post({ url: siiURL, body: xml_content, headers: headers });
log.audit({title: 'Response from SII', details: SIIresponse.code + ' | ' + SIIresponse.body });
示例代码段摘自PHP的一个帖子:https://es.stackoverflow.com/questions/77233/conectar-con-el-web-service-de-sii-aeat-soap-php
西班牙税收报告实体提供了一个pfx文件进行身份验证。出于测试目的,我使用以下帖子创建了一个PEM文件(cl和key以及捆绑的.pem文件):https://es.stackoverflow.com/a/131407/59793
我猜想Web服务在请求的标头中不希望证书文件,但是我不知道应将其放置在何处或是否有合适的标头密钥。另外,我找到了有关如何将.cert / .pem文件保存到Netsuite的信息,但据我所知,这是针对套件商务的。
https://noblue.co.uk/blog/netsuite-tips-installing-an-ssl-certificate-on-suitecommerce
感谢您的帮助或评论。
PD。请原谅任何语法错误或错字。
答案 0 :(得分:0)
您可以尝试使用N/https/clientCertificate
模块:
define(['N/https/clientCertificate'], function (cert) {
....
....
....
var siiURL = 'https://www7.aeat.es/wlpl/SSII-FACT/ws/fe/SiiFactFEV1SOAP';
//get the content of the generated xml
var xml_content = getXMLContent(url);
var key = "certID";
var headers = {
'Content-Type': 'text/xml; charset=utf-8', // Use application/soap+xml instead??
'SOAPAction': 'SuministroLRFacturasEmitidas'
};
var SIIresponse = cert.post({
url: siiURL,
certId: key,
body: xml_content,
headers: headers
});
log.audit({title: 'Response from SII', details: SIIresponse.code + ' | ' + SIIresponse.body });
....
....
....