| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485 |
- const fs = require('fs')
- process.on('message', async (message, setHandle) => {
- let path = message.split('=')[0]
- let m = message.split('=')[1]
- let posConfig = await getPosConfigData(path)
- // 模拟交易成功
- if (posConfig && posConfig.mock && JSON.parse(m).transcode === '00') {
- let output = JSON.stringify({
- resp_code: '00',
- resp_chin: '支付成功',
- bank_code: 'aaaaa',
- cardno: 'bbbbbb',
- expr: 'ccccccc',
- trace: 'ddddddd',
- amount: '0000000000001',
- authcode: 'xxxxx',
- ordernum: 'eeeeee',
- zffs: '01',
- shopno: 'ffffff',
- terminal: 'ggggg'
- })
- process.send(output)
- process.exit(0)
- }
- const ffi = require('ffi')
- let posPath = require('path').join(posConfig.softposPath, 'MISPOS.dll')
- const isExist = fs.existsSync(posPath)
- if (!isExist) {
- // 未找到支付程序
- exit()
- }
- if (process.env.NODE_ENV !== 'development') {
- posPath = posPath.replace('app.asar', 'app.asar.unpacked')
- }
- const kernel32 = ffi.Library('kernel32', {
- 'SetDllDirectoryA': ['bool', ['string']]
- })
- kernel32.SetDllDirectoryA(posConfig.softposPath)
- let mispos = ffi.Library(posPath, {
- 'BankTrans': ['int', ['char*', 'char*']]
- })
- try {
- let output = Buffer.alloc(500)
- let input = Buffer.alloc(500)
- input.write(m)
- mispos.BankTrans(input, output)
- // 输出结果
- process.send(output)
- process.exit(0)
- } catch (e) {
- process.send(e.toString())
- process.exit(0)
- }
- })
- function exit () {
- process.send(0)
- process.exit(0)
- }
- function getPosConfigData (path) {
- return new Promise((resolve, reject) => {
- let configFile = path
- console.log(configFile)
- let fs = require('fs')
- fs.open(configFile, 'r', (err, data) => {
- if (err) {
- console.log(err)
- resolve()
- return
- }
- resolve(JSON.parse(fs.readFileSync(configFile)))
- })
- })
- }
|