index.js 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940
  1. process.on('message', (m, setHandle) => {
  2. // console.log('子进程接收到消息' + m, __dirname)
  3. const ffi = require('ffi')
  4. let posPath = require('path').join(__dirname, 'softpos.dll')
  5. if (process.env.NODE_ENV !== 'development') {
  6. posPath = posPath.replace('app.asar', 'app.asar.unpacked')
  7. }
  8. console.log(posPath)
  9. let softpos = ffi.Library(posPath, {
  10. 'CreditTrans': ['int', ['char*', 'char*']]
  11. })
  12. try {
  13. let output = Buffer.alloc(287)
  14. let input = Buffer.alloc(287)
  15. input.write(getPayParams(JSON.parse(m)))
  16. softpos.CreditTrans(input, output)
  17. // 输出结果
  18. process.send(output.toString('utf-8'))
  19. } catch (e) {
  20. console.log('错误', e)
  21. }
  22. // sendHandle是一个 net.Socket 或 net.Server 对象
  23. })
  24. function getPayParams (params) {
  25. let { termId, salerId, tradeType, total, payType, codeInfo, originalInfo } = params
  26. termId = termId.padEnd(10)
  27. salerId = salerId.padEnd(10)
  28. total = total.padStart(12, '0')
  29. codeInfo = codeInfo.padEnd(32)
  30. originalInfo = originalInfo.padEnd(96)
  31. console.table({
  32. termId, salerId, tradeType, total, payType, codeInfo, originalInfo
  33. })
  34. return termId + salerId + tradeType + total + payType + codeInfo + originalInfo
  35. }