123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105 |
- var https = require("https");
- var jsrsasign = require('jsrsasign');
- var urlencode = require('urlencode');
-
- // 签名使用的私钥(瑞宏网提供)
- var privateKeyPem = "请向瑞宏网工作人员索取";
- // 销售方纳税人识别号
- var taxpayerCode = "请向瑞宏网工作人员索取";
-
- /**
- * 生成签名
- * @param privateKeyPem 签名使用的私钥(瑞宏网提供)
- * @param digestString 需要签名的字符串
- */
- var getSign = function(privateKeyPem, digestString) {
- var prvKey = jsrsasign.KEYUTIL.getKeyFromPlainPrivatePKCS8PEM("-----BEGIN PRIVATE KEY-----" + privateKeyPem);
- var sig = new jsrsasign.KJUR.crypto.Signature({"alg": "MD5withRSA"});
- sig.init(prvKey); // 设置key
- var signHex = sig.signString(digestString); // 签名
- return jsrsasign.hex2b64(signHex); // 得到签名Hex,并转成base64string
- };
-
- // 请求数据
- var requestData = {
- serialNo: "15244572079331206",
- postTime: "2017-11-01 09:42:00",
- order: {
- account: ".",
- address: ".",
- email: "test@chinaeinv.cn",
- tel: "18600000000",
- orderNo: "zbss000000002"
- },
- invoice: {
- taxpayerCode: taxpayerCode,
- customerName: "abc",
- customerCode: "370212350288104",
- drawer: "abc",
- totalAmount: "0.01",
- customerAddress: "abc",
- customerTel: "12345678",
- customerBankName: "abc",
- customerBankAccount: "984484121854121",
- payee: "abc",
- reviewer: "abc",
- items: [
- {
- amount: "0.01",
- code: "zbss00000000101",
- name: "abc",
- price: "0.01",
- quantity: "1",
- taxRate: "0.17",
- uom: "abc",
- type: "0",
- spec: "abc",
- catalogCode: "1020202000000000000"
- }
- ]
- },
- notices: [
- {
- type: "email",
- value: "hongpujun@chinaeinv.cn"
- },
- {
- type: "sms",
- value: "18660243735"
- }
- ]
- };
-
- // 请求数据的字符串格式
- var requestString = JSON.stringify(requestData);
-
- // 签名字符串
- var sign = getSign(privateKeyPem, requestString);
-
- // http请求参数
- var options = {
- host: 'www.chinaeinv.com', // 瑞宏网域名
- port: 943, // 瑞宏网端口(测试环境:943,生产环境:443)
- path: '/igs/api/invoiceApi.jspa?appCode=PTTEST13&cmdName=chinaeinv.api.invoice.v3.kp_async&sign=' + urlencode(urlencode(sign)), // 注意签名字段需要要两次urlencode,以避免加号变空格
- method:'POST',
- headers:{
- 'Content-Type': 'application/json',
- 'Content-Length': Buffer.byteLength(requestString)
- }
- }
-
- // 发送 HTTPS POST 请求
- var req = https.request(options, function(res) {
- console.log("请求报文: ", requestString);
- console.log("签名:", sign);
- console.log("statusCode: ", res.statusCode);
- var _data='';
- res.on('data', function(chunk){
- _data += chunk;
- });
- res.on('end', function(){
- console.log("响应报文:",_data)
- });
- });
- req.write(requestString);
- req.end;
|