{"_id":"@rytass/payments-adapter-hwanan","_rev":"26-3a88c785d8d6480bafd797c9ab30139f","name":"@rytass/payments-adapter-hwanan","dist-tags":{"latest":"0.3.0"},"versions":{"0.0.2":{"name":"@rytass/payments-adapter-hwanan","version":"0.0.2","keywords":["rytass","hwanan","payments"],"author":{"name":"Chia Yu Pai","email":"fantasyatelier@gmail.com"},"license":"MIT","_id":"@rytass/payments-adapter-hwanan@0.0.2","maintainers":[{"name":"fantasywind","email":"fantasyatelier@gmail.com"}],"homepage":"https://github.com/Rytass/Utils#readme","bugs":{"url":"https://github.com/Rytass/Utils/issues"},"dist":{"shasum":"5bfd2fdfe84978d025bb05a46c6d11f286a3070f","tarball":"https://registry.npmjs.org/@rytass/payments-adapter-hwanan/-/payments-adapter-hwanan-0.0.2.tgz","fileCount":14,"integrity":"sha512-I+v4GcvCHibszpD2QiKGX/ZgDhqzIV5tyweBlMg+e5XX/nk7KqnNvIfhBbPE/jRy6u13S28Q8wbKJDNe6i5Lfg==","signatures":[{"sig":"MEYCIQDtKU+rP7iENikem9iQfH3yNCJyH/PZPpONq13QexBrMwIhAMEliK91jLuabTPntXhrP0kWXNNNGeqey+TZAqlyXYB3","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":38206,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJkGdGEACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqF0A//dlfiCF0NGsGc8kzu+nj04x4Dft2qV0DnPDu/FPduKod2WgRM\r\n0hbEqNsQS5dNMW7xnT0bthK+LKsCs6YaulbYlZdLszK9HT9VUhwoGm+jfXP1\r\nH41ZzGTAoSd0KiBY9QqziyDGEg4SNFUvcAtBAPv0UOreK1VTMMq+QVWpInFL\r\nhBoLkkvzNrA9ryGNuXToJRhpPzhtLybYlS9rfvQWPD1u8KKJmXE6PnEDNJ6l\r\nGbWmMXPSti6akB7EevlehIshRlLyjRya0unnKB+cK1WCO6fIPVXhNbe5AHbx\r\nNitOc0A77WbdFXsmupm7hzKjhfd58h1QTMQfs2f6e2CLAGCl5SatMAuBiApB\r\nySu3HcuAG4FBBr+ZVlajk8lRKdShzyEvieijB0fiQyG6Zk1IMS4w/GctNS0i\r\nTyQyd+pnja1R2inUpXvnWjwckhw8Ofa35rjKShmh9RQnF+HF+QWJ1mBZ/Nnp\r\nO0pGJtEZgenjOQtEB8dG94QUSnfRFKu+wAEHo0IP1jYpLPriktjAL5LZY+aC\r\nx6C36z0TH4lbcUtKmkFbh3aACtDMBsjmOLl6hjsbpjAakHWc/BcpZzgC3INW\r\nYRfOuPtoAQ+Qq3GuHByxBxEjGSrRw+B6zKRXms29EXwlYfUE+iwsuCuMFY5H\r\nExlCR+g8d3q/Ic3uLfOXk3jaMm4E5fvZ6vU=\r\n=haXe\r\n-----END PGP SIGNATURE-----\r\n"},"main":"./index.cjs.js","module":"./index.js","gitHead":"6db12040c62e239b9d0edd8ce4e997d0d97246e1","typings":"./index.d.ts","_npmUser":{"name":"fantasywind","email":"fantasyatelier@gmail.com"},"repository":{"url":"git+https://github.com/Rytass/Utils.git","type":"git"},"_npmVersion":"lerna/5.5.1/node@v18.14.2+arm64 (darwin)","description":"Hwa Nan Bank Payment Adapter","directories":{},"_nodeVersion":"18.14.2","dependencies":{"axios":"^1.3.4","ngrok":"^4.3.3","lru-cache":"^8.0.4","@rytass/payments":"^0.0.16"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/payments-adapter-hwanan_0.0.2_1679413635950_0.5054646451078288","host":"s3://npm-registry-packages"}},"0.0.3":{"name":"@rytass/payments-adapter-hwanan","version":"0.0.3","keywords":["rytass","hwanan","payments"],"author":{"name":"Chia Yu Pai","email":"fantasyatelier@gmail.com"},"license":"MIT","_id":"@rytass/payments-adapter-hwanan@0.0.3","maintainers":[{"name":"fantasywind","email":"fantasyatelier@gmail.com"}],"homepage":"https://github.com/Rytass/Utils#readme","bugs":{"url":"https://github.com/Rytass/Utils/issues"},"dist":{"shasum":"2b5bc7320db60f7f7cb53aafbef110807e1dfb01","tarball":"https://registry.npmjs.org/@rytass/payments-adapter-hwanan/-/payments-adapter-hwanan-0.0.3.tgz","fileCount":14,"integrity":"sha512-7wXyGM3J4ZICVXrp3VBFukF+1Dl2pJtB4D1f8iMUFNtjyOSSW6WFaxJrts9oV6gOsFqU290PLWkES3RC9IoRJA==","signatures":[{"sig":"MEQCIBqXNjmHdJUX88G/ILIdgeMr++VUPt9PBLeBFOpU40yhAiBi7SXlpFXdeUJlsFd9+eVOP7QXxgQw1RT1adLg82kcYA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":38679,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJkJoF4ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmqq6w//csrsa9UsNPrOqHQghDn1IbaxPJK75fgNKbkDRpAxAe637oPa\r\nwJWbXqXco9GanITDxws9uIxszo5tlPNGVm3i6jr4k/sjGatrMkaRJul5Fypk\r\nGNGT9m0Fg/amZQ3r4XW8XTZURcb8U1m+wUIxla5vxObJ9iTwUyXby4oxbZtI\r\nWxarirntDIjJDwVTTaUMK4DTBf4pNyoVdYV26q3LMTbecwCu3XEhlw2X/DCJ\r\niDaSEUUR3MQ5w9pNVdQQAiS2aYgePndIWxkUdvZp7aYjzDDxoimCtKZH/BJ6\r\nCsLLQ/22W6WEHfwrTz/P4+iNttetVHJeDg3fWA7ap27h1CVO79Sp8BRsa+Z3\r\nzt+U/GMj06c5E6aaPFrLVxcxp1oROCdeLdComOxIdFmz57BKywKwcUw6Hj1r\r\nh11xQKla0k/NE7739f2NT4GfbsJjRGVkEdUzkiKOOE8UCrE7u7GzUb+6fcaU\r\nH+68gQhc2MA8lxb9+4R8uV0fNjNfdQpqHFeWjM7SFdRNHZCtvomCjlFyxai0\r\nYSJPDejkcujwFRKRRKHSCEJghbKrBvhGCIc+1FpO2IrQfSJXJha1bUB5dH8S\r\nkrldOHQjSUAtDxwfpv8rEGYXqwj87/RdxOOhT+stXoNSha9/zWBkwtm01oEP\r\nY8SEfeYUM9TH3tkubsV/G55hFOdf8up1df8=\r\n=jz9j\r\n-----END PGP SIGNATURE-----\r\n"},"main":"./index.cjs.js","module":"./index.js","gitHead":"e9343d0705b3bf39ad65a6149d1581beccb39686","typings":"./index.d.ts","_npmUser":{"name":"fantasywind","email":"fantasyatelier@gmail.com"},"repository":{"url":"git+https://github.com/Rytass/Utils.git","type":"git"},"_npmVersion":"lerna/5.5.1/node@v18.14.2+arm64 (darwin)","description":"Hwa Nan Bank Payment Adapter","directories":{},"_nodeVersion":"18.14.2","dependencies":{"axios":"^1.3.4","ngrok":"^4.3.3","lru-cache":"^8.0.4","@rytass/payments":"^0.0.16"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/payments-adapter-hwanan_0.0.3_1680245111917_0.8370359426639824","host":"s3://npm-registry-packages"}},"0.0.4":{"name":"@rytass/payments-adapter-hwanan","version":"0.0.4","keywords":["rytass","hwanan","payments"],"author":{"name":"Chia Yu Pai","email":"fantasyatelier@gmail.com"},"license":"MIT","_id":"@rytass/payments-adapter-hwanan@0.0.4","maintainers":[{"name":"fantasywind","email":"fantasyatelier@gmail.com"}],"homepage":"https://github.com/Rytass/Utils#readme","bugs":{"url":"https://github.com/Rytass/Utils/issues"},"dist":{"shasum":"70cd37044a04b81e679767fb1cfaf10923083cda","tarball":"https://registry.npmjs.org/@rytass/payments-adapter-hwanan/-/payments-adapter-hwanan-0.0.4.tgz","fileCount":14,"integrity":"sha512-59xbjf51Y3gEyA6MlwuEEIkU7WKNqLYv4O4iHFGsUIS88KRCkAGiWBr+uesc192j0v+PPPFRArPkILzKTI1yuA==","signatures":[{"sig":"MEQCID67ARZyInsL4UJnV7TFkMfSS++2AVuqkH1CUz/CoQe/AiAoHGAo2ZYPj76OlokYUEU4R+blb/cjdrIijW5Fmeb7nw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":38956},"main":"./index.cjs.js","module":"./index.js","gitHead":"cc99e8d3df79b3e26fb3b71049da413e26a4b4d0","typings":"./index.d.ts","_npmUser":{"name":"fantasywind","email":"fantasyatelier@gmail.com"},"repository":{"url":"git+https://github.com/Rytass/Utils.git","type":"git"},"_npmVersion":"lerna/6.6.2/node@v20.1.0+arm64 (darwin)","description":"Hwa Nan Bank Payment Adapter","directories":{},"_nodeVersion":"20.1.0","dependencies":{"axios":"^1.4.0","ngrok":"^4.3.3","lru-cache":"^9.1.2","@rytass/payments":"^0.0.16"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/payments-adapter-hwanan_0.0.4_1685945302453_0.21694673570390677","host":"s3://npm-registry-packages"}},"0.0.5":{"name":"@rytass/payments-adapter-hwanan","version":"0.0.5","keywords":["rytass","hwanan","payments"],"author":{"name":"Chia Yu Pai","email":"fantasyatelier@gmail.com"},"license":"MIT","_id":"@rytass/payments-adapter-hwanan@0.0.5","maintainers":[{"name":"fantasywind","email":"fantasyatelier@gmail.com"}],"homepage":"https://github.com/Rytass/Utils#readme","bugs":{"url":"https://github.com/Rytass/Utils/issues"},"dist":{"shasum":"04c90d391761a3d438a58e73dc677b1df871e493","tarball":"https://registry.npmjs.org/@rytass/payments-adapter-hwanan/-/payments-adapter-hwanan-0.0.5.tgz","fileCount":14,"integrity":"sha512-Qtw5bUYwLNVGK2p7qiJNX7MUkADfXbbnAWA7J0zaeZdmUJ+BJe9G3TM654UG7Vp7Vi6ENWbMmLAaRnnFVfugjA==","signatures":[{"sig":"MEYCIQCy51ri37rmn+WKX4OgbVDaOiGC3dbA6qyoGJxFkd323AIhANlCKnxez7q8fA+ReedSCSgY8CRA5dJyprytdKJFEUPw","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":39266},"main":"./index.cjs.js","module":"./index.js","gitHead":"f5030cd26543f48cddaffb7e59d8821f9d8f539d","typings":"./index.d.ts","_npmUser":{"name":"fantasywind","email":"fantasyatelier@gmail.com"},"repository":{"url":"git+https://github.com/Rytass/Utils.git","type":"git"},"_npmVersion":"lerna/6.6.2/node@v20.5.0+arm64 (darwin)","description":"Hwa Nan Bank Payment Adapter","directories":{},"_nodeVersion":"20.5.0","dependencies":{"axios":"^1.4.0","ngrok":"^4.3.3","lru-cache":"^9.1.2","@rytass/payments":"^0.0.16"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/payments-adapter-hwanan_0.0.5_1691584051318_0.8286624092805044","host":"s3://npm-registry-packages"}},"0.1.0":{"name":"@rytass/payments-adapter-hwanan","version":"0.1.0","keywords":["rytass","hwanan","payments"],"author":{"name":"Chia Yu Pai","email":"fantasyatelier@gmail.com"},"license":"MIT","_id":"@rytass/payments-adapter-hwanan@0.1.0","maintainers":[{"name":"fantasywind","email":"fantasyatelier@gmail.com"}],"homepage":"https://github.com/Rytass/Utils#readme","bugs":{"url":"https://github.com/Rytass/Utils/issues"},"dist":{"shasum":"8aa6d71b6e2d1abbeff90874e86aa4d03e1db7a5","tarball":"https://registry.npmjs.org/@rytass/payments-adapter-hwanan/-/payments-adapter-hwanan-0.1.0.tgz","fileCount":14,"integrity":"sha512-OgWbiDP5HpvU/peiGYF69aSpxUVgrYsTrsmL8LIC9OI5PH4iA9OWjqMX0P8+IYjsHxRLmNp2qxvYANgCMWBOBw==","signatures":[{"sig":"MEYCIQD1soILFRY5Qd3iNeSpDpFpwSu+VtPrithdKhDUUedIHAIhAOEYaHHizwmldPo9vYA33ixd5PFw3w24D+4cP83iJdFZ","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":39848},"main":"./index.cjs.js","module":"./index.js","gitHead":"15ee414ed39e9e21e0743048e4b990e5b6c80d87","typings":"./index.d.ts","_npmUser":{"name":"fantasywind","email":"fantasyatelier@gmail.com"},"repository":{"url":"git+https://github.com/Rytass/Utils.git","type":"git"},"_npmVersion":"lerna/6.6.2/node@v20.0.0+x64 (darwin)","description":"Hwa Nan Bank Payment Adapter","directories":{},"_nodeVersion":"20.0.0","dependencies":{"axios":"^1.4.0","ngrok":"^4.3.3","lru-cache":"^9.1.2","@rytass/payments":"^0.1.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/payments-adapter-hwanan_0.1.0_1691820531909_0.0885860637004019","host":"s3://npm-registry-packages"}},"0.1.1":{"name":"@rytass/payments-adapter-hwanan","version":"0.1.1","keywords":["rytass","hwanan","payments"],"author":{"name":"Chia Yu Pai","email":"fantasyatelier@gmail.com"},"license":"MIT","_id":"@rytass/payments-adapter-hwanan@0.1.1","maintainers":[{"name":"fantasywind","email":"fantasyatelier@gmail.com"}],"homepage":"https://github.com/Rytass/Utils#readme","bugs":{"url":"https://github.com/Rytass/Utils/issues"},"dist":{"shasum":"45648f43bf644db7d928a85d34a987a20611b342","tarball":"https://registry.npmjs.org/@rytass/payments-adapter-hwanan/-/payments-adapter-hwanan-0.1.1.tgz","fileCount":14,"integrity":"sha512-dUzikLzWYnhaMKaCL9OUOozFnAQIco5cIYexpwC0DplNPB62kNZlHdw/fLKpDQ5ogHo4dX573+Mu314SphtlMg==","signatures":[{"sig":"MEUCIHTSeycWzAWwIpLbQpTJIx+QEnKY04ZKKT8iSlBwLJ4JAiEAuJ1QO+HO+IisBXP+NTtU872YAX0aLlvyqQ/TFMGwJDE=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":39848},"main":"./index.cjs.js","module":"./index.js","gitHead":"ca9f8b5be74cef4a7c9c01e54025b9cb913a2543","typings":"./index.d.ts","_npmUser":{"name":"fantasywind","email":"fantasyatelier@gmail.com"},"repository":{"url":"git+https://github.com/Rytass/Utils.git","type":"git"},"_npmVersion":"lerna/6.6.2/node@v20.5.1+arm64 (darwin)","description":"Hwa Nan Bank Payment Adapter","directories":{},"_nodeVersion":"20.5.1","dependencies":{"axios":"^1.4.0","ngrok":"^4.3.3","lru-cache":"^9.1.2","@rytass/payments":"^0.1.1"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/payments-adapter-hwanan_0.1.1_1697095321508_0.8565882656097772","host":"s3://npm-registry-packages"}},"0.1.2":{"name":"@rytass/payments-adapter-hwanan","version":"0.1.2","keywords":["rytass","hwanan","payments"],"author":{"name":"Chia Yu Pai","email":"fantasyatelier@gmail.com"},"license":"MIT","_id":"@rytass/payments-adapter-hwanan@0.1.2","maintainers":[{"name":"fantasywind","email":"fantasyatelier@gmail.com"}],"homepage":"https://github.com/Rytass/Utils#readme","bugs":{"url":"https://github.com/Rytass/Utils/issues"},"dist":{"shasum":"70ec56a30411a7805f286766f52f9d4ba724fb79","tarball":"https://registry.npmjs.org/@rytass/payments-adapter-hwanan/-/payments-adapter-hwanan-0.1.2.tgz","fileCount":14,"integrity":"sha512-Vbt3ygOJD+av3G2EXgOJ/NMHlNM4zVCDE3T7KN+v66ApI7bo9xNWnXRK0FujsETSELCqWkW+iwhWiQUX8sS5Ig==","signatures":[{"sig":"MEUCIQD/zr9hmNONoAGH2sA8zlIF75vWRnZKvnEpOkASdgRPewIgejhYj0363c5vkRTdXUm6HC6hIKWHBvFDjQKlQy/9KE4=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":39848},"main":"./index.cjs.js","module":"./index.js","gitHead":"bfe8f6cf4c93c355877b9ae4345527c4b51aaf7a","typings":"./index.d.ts","_npmUser":{"name":"fantasywind","email":"fantasyatelier@gmail.com"},"repository":{"url":"git+https://github.com/Rytass/Utils.git","type":"git"},"_npmVersion":"lerna/6.6.2/node@v20.5.0+arm64 (darwin)","description":"Hwa Nan Bank Payment Adapter","directories":{},"_nodeVersion":"20.5.0","dependencies":{"axios":"^1.4.0","ngrok":"^4.3.3","lru-cache":"^9.1.2","@rytass/payments":"^0.1.2"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/payments-adapter-hwanan_0.1.2_1700927465862_0.39098587189906553","host":"s3://npm-registry-packages"}},"0.1.3":{"name":"@rytass/payments-adapter-hwanan","version":"0.1.3","keywords":["rytass","hwanan","payments"],"author":"Chia Yu Pai <fantasyatelier@gmail.com>","license":"MIT","_id":"@rytass/payments-adapter-hwanan@0.1.3","maintainers":[{"name":"fantasywind","email":"fantasyatelier@gmail.com"}],"homepage":"https://github.com/Rytass/Utils#readme","bugs":{"url":"https://github.com/Rytass/Utils/issues"},"dist":{"shasum":"5184a822a3d65fba6686c3e626c577eda26b8890","tarball":"https://registry.npmjs.org/@rytass/payments-adapter-hwanan/-/payments-adapter-hwanan-0.1.3.tgz","fileCount":14,"integrity":"sha512-spR7zPEpQuPZ+7yw4XUpHQ1LcRVZs/QqNZtgQLc2VL+xqaC/d6QDVrt19inGwGFKIUc82LgSR8E4WZAavZ4Ogg==","signatures":[{"sig":"MEQCICq1ziq1sOzjEPKCjpXzV1rvy5oY9c7pjDHKQImstwQfAiB6KXrB4WTta299/3Ir9ze4zpZ2MmIO+FIiGTO/W00f2Q==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":39765},"main":"./index.cjs.js","module":"./index.js","typings":"./index.d.ts","_npmUser":{"name":"fantasywind","email":"fantasyatelier@gmail.com"},"repository":{"url":"git+https://github.com/Rytass/Utils.git","type":"git"},"_npmVersion":"lerna/8.1.7/node@v22.4.1+arm64 (darwin)","description":"Hwa Nan Bank Payment Adapter","directories":{},"_nodeVersion":"22.4.1","dependencies":{"axios":"^1.7.2","ngrok":"^4.3.3","lru-cache":"^11.0.0","@rytass/payments":"^0.1.2"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/payments-adapter-hwanan_0.1.3_1721715554958_0.3275308880246901","host":"s3://npm-registry-packages"}},"0.1.4":{"name":"@rytass/payments-adapter-hwanan","version":"0.1.4","keywords":["rytass","hwanan","payments"],"author":"Chia Yu Pai <fantasyatelier@gmail.com>","license":"MIT","_id":"@rytass/payments-adapter-hwanan@0.1.4","maintainers":[{"name":"fantasywind","email":"fantasyatelier@gmail.com"}],"homepage":"https://github.com/Rytass/Utils#readme","bugs":{"url":"https://github.com/Rytass/Utils/issues"},"dist":{"shasum":"b8fa9aa22817d64b0e05af4217da357b8ddb5d9f","tarball":"https://registry.npmjs.org/@rytass/payments-adapter-hwanan/-/payments-adapter-hwanan-0.1.4.tgz","fileCount":14,"integrity":"sha512-1VXX1WFgkPZPRiYGbyRBxTDHyxutmpVT14hwcSKhE8vFUud5qb19Xh4sLaDvrZ7/SNT/wwT1HfE/VbvsidlxKw==","signatures":[{"sig":"MEYCIQCsi+lvqUIMewYocB7v0sLBERzPf5NzjJzRhpx8cZKWfgIhALSpx42sD5JZoccRgYt/MELYVw59PaImR9SrusTD2JxI","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":39765},"main":"./index.cjs.js","module":"./index.js","typings":"./index.d.ts","_npmUser":{"name":"fantasywind","email":"fantasyatelier@gmail.com"},"repository":{"url":"git+https://github.com/Rytass/Utils.git","type":"git"},"_npmVersion":"lerna/8.1.8/node@v22.4.1+arm64 (darwin)","description":"Hwa Nan Bank Payment Adapter","directories":{},"_nodeVersion":"22.4.1","dependencies":{"axios":"^1.7.2","ngrok":"^4.3.3","lru-cache":"^11.0.0","@rytass/payments":"^0.1.3"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/payments-adapter-hwanan_0.1.4_1728294974616_0.7531348003843057","host":"s3://npm-registry-packages"}},"0.1.5":{"name":"@rytass/payments-adapter-hwanan","version":"0.1.5","keywords":["rytass","hwanan","payments"],"author":"Chia Yu Pai <fantasyatelier@gmail.com>","license":"MIT","_id":"@rytass/payments-adapter-hwanan@0.1.5","maintainers":[{"name":"fantasywind","email":"fantasyatelier@gmail.com"}],"homepage":"https://github.com/Rytass/Utils#readme","bugs":{"url":"https://github.com/Rytass/Utils/issues"},"dist":{"shasum":"84f94580675311a94ec6ba8d4423bf0ea0a6b6cb","tarball":"https://registry.npmjs.org/@rytass/payments-adapter-hwanan/-/payments-adapter-hwanan-0.1.5.tgz","fileCount":14,"integrity":"sha512-YT1Nj81ZJTBChq+H/vNIGQkoHVMrpW+tvvCu/Wtre7RRj1Au6/4SeJBXpYRX4+aufvP5CKiG9ojrgfAHhuX3pg==","signatures":[{"sig":"MEUCIAjHOrpmpwr6SZEm8DBHwan4ZD2oRL3AdJkB/StcM6rfAiEAj6VltYaOK0OA3Zh56e/u1wotRlOdcGQCQlX0Iotkzkc=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":39765},"main":"./index.cjs.js","module":"./index.js","typings":"./index.d.ts","_npmUser":{"name":"fantasywind","email":"fantasyatelier@gmail.com"},"repository":{"url":"git+https://github.com/Rytass/Utils.git","type":"git"},"_npmVersion":"lerna/8.1.8/node@v22.10.0+arm64 (darwin)","description":"Hwa Nan Bank Payment Adapter","directories":{},"_nodeVersion":"22.10.0","dependencies":{"axios":"^1.7.2","ngrok":"^4.3.3","lru-cache":"^11.0.0","@rytass/payments":"^0.1.4"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/payments-adapter-hwanan_0.1.5_1731175724283_0.4785418795554359","host":"s3://npm-registry-packages"}},"0.1.6":{"name":"@rytass/payments-adapter-hwanan","version":"0.1.6","keywords":["rytass","hwanan","payments"],"author":"Chia Yu Pai <fantasyatelier@gmail.com>","license":"MIT","_id":"@rytass/payments-adapter-hwanan@0.1.6","maintainers":[{"name":"fantasywind","email":"fantasyatelier@gmail.com"}],"homepage":"https://github.com/Rytass/Utils#readme","bugs":{"url":"https://github.com/Rytass/Utils/issues"},"dist":{"shasum":"95e31d8883dfaff3c67327c82dcc278a9ed6e46c","tarball":"https://registry.npmjs.org/@rytass/payments-adapter-hwanan/-/payments-adapter-hwanan-0.1.6.tgz","fileCount":14,"integrity":"sha512-Rhsrz/hkSZCZK2NHSKt44Fq0D62dgjBaOf8c4vTZER2BTfOmIWdncJ1fb/q8iXR1JhUyI4fUZY9eh8pifnaSFw==","signatures":[{"sig":"MEUCIEIe8TvzaspO/1CNR/oec2f3+MXVX8Mht+dRHzkvqNK1AiEA9YK4GiF5INWSp5XgDWZtzqxDZACLvD1K4F4k/J7psKc=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":39797},"main":"./index.cjs.js","module":"./index.js","typings":"./index.d.ts","_npmUser":{"name":"fantasywind","email":"fantasyatelier@gmail.com"},"repository":{"url":"git+https://github.com/Rytass/Utils.git","type":"git"},"_npmVersion":"lerna/8.1.9/node@v22.10.0+arm64 (darwin)","description":"Hwa Nan Bank Payment Adapter","directories":{},"_nodeVersion":"22.10.0","dependencies":{"axios":"^1.7.8","ngrok":"^4.3.3","lru-cache":"^11.0.2","@rytass/payments":"^0.1.4"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/payments-adapter-hwanan_0.1.6_1732881762431_0.39905581994758643","host":"s3://npm-registry-packages"}},"0.1.7":{"name":"@rytass/payments-adapter-hwanan","version":"0.1.7","keywords":["rytass","hwanan","payments"],"author":"Chia Yu Pai <fantasyatelier@gmail.com>","license":"MIT","_id":"@rytass/payments-adapter-hwanan@0.1.7","maintainers":[{"name":"fantasywind","email":"fantasyatelier@gmail.com"}],"homepage":"https://github.com/Rytass/Utils#readme","bugs":{"url":"https://github.com/Rytass/Utils/issues"},"dist":{"shasum":"423c288b3c6e74d65d14603014e1f6dbb7a0e96e","tarball":"https://registry.npmjs.org/@rytass/payments-adapter-hwanan/-/payments-adapter-hwanan-0.1.7.tgz","fileCount":14,"integrity":"sha512-DwQsHdIAK6j1nEUsK6CP7qgdbZr3zfkBv/LST16BxfocBjMwnfrlplVJqEN1DkL5hBauKrsOlXitn3sB7BWwpg==","signatures":[{"sig":"MEUCIGk7yylVBaVWqpzQWxUMdWU2s+rXS++tm05tNwctgid7AiEA4L5ixSbVmjuwfO89539HgQMmroID59rBZLd3qKJLYsg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":39797},"main":"./index.cjs.js","module":"./index.js","typings":"./index.d.ts","_npmUser":{"name":"fantasywind","actor":{"name":"fantasywind","type":"user","email":"fantasyatelier@gmail.com"},"email":"fantasyatelier@gmail.com"},"repository":{"url":"git+https://github.com/Rytass/Utils.git","type":"git"},"_npmVersion":"lerna/8.1.9/node@v22.15.0+arm64 (darwin)","description":"Hwa Nan Bank Payment Adapter","directories":{},"_nodeVersion":"22.15.0","dependencies":{"axios":"^1.7.8","ngrok":"^4.3.3","lru-cache":"^11.0.2","@rytass/payments":"^0.1.5"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/payments-adapter-hwanan_0.1.7_1750845627235_0.39404890143107374","host":"s3://npm-registry-packages-npm-production"}},"0.1.8":{"name":"@rytass/payments-adapter-hwanan","version":"0.1.8","keywords":["rytass","hwanan","payments"],"author":"Chia Yu Pai <fantasyatelier@gmail.com>","license":"MIT","_id":"@rytass/payments-adapter-hwanan@0.1.8","maintainers":[{"name":"fantasywind","email":"fantasyatelier@gmail.com"}],"homepage":"https://github.com/Rytass/Utils#readme","bugs":{"url":"https://github.com/Rytass/Utils/issues"},"dist":{"shasum":"927d4bdfcaffaabc9160664bf855cdfad4d1b9f1","tarball":"https://registry.npmjs.org/@rytass/payments-adapter-hwanan/-/payments-adapter-hwanan-0.1.8.tgz","fileCount":14,"integrity":"sha512-lBPF0kgT3npPOMBZosiMqkpAFsiE21YrnCmEg3Xa3cNlAnskeyxPdKVl0mOnfixiWSs08ABmWF44mwuyZpJhRw==","signatures":[{"sig":"MEQCIGvic51h656s8zupltl3W6sAOVmwgVSklccJcJe2wcuhAiA4gow3nR2ViajWOvUPXPF5xz6y8Yeq+vhlnwne4RLe2w==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":39797},"main":"./index.cjs.js","module":"./index.js","typings":"./index.d.ts","_npmUser":{"name":"fantasywind","actor":{"name":"fantasywind","type":"user","email":"fantasyatelier@gmail.com"},"email":"fantasyatelier@gmail.com"},"repository":{"url":"git+https://github.com/Rytass/Utils.git","type":"git"},"_npmVersion":"lerna/8.1.9/node@v22.15.0+arm64 (darwin)","description":"Hwa Nan Bank Payment Adapter","directories":{},"_nodeVersion":"22.15.0","dependencies":{"axios":"^1.7.8","ngrok":"^4.3.3","lru-cache":"^11.0.2","@rytass/payments":"^0.1.6"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/payments-adapter-hwanan_0.1.8_1751088521112_0.339708130896496","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"@rytass/payments-adapter-hwanan","version":"0.2.0","keywords":["rytass","hwanan","payments"],"author":"Chia Yu Pai <fantasyatelier@gmail.com>","license":"MIT","_id":"@rytass/payments-adapter-hwanan@0.2.0","maintainers":[{"name":"fantasywind","email":"fantasyatelier@gmail.com"}],"homepage":"https://github.com/Rytass/Utils#readme","bugs":{"url":"https://github.com/Rytass/Utils/issues"},"dist":{"shasum":"45e8b7d217b7dd3912f38b953f4934619b5292d8","tarball":"https://registry.npmjs.org/@rytass/payments-adapter-hwanan/-/payments-adapter-hwanan-0.2.0.tgz","fileCount":14,"integrity":"sha512-uYkl26w7JlIOKlDOcLToEPF3c5J6og347le59XpO/O5rd7Q1WGKQkrDKan5gj0JYbojo+YKgEBg2NPBqZVQcJQ==","signatures":[{"sig":"MEUCIQDvg7ButFXKQ44M//ouiTliujI+eEEWxQhsDMCl73Y5ZwIgFFV9y+ZV0x7coYAFuaxBMh//VLBKVBLxP0XbY2RGUlE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":41089},"main":"./index.cjs.js","module":"./index.js","typings":"./index.d.ts","_npmUser":{"name":"fantasywind","email":"fantasyatelier@gmail.com"},"repository":{"url":"git+https://github.com/Rytass/Utils.git","type":"git"},"_npmVersion":"lerna/8.1.9/node@v22.17.0+arm64 (darwin)","description":"Hwa Nan Bank Payment Adapter","directories":{},"_nodeVersion":"22.17.0","dependencies":{"axios":"^1.7.8","lru-cache":"^11.0.2","@rytass/payments":"^0.2.0"},"_hasShrinkwrap":false,"peerDependencies":{"@ngrok/ngrok":"^1.5.1"},"_npmOperationalInternal":{"tmp":"tmp/payments-adapter-hwanan_0.2.0_1753701457320_0.8355633075495295","host":"s3://npm-registry-packages-npm-production"}},"0.2.1":{"name":"@rytass/payments-adapter-hwanan","version":"0.2.1","keywords":["rytass","hwanan","payments"],"author":"Chia Yu Pai <fantasyatelier@gmail.com>","license":"MIT","_id":"@rytass/payments-adapter-hwanan@0.2.1","maintainers":[{"name":"fantasywind","email":"fantasyatelier@gmail.com"}],"homepage":"https://github.com/Rytass/Utils#readme","bugs":{"url":"https://github.com/Rytass/Utils/issues"},"dist":{"shasum":"2d411468653e33ffda0478142b9c7a144ea5d33d","tarball":"https://registry.npmjs.org/@rytass/payments-adapter-hwanan/-/payments-adapter-hwanan-0.2.1.tgz","fileCount":14,"integrity":"sha512-3DqR/qKAROGYNHV0ugT+zHUVV6a94f5gI0Bx7PtdBqFMcT+6XPIUFgTjCBiC6sL5Jdqua/Zif40jG/oNApSA7g==","signatures":[{"sig":"MEUCIFljwvM3xXvh4cNMVG8JOnFL/8M7gVOVqHcO5/C8TF7OAiEAwX8vdHQdtqe/pAca6qCra+DC39TH22AinpMG288PyEE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":41089},"main":"./index.cjs.js","module":"./index.js","typings":"./index.d.ts","_npmUser":{"name":"fantasywind","email":"fantasyatelier@gmail.com"},"repository":{"url":"git+https://github.com/Rytass/Utils.git","type":"git"},"_npmVersion":"lerna/8.1.9/node@v22.17.0+arm64 (darwin)","description":"Hwa Nan Bank Payment Adapter","directories":{},"_nodeVersion":"22.17.0","dependencies":{"axios":"^1.7.8","lru-cache":"^11.0.2","@rytass/payments":"^0.2.1"},"_hasShrinkwrap":false,"peerDependencies":{"@ngrok/ngrok":"^1.5.1"},"_npmOperationalInternal":{"tmp":"tmp/payments-adapter-hwanan_0.2.1_1753712560359_0.25970490082805253","host":"s3://npm-registry-packages-npm-production"}},"0.2.2":{"name":"@rytass/payments-adapter-hwanan","version":"0.2.2","keywords":["rytass","hwanan","payments"],"author":"Chia Yu Pai <fantasyatelier@gmail.com>","license":"MIT","_id":"@rytass/payments-adapter-hwanan@0.2.2","maintainers":[{"name":"fantasywind","email":"fantasyatelier@gmail.com"}],"homepage":"https://github.com/Rytass/Utils#readme","bugs":{"url":"https://github.com/Rytass/Utils/issues"},"dist":{"shasum":"1b7fe3283e8c3378c861cd36e06ee1da3d8b8e86","tarball":"https://registry.npmjs.org/@rytass/payments-adapter-hwanan/-/payments-adapter-hwanan-0.2.2.tgz","fileCount":14,"integrity":"sha512-IpdhoWI4Kk0Mf9hkZcGgbeuXdY00UGmaS5+Tg6mB423Zm8Ejt/BzoDhkXg1bQOpGH4RNXRw6+5WHEr7yPkxtvA==","signatures":[{"sig":"MEUCIQDP69Fd4s9D99rxWhPrf8viOdzSkiqS0qJqThlTgoItEAIga+yF6gHiMX1j7hIkmlOYNpjqddRFlDyP2OlyAxAYnAA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":41089},"main":"./index.cjs.js","module":"./index.js","typings":"./index.d.ts","_npmUser":{"name":"fantasywind","email":"fantasyatelier@gmail.com"},"repository":{"url":"git+https://github.com/Rytass/Utils.git","type":"git"},"_npmVersion":"lerna/8.1.9/node@v22.17.0+arm64 (darwin)","description":"Hwa Nan Bank Payment Adapter","directories":{},"_nodeVersion":"22.17.0","dependencies":{"axios":"^1.7.8","lru-cache":"^11.0.2","@rytass/payments":"^0.2.2"},"_hasShrinkwrap":false,"peerDependencies":{"@ngrok/ngrok":"^1.5.1"},"_npmOperationalInternal":{"tmp":"tmp/payments-adapter-hwanan_0.2.2_1753860226954_0.16567406292040765","host":"s3://npm-registry-packages-npm-production"}},"0.2.3":{"name":"@rytass/payments-adapter-hwanan","version":"0.2.3","keywords":["rytass","hwanan","payments"],"author":"Chia Yu Pai <fantasyatelier@gmail.com>","license":"MIT","_id":"@rytass/payments-adapter-hwanan@0.2.3","maintainers":[{"name":"fantasywind","email":"fantasyatelier@gmail.com"}],"homepage":"https://github.com/Rytass/Utils#readme","bugs":{"url":"https://github.com/Rytass/Utils/issues"},"dist":{"shasum":"c47bad0cc3272e84f422407c5a3cd63272da9d12","tarball":"https://registry.npmjs.org/@rytass/payments-adapter-hwanan/-/payments-adapter-hwanan-0.2.3.tgz","fileCount":14,"integrity":"sha512-kzH/Tj2GhkWXvRmiVvr+m5AdWN8Ffxr/rirlHvIsGJd9TorJ8nB7Arm9S54ZqA1Jb82iwE5jkswQ3cpK5On9oQ==","signatures":[{"sig":"MEQCIAiG3iH0GfXnW53VcZStsElWt780NYSz8Jp6PVVDQaRQAiAkGqQmOjp7z+zhqVMyjIXUHRX3G0xXCA8Vi4RrxNrwIQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":67871},"main":"./index.cjs.js","module":"./index.js","typings":"./index.d.ts","_npmUser":{"name":"fantasywind","email":"fantasyatelier@gmail.com"},"repository":{"url":"git+https://github.com/Rytass/Utils.git","type":"git"},"_npmVersion":"lerna/8.1.9/node@v22.17.0+arm64 (darwin)","description":"Hwa Nan Bank Payment Adapter","directories":{},"_nodeVersion":"22.17.0","dependencies":{"axios":"^1.7.8","lru-cache":"^11.0.2","@rytass/payments":"^0.2.3"},"_hasShrinkwrap":false,"peerDependencies":{"@ngrok/ngrok":"^1.5.1"},"_npmOperationalInternal":{"tmp":"tmp/payments-adapter-hwanan_0.2.3_1755614352343_0.28899101336673994","host":"s3://npm-registry-packages-npm-production"}},"0.2.4":{"name":"@rytass/payments-adapter-hwanan","version":"0.2.4","keywords":["rytass","hwanan","payments"],"author":"Chia Yu Pai <fantasyatelier@gmail.com>","license":"MIT","_id":"@rytass/payments-adapter-hwanan@0.2.4","maintainers":[{"name":"fantasywind","email":"fantasyatelier@gmail.com"}],"homepage":"https://github.com/Rytass/Utils#readme","bugs":{"url":"https://github.com/Rytass/Utils/issues"},"dist":{"shasum":"1b8f6d7741eceb5040fe8f61c219d195e206d650","tarball":"https://registry.npmjs.org/@rytass/payments-adapter-hwanan/-/payments-adapter-hwanan-0.2.4.tgz","fileCount":14,"integrity":"sha512-CxgbS51tMtxN9K25sL8TWg8w+weg/fVE/OJemv61rkwgGBueCwVEKgfRxcim/vRSB6YRVAJi3LYgZYd6SLjYNA==","signatures":[{"sig":"MEYCIQCs4n4f6YqEuumzxn2aCpoivztwc60AWJM0AHGByTM9qwIhAL7lZjPit/FNegVF1WDghsC0hU6A6BbDsQfM/qtnFK2l","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":67289},"main":"./index.cjs.js","module":"./index.js","typings":"./index.d.ts","_npmUser":{"name":"fantasywind","email":"fantasyatelier@gmail.com"},"repository":{"url":"git+https://github.com/Rytass/Utils.git","type":"git"},"_npmVersion":"lerna/8.2.4/node@v22.17.0+arm64 (darwin)","description":"Hwa Nan Bank Payment Adapter","directories":{},"_nodeVersion":"22.17.0","dependencies":{"axios":"^1.11.0","lru-cache":"^11.1.0","@rytass/payments":"^0.2.4"},"_hasShrinkwrap":false,"peerDependencies":{"@ngrok/ngrok":"^1.5.1"},"_npmOperationalInternal":{"tmp":"tmp/payments-adapter-hwanan_0.2.4_1757429143576_0.45968294192087966","host":"s3://npm-registry-packages-npm-production"}},"0.2.5":{"name":"@rytass/payments-adapter-hwanan","version":"0.2.5","keywords":["rytass","hwanan","payments"],"author":"Chia Yu Pai <fantasyatelier@gmail.com>","license":"MIT","_id":"@rytass/payments-adapter-hwanan@0.2.5","maintainers":[{"name":"fantasywind","email":"fantasyatelier@gmail.com"}],"homepage":"https://github.com/Rytass/Utils#readme","bugs":{"url":"https://github.com/Rytass/Utils/issues"},"dist":{"shasum":"10bcd4896a747acc0f1be1e1a1fc7162958c8551","tarball":"https://registry.npmjs.org/@rytass/payments-adapter-hwanan/-/payments-adapter-hwanan-0.2.5.tgz","fileCount":14,"integrity":"sha512-SxPHBLEoO9CCkXwlp5kaUx1LB3F3qJnW9qRLpwMAkvpfmJbCpeIjhUXKLhtN0WG4qo2rxHzU4JecNCZNnMVzNQ==","signatures":[{"sig":"MEYCIQDupH1lbiFoKN5pVKN4sz69t4Lj6WyYARY+b+SeXqBK3QIhAO0UqWHi+6d6paJsLExl9NQUTO/Xql4uW96/dX+K6WiI","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":67289},"main":"./index.cjs.js","module":"./index.js","typings":"./index.d.ts","_npmUser":{"name":"fantasywind","email":"fantasyatelier@gmail.com"},"repository":{"url":"git+https://github.com/Rytass/Utils.git","type":"git"},"_npmVersion":"lerna/8.2.4/node@v22.17.0+arm64 (darwin)","description":"Hwa Nan Bank Payment Adapter","directories":{},"_nodeVersion":"22.17.0","dependencies":{"axios":"^1.11.0","lru-cache":"^11.1.0","@rytass/payments":"^0.2.5"},"_hasShrinkwrap":false,"peerDependencies":{"@ngrok/ngrok":"^1.5.1"},"_npmOperationalInternal":{"tmp":"tmp/payments-adapter-hwanan_0.2.5_1757585686376_0.2587270054330275","host":"s3://npm-registry-packages-npm-production"}},"0.2.6":{"name":"@rytass/payments-adapter-hwanan","version":"0.2.6","keywords":["rytass","hwanan","payments"],"author":"Chia Yu Pai <fantasyatelier@gmail.com>","license":"MIT","_id":"@rytass/payments-adapter-hwanan@0.2.6","maintainers":[{"name":"fantasywind","email":"fantasyatelier@gmail.com"}],"homepage":"https://github.com/Rytass/Utils#readme","bugs":{"url":"https://github.com/Rytass/Utils/issues"},"dist":{"shasum":"9f928eba8b9011fca9c34e60be536690fe7bd2de","tarball":"https://registry.npmjs.org/@rytass/payments-adapter-hwanan/-/payments-adapter-hwanan-0.2.6.tgz","fileCount":14,"integrity":"sha512-X3F72E/wc62PaAkXcloBhmI8J/Np6RE53c4WP68Z87gBkHW06WtqpdeVL18Vrtoy4dWiCce63oMAauTWrWirtg==","signatures":[{"sig":"MEUCIH6CMXk3muf9SqoF7Iokel5BcS1m7CnufMiEUAxQTwroAiEA9Ad+VjrQnhWqQ4ghltIMSsgcwdQFafKmO1OFfdL/im0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":67289},"main":"./index.cjs.js","module":"./index.js","typings":"./index.d.ts","_npmUser":{"name":"fantasywind","email":"fantasyatelier@gmail.com"},"repository":{"url":"git+https://github.com/Rytass/Utils.git","type":"git"},"_npmVersion":"lerna/8.2.4/node@v22.17.0+arm64 (darwin)","description":"Hwa Nan Bank Payment Adapter","directories":{},"_nodeVersion":"22.17.0","dependencies":{"axios":"^1.11.0","lru-cache":"^11.1.0","@rytass/payments":"^0.2.6"},"_hasShrinkwrap":false,"peerDependencies":{"@ngrok/ngrok":"^1.5.1"},"_npmOperationalInternal":{"tmp":"tmp/payments-adapter-hwanan_0.2.6_1758555534922_0.3492215389784721","host":"s3://npm-registry-packages-npm-production"}},"0.2.7":{"name":"@rytass/payments-adapter-hwanan","version":"0.2.7","keywords":["rytass","hwanan","payments"],"author":"Chia Yu Pai <fantasyatelier@gmail.com>","license":"MIT","_id":"@rytass/payments-adapter-hwanan@0.2.7","maintainers":[{"name":"fantasywind","email":"fantasyatelier@gmail.com"}],"homepage":"https://github.com/Rytass/Utils#readme","bugs":{"url":"https://github.com/Rytass/Utils/issues"},"dist":{"shasum":"05dacdfb05f557fecd4e3b9c56426ab64a696943","tarball":"https://registry.npmjs.org/@rytass/payments-adapter-hwanan/-/payments-adapter-hwanan-0.2.7.tgz","fileCount":14,"integrity":"sha512-Ugm2FsUeB87ByGBBj482DsKbrwjigU/kckTsyER7XmNPxnhP43MEttPm8bA4gue8DqVkirR+OZ8Xp9kEU6hk0w==","signatures":[{"sig":"MEQCIDm8/Q4KEh3ZAQzRa4j1kX2U48zNlBjmLwuCN5WRg8WpAiAkBvVtgftxAW5l0elwBz7p5S9GZ9HFn4cbXHxnsk8Pew==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":67289},"main":"./index.cjs.js","module":"./index.js","typings":"./index.d.ts","_npmUser":{"name":"fantasywind","email":"fantasyatelier@gmail.com"},"repository":{"url":"git+https://github.com/Rytass/Utils.git","type":"git"},"_npmVersion":"lerna/8.2.4/node@v22.17.0+arm64 (darwin)","description":"Hwa Nan Bank Payment Adapter","directories":{},"_nodeVersion":"22.17.0","dependencies":{"axios":"^1.11.0","lru-cache":"^11.1.0","@rytass/payments":"^0.2.7"},"_hasShrinkwrap":false,"peerDependencies":{"@ngrok/ngrok":"^1.5.1"},"_npmOperationalInternal":{"tmp":"tmp/payments-adapter-hwanan_0.2.7_1760680861302_0.42871353886292596","host":"s3://npm-registry-packages-npm-production"}},"0.2.8":{"name":"@rytass/payments-adapter-hwanan","version":"0.2.8","keywords":["rytass","hwanan","payments"],"author":"Chia Yu Pai <fantasyatelier@gmail.com>","license":"MIT","_id":"@rytass/payments-adapter-hwanan@0.2.8","maintainers":[{"name":"fantasywind","email":"fantasyatelier@gmail.com"}],"homepage":"https://github.com/Rytass/Utils#readme","bugs":{"url":"https://github.com/Rytass/Utils/issues"},"dist":{"shasum":"8b8f3096679cba90fc87ee1ba6e2d9a27212ef74","tarball":"https://registry.npmjs.org/@rytass/payments-adapter-hwanan/-/payments-adapter-hwanan-0.2.8.tgz","fileCount":14,"integrity":"sha512-WmzbArnC982GL7zPZit6xIpfe8rPBWfHNjaFLr0l2BXN4Q7sTU3g+AxsekrSSwogKQVc2k2CbYJf6anAn10zsQ==","signatures":[{"sig":"MEUCIQDrcMLr4aO3WyGnqzAgpVcWE63TKdpH6eVGv67Pa/aWzgIgD8lgLIJ9kEjPhoSy8cux/6+/78rRjs+aUhJMkd1zyfo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":67289},"main":"./index.cjs.js","module":"./index.js","typings":"./index.d.ts","_npmUser":{"name":"fantasywind","email":"fantasyatelier@gmail.com"},"repository":{"url":"git+https://github.com/Rytass/Utils.git","type":"git"},"_npmVersion":"lerna/8.2.4/node@v22.17.0+arm64 (darwin)","description":"Hwa Nan Bank Payment Adapter","directories":{},"_nodeVersion":"22.17.0","dependencies":{"axios":"^1.13.2","lru-cache":"^11.2.4","@rytass/payments":"^0.2.7"},"_hasShrinkwrap":false,"peerDependencies":{"@ngrok/ngrok":"^1.5.1"},"_npmOperationalInternal":{"tmp":"tmp/payments-adapter-hwanan_0.2.8_1764839903097_0.21584018742591637","host":"s3://npm-registry-packages-npm-production"}},"0.2.9":{"name":"@rytass/payments-adapter-hwanan","version":"0.2.9","keywords":["rytass","hwanan","payments"],"author":{"name":"Chia Yu Pai","email":"fantasyatelier@gmail.com"},"license":"MIT","_id":"@rytass/payments-adapter-hwanan@0.2.9","maintainers":[{"name":"fantasywind","email":"fantasyatelier@gmail.com"}],"homepage":"https://github.com/Rytass/Utils#readme","bugs":{"url":"https://github.com/Rytass/Utils/issues"},"dist":{"shasum":"ebf767c12244f904c6589384d9230818f5c7fe32","tarball":"https://registry.npmjs.org/@rytass/payments-adapter-hwanan/-/payments-adapter-hwanan-0.2.9.tgz","fileCount":14,"integrity":"sha512-V7vSvWG0wZArNBWFVSMeZbJ/i0RnADi3jOVSGdwy7KeP/MFGvR/4lNI7l4KD/xkVZvSkR4SkpKemdCEXvMBEtQ==","signatures":[{"sig":"MEYCIQCXJm4n9yl1PfXPOveYMVR1iGiSYMZ9KL5JRGe5yJtuSAIhAKB1YJ0IMuKKNmOKhWjTwd4Q/U7ZnjgFevF5p2fdf4PY","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":67289},"main":"./index.cjs.js","module":"./index.js","gitHead":"6d64a59c8a66ddd5590d8ee96f1b4b9ed8bcf717","typings":"./index.d.ts","_npmUser":{"name":"fantasywind","email":"fantasyatelier@gmail.com"},"repository":{"url":"git+https://github.com/Rytass/Utils.git","type":"git"},"_npmVersion":"lerna/9.0.3/node@v22.17.0+arm64 (darwin)","description":"Hwa Nan Bank Payment Adapter","directories":{},"_nodeVersion":"22.17.0","dependencies":{"axios":"^1.13.2","lru-cache":"^11.2.4","@rytass/payments":"^0.2.7"},"_hasShrinkwrap":false,"peerDependencies":{"@ngrok/ngrok":"^1.5.1"},"_npmOperationalInternal":{"tmp":"tmp/payments-adapter-hwanan_0.2.9_1764927207964_0.1255042446861312","host":"s3://npm-registry-packages-npm-production"}},"0.2.10":{"name":"@rytass/payments-adapter-hwanan","version":"0.2.10","keywords":["rytass","hwanan","payments"],"author":{"name":"Chia Yu Pai","email":"fantasyatelier@gmail.com"},"license":"MIT","_id":"@rytass/payments-adapter-hwanan@0.2.10","maintainers":[{"name":"fantasywind","email":"fantasyatelier@gmail.com"}],"homepage":"https://github.com/Rytass/Utils#readme","bugs":{"url":"https://github.com/Rytass/Utils/issues"},"dist":{"shasum":"61142bd7548dd9461ced9a5b7dc55aed19eb9bd4","tarball":"https://registry.npmjs.org/@rytass/payments-adapter-hwanan/-/payments-adapter-hwanan-0.2.10.tgz","fileCount":14,"integrity":"sha512-SeppVci7tKbH/FoqAsVCwC8D2qh1bCn5kHm8NRblBM8ysM/KOZIaQnVfjAKNF5pAzkQmRfVRzARe26oEILqSeA==","signatures":[{"sig":"MEYCIQDWWul6+hA8sJ7+suJoC1/lt4yqroHtu/3lifQswoSEOAIhAJur3lIdkC46bugrUemVXGPdVpCK7LukH9q53v4Y+GmC","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":67290},"main":"./index.cjs.js","module":"./index.js","gitHead":"90f416c963149ca24e008100c78c31d323b65374","typings":"./index.d.ts","_npmUser":{"name":"fantasywind","email":"fantasyatelier@gmail.com"},"repository":{"url":"git+https://github.com/Rytass/Utils.git","type":"git"},"_npmVersion":"lerna/9.0.4/node@v22.17.0+arm64 (darwin)","description":"Hwa Nan Bank Payment Adapter","directories":{},"_nodeVersion":"22.17.0","dependencies":{"axios":"^1.13.5","lru-cache":"^11.2.6","@rytass/payments":"^0.2.7"},"_hasShrinkwrap":false,"peerDependencies":{"@ngrok/ngrok":"^1.5.1"},"_npmOperationalInternal":{"tmp":"tmp/payments-adapter-hwanan_0.2.10_1771930023792_0.0167401071270612","host":"s3://npm-registry-packages-npm-production"}},"0.2.11":{"name":"@rytass/payments-adapter-hwanan","version":"0.2.11","keywords":["rytass","hwanan","payments"],"author":{"name":"Chia Yu Pai","email":"fantasyatelier@gmail.com"},"license":"MIT","_id":"@rytass/payments-adapter-hwanan@0.2.11","maintainers":[{"name":"fantasywind","email":"fantasyatelier@gmail.com"}],"homepage":"https://github.com/Rytass/Utils#readme","bugs":{"url":"https://github.com/Rytass/Utils/issues"},"dist":{"shasum":"8d69291f4446dce98317e0c71b2636c2596a5346","tarball":"https://registry.npmjs.org/@rytass/payments-adapter-hwanan/-/payments-adapter-hwanan-0.2.11.tgz","fileCount":14,"integrity":"sha512-al3JLwV+mEHLeJ310yt4rXrADVpedL4+gqeBGXtFwEb9d+0reF1wAj9Y5dgk8B6d9Djyo9jeaJWjJ0B9ISso2w==","signatures":[{"sig":"MEUCIQD3E7Tsjha9tIsZnIg1S8zDnu76ZwB2AlIMpPqDvVJchQIgIoqG0oLqtAJ+oMqx67IgTnCA0tuaeoezJ8dQuBQ7NmA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":67290},"main":"./index.cjs.js","module":"./index.js","gitHead":"b9633a854236afe6468d49d0a41d5593fee0249f","typings":"./index.d.ts","_npmUser":{"name":"fantasywind","email":"fantasyatelier@gmail.com"},"repository":{"url":"git+https://github.com/Rytass/Utils.git","type":"git"},"_npmVersion":"lerna/9.0.4/node@v22.17.0+arm64 (darwin)","description":"Hwa Nan Bank Payment Adapter","directories":{},"_nodeVersion":"22.17.0","dependencies":{"axios":"^1.16.1","lru-cache":"^11.2.6","@rytass/payments":"^0.2.7"},"_hasShrinkwrap":false,"peerDependencies":{"@ngrok/ngrok":"^1.5.1"},"_npmOperationalInternal":{"tmp":"tmp/payments-adapter-hwanan_0.2.11_1779093032046_0.32376859189670726","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"@rytass/payments-adapter-hwanan","version":"0.3.0","description":"Hwa Nan Bank Payment Adapter","keywords":["rytass","hwanan","payments"],"author":{"name":"Chia Yu Pai","email":"fantasyatelier@gmail.com"},"homepage":"https://github.com/Rytass/Utils#readme","license":"MIT","repository":{"type":"git","url":"git+https://github.com/Rytass/Utils.git"},"main":"./index.cjs","bugs":{"url":"https://github.com/Rytass/Utils/issues"},"dependencies":{"@rytass/payments":"^0.3.0","axios":"^1.16.1","lru-cache":"^11.2.6"},"peerDependencies":{"@ngrok/ngrok":">=1"},"peerDependenciesMeta":{"@ngrok/ngrok":{"optional":true}},"type":"module","module":"./index.js","types":"./index.d.ts","typings":"./index.d.ts","engines":{"node":">=20.19.0"},"exports":{".":{"import":{"types":"./index.d.ts","default":"./index.js"},"require":{"types":"./index.d.cts","default":"./index.cjs"},"default":"./index.js"},"./package.json":"./package.json","./*.css":"./*.css","./*.json":"./*.json","./*.js":{"import":{"types":"./*.d.ts","default":"./*.js"},"require":{"types":"./*.d.cts","default":"./*.cjs"},"default":"./*.js"},"./*":{"import":{"types":"./*.d.ts","default":"./*.js"},"require":{"types":"./*.d.cts","default":"./*.cjs"},"default":"./*.js"}},"gitHead":"4e84d1f8fa0679df8809c6c03f1e11be5610c5e9","_id":"@rytass/payments-adapter-hwanan@0.3.0","_nodeVersion":"26.4.0","_npmVersion":"lerna/9.0.4/node@v26.4.0+arm64 (darwin)","dist":{"integrity":"sha512-BgRGx18muVlphiZ75V4i3Ji3j9UHDQ4tMCBe5eK4ztad8rPfyFFk2af3k2P3LS8uXb1+rwERUe9PNpl6EN7PCQ==","shasum":"3d797b9ebf8d4618b0896c9faabb310628051def","tarball":"https://registry.npmjs.org/@rytass/payments-adapter-hwanan/-/payments-adapter-hwanan-0.3.0.tgz","fileCount":23,"unpackedSize":75936,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIFGp8Cdnq5P8YvC6wfD2zrlTIu1s669MsoxSKiAqsC81AiEAyTQeLefpg6lB/I5r1J4RGC4qhTLEx/Pt/GphGrrjXZo="}]},"_npmUser":{"name":"fantasywind","email":"fantasyatelier@gmail.com"},"directories":{},"maintainers":[{"name":"fantasywind","email":"fantasyatelier@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/payments-adapter-hwanan_0.3.0_1785696834990_0.10689117495072309"},"_hasShrinkwrap":false}},"time":{"created":"2023-03-21T15:47:15.879Z","modified":"2026-08-02T18:53:55.307Z","0.0.2":"2023-03-21T15:47:16.148Z","0.0.3":"2023-03-31T06:45:12.124Z","0.0.4":"2023-06-05T06:08:22.617Z","0.0.5":"2023-08-09T12:27:31.573Z","0.1.0":"2023-08-12T06:08:52.138Z","0.1.1":"2023-10-12T07:22:01.978Z","0.1.2":"2023-11-25T15:51:06.049Z","0.1.3":"2024-07-23T06:19:15.213Z","0.1.4":"2024-10-07T09:56:14.789Z","0.1.5":"2024-11-09T18:08:44.462Z","0.1.6":"2024-11-29T12:02:42.611Z","0.1.7":"2025-06-25T10:00:27.412Z","0.1.8":"2025-06-28T05:28:41.285Z","0.2.0":"2025-07-28T11:17:37.510Z","0.2.1":"2025-07-28T14:22:40.535Z","0.2.2":"2025-07-30T07:23:47.127Z","0.2.3":"2025-08-19T14:39:12.492Z","0.2.4":"2025-09-09T14:45:43.755Z","0.2.5":"2025-09-11T10:14:46.543Z","0.2.6":"2025-09-22T15:38:55.118Z","0.2.7":"2025-10-17T06:01:01.491Z","0.2.8":"2025-12-04T09:18:23.242Z","0.2.9":"2025-12-05T09:33:28.201Z","0.2.10":"2026-02-24T10:47:03.945Z","0.2.11":"2026-05-18T08:30:32.182Z","0.3.0":"2026-08-02T18:53:55.139Z"},"bugs":{"url":"https://github.com/Rytass/Utils/issues"},"author":{"name":"Chia Yu Pai","email":"fantasyatelier@gmail.com"},"license":"MIT","homepage":"https://github.com/Rytass/Utils#readme","keywords":["rytass","hwanan","payments"],"repository":{"type":"git","url":"git+https://github.com/Rytass/Utils.git"},"description":"Hwa Nan Bank Payment Adapter","maintainers":[{"name":"fantasywind","email":"fantasyatelier@gmail.com"}],"readme":"# Rytass Utils - Payments Adapter HwaNan\n\nA comprehensive TypeScript payment adapter for HwaNan Bank's credit card payment gateway. This adapter provides seamless integration with Taiwan's HwaNan Bank payment system, offering multiple integration patterns with built-in server support, custom implementation flexibility, and comprehensive event handling.\n\n## Features\n\n- [x] HwaNan Bank credit card payment integration\n- [x] Built-in HTTP server with automatic callback handling\n- [x] Custom server integration support\n- [x] Manual callback processing capability\n- [x] Automatic form generation and submission\n- [x] Order lifecycle management with event-driven architecture\n- [x] Secure payment verification with checkValue validation\n- [x] Ngrok integration for local development\n- [x] Customizable page language support (ZH_TW, ZH_CN, EN_US, JA_JP)\n- [x] Order caching with LRU cache support\n- [x] Transaction type support (one-time and installment)\n- [x] Auto-capture and manual capture modes\n- [x] TypeScript type safety throughout\n- [x] Comprehensive error handling and validation\n\n## Installation\n\n```bash\nnpm install @rytass/payments-adapter-hwanan\n# or\nyarn add @rytass/payments-adapter-hwanan\n```\n\n**Peer Dependencies:**\n\n```bash\nnpm install @rytass/payments\n# Optional: For local development with ngrok\nnpm install @ngrok/ngrok\n```\n\n## Configuration\n\n### Basic Configuration Options\n\n```typescript\nimport { HwaNanPayment, HwaNanCustomizePageType } from '@rytass/payments-adapter-hwanan';\n\nconst paymentGateway = new HwaNanPayment({\n  merchantId: 'YOUR_MERCHANT_ID', // HwaNan provided merchant ID\n  terminalId: 'YOUR_TERMINAL_ID', // HwaNan provided terminal ID\n  merID: 'YOUR_MER_ID', // Merchant identifier\n  merchantName: 'Your Shop Name', // Display name for payment page\n  identifier: 'YOUR_SECRET_IDENTIFIER', // Secret key for checkValue generation\n\n  // Optional configurations\n  baseUrl: 'https://paymentgateway-stage.hwananbank.com.tw', // Default: staging URL\n  customizePageType: HwaNanCustomizePageType.ZH_TW, // Page language\n  customizePageVersion: '1.0', // Page version\n  serverHost: 'https://your-domain.com', // Your callback server\n  checkoutPath: '/payments/hwanan/checkout', // Checkout endpoint path\n  callbackPath: '/payments/hwanan/callback', // Callback endpoint path\n  ttl: 1800000, // Order cache TTL (30 min)\n});\n```\n\n### Environment-Specific Configuration\n\n```typescript\n// Production configuration\nconst productionGateway = new HwaNanPayment({\n  merchantId: process.env.HWANAN_MERCHANT_ID!,\n  terminalId: process.env.HWANAN_TERMINAL_ID!,\n  merID: process.env.HWANAN_MER_ID!,\n  merchantName: process.env.SHOP_NAME!,\n  identifier: process.env.HWANAN_IDENTIFIER!,\n  baseUrl: 'https://paymentgateway.hwananbank.com.tw', // Production URL\n  serverHost: 'https://yoursite.com',\n  customizePageType: HwaNanCustomizePageType.EN_US,\n});\n\n// Development configuration with ngrok\nconst developmentGateway = new HwaNanPayment({\n  merchantId: 'TEST_MERCHANT_ID',\n  terminalId: 'TEST_TERMINAL_ID',\n  merID: 'TEST_MER_ID',\n  merchantName: 'Test Shop',\n  identifier: 'TEST_IDENTIFIER',\n  withServer: 'ngrok', // Automatically creates ngrok tunnel\n  customizePageType: HwaNanCustomizePageType.ZH_TW,\n});\n```\n\n## Basic Usage\n\n### Built-in Server Integration\n\nThe simplest way to integrate HwaNan payments with automatic server creation and callback handling:\n\n```typescript\nimport { HwaNanPayment, HwaNanPaymentChannel } from '@rytass/payments-adapter-hwanan';\nimport { PaymentEvents } from '@rytass/payments';\n\nconst paymentGateway = new HwaNanPayment({\n  merchantId: 'YOUR_MERCHANT_ID',\n  terminalId: 'YOUR_TERMINAL_ID',\n  merID: 'YOUR_MER_ID',\n  merchantName: 'Rytass Shop',\n  identifier: 'YOUR_IDENTIFIER',\n  withServer: true, // Creates built-in server\n  serverHost: 'https://your-domain.com',\n  checkoutPath: '/payments/hwanan/checkout',\n  callbackPath: '/payments/hwanan/callback',\n  onServerListen: () => {\n    console.log('HwaNan payment server is ready!');\n  },\n});\n\n// Setup payment event listeners\npaymentGateway.emitter.on(PaymentEvents.ORDER_COMMITTED, message => {\n  console.log('Payment successful:', message.id);\n  console.log('Platform Trade Number:', message.platformTradeNumber);\n  console.log('Amount:', message.totalPrice);\n});\n\n// Prepare an order\nconst order = await paymentGateway.prepare({\n  id: 'ORDER-2024-001', // Optional: auto-generated if not provided\n  items: [\n    {\n      name: 'Premium Product',\n      unitPrice: 1500,\n      quantity: 2,\n    },\n    {\n      name: 'Shipping Fee',\n      unitPrice: 100,\n      quantity: 1,\n    },\n  ],\n});\n\nconsole.log('Order ID:', order.id);\nconsole.log('Total Amount:', order.totalPrice);\n\n// Three ways to handle checkout:\n\n// 1. Direct form submission data\nconst formAction = paymentGateway.checkoutActionUrl;\nconst formData = order.form;\n\n// 2. Auto-generated HTML form\nconst autoSubmitHTML = order.formHTML;\n\n// 3. Hosted checkout URL\nconst checkoutURL = `${paymentGateway.serverHost}/payments/hwanan/checkout/${order.id}`;\n```\n\n### Express.js Integration\n\nIntegrate with your existing Express.js application:\n\n```typescript\nimport express from 'express';\nimport { HwaNanPayment } from '@rytass/payments-adapter-hwanan';\nimport { PaymentEvents } from '@rytass/payments';\n\nconst app = express();\n\nconst paymentGateway = new HwaNanPayment({\n  merchantId: process.env.HWANAN_MERCHANT_ID!,\n  terminalId: process.env.HWANAN_TERMINAL_ID!,\n  merID: process.env.HWANAN_MER_ID!,\n  merchantName: 'Your E-commerce Store',\n  identifier: process.env.HWANAN_IDENTIFIER!,\n  serverHost: process.env.SERVER_HOST || 'http://localhost:3000',\n  checkoutPath: '/payments/hwanan/checkout',\n  callbackPath: '/payments/hwanan/callback',\n});\n\n// Use the default server listener for payment handling\napp.use(paymentGateway.defaultServerListener);\n\n// Setup payment success handling\npaymentGateway.emitter.on(PaymentEvents.ORDER_COMMITTED, async message => {\n  try {\n    // Update your database\n    await updateOrderStatus(message.id, 'paid');\n\n    // Send confirmation email\n    await sendOrderConfirmation(message.id);\n\n    console.log(`Payment committed for order: ${message.id}`);\n  } catch (error) {\n    console.error('Error handling payment success:', error);\n  }\n});\n\n// Create payment endpoint\napp.post('/api/create-payment', async (req, res) => {\n  try {\n    const { items, orderId, customerInfo } = req.body;\n\n    const order = await paymentGateway.prepare({\n      id: orderId,\n      items: items.map(item => ({\n        name: item.name,\n        unitPrice: item.price,\n        quantity: item.quantity,\n      })),\n    });\n\n    res.json({\n      success: true,\n      orderId: order.id,\n      checkoutUrl: `${process.env.SERVER_HOST}/payments/hwanan/checkout/${order.id}`,\n      totalAmount: order.totalPrice,\n    });\n  } catch (error) {\n    res.status(400).json({\n      success: false,\n      error: error.message,\n    });\n  }\n});\n\napp.listen(3000, () => {\n  console.log('Server running on port 3000');\n});\n```\n\n### Manual Callback Processing\n\nFor complete control over payment processing and callback handling:\n\n```typescript\nimport { Channel, PaymentEvents } from '@rytass/payments';\nimport { HwaNanPayment, HwaNanPaymentChannel } from '@rytass/payments-adapter-hwanan';\n\nconst paymentGateway = new HwaNanPayment({\n  merchantId: 'YOUR_MERCHANT_ID',\n  terminalId: 'YOUR_TERMINAL_ID',\n  merID: 'YOUR_MER_ID',\n  merchantName: 'Custom Integration Shop',\n  identifier: 'YOUR_IDENTIFIER',\n  // No server configuration - manual handling\n});\n\n// Prepare order\nconst order = await paymentGateway.prepare({\n  id: 'MANUAL-ORDER-001',\n  items: [\n    {\n      name: 'Digital Product',\n      unitPrice: 2000,\n      quantity: 1,\n    },\n  ],\n});\n\nconsole.log('Order State:', order.state); // OrderState.INITED or OrderState.PRE_COMMIT\n\n// Get form data for your custom checkout page\nconst checkoutData = {\n  action: paymentGateway.checkoutActionUrl,\n  method: 'POST',\n  fields: order.form,\n};\n\n// Process payment callback manually (in your callback endpoint)\napp.post('/custom-hwanan-callback', async (req, res) => {\n  try {\n    const callbackData = req.body;\n\n    // Find the order (implement your own order retrieval logic)\n    const order = await findOrderById(callbackData.lidm);\n\n    if (callbackData.status === '1') {\n      // Success\n      // Commit the order with payment details\n      order.commit(\n        {\n          id: callbackData.lidm,\n          totalPrice: parseInt(callbackData.authAmt),\n          committedAt: new Date(),\n          channel: HwaNanPaymentChannel.CREDIT,\n          platformTradeNumber: callbackData.xid,\n        },\n        {\n          channel: Channel.CREDIT_CARD,\n          processDate: new Date(),\n          authCode: callbackData.authCode,\n          amount: parseInt(callbackData.authAmt),\n          eci: '', // HwaNan doesn't provide ECI in standard callback\n          card4Number: callbackData.Last4digitPAN,\n          card6Number: '******',\n        },\n      );\n\n      console.log('Order State:', order.state); // OrderState.COMMITTED\n    } else {\n      // Handle payment failure\n      order.fail(callbackData.errcode, callbackData.errDesc);\n    }\n\n    res.status(200).send('OK');\n  } catch (error) {\n    console.error('Callback processing error:', error);\n    res.status(400).send('ERROR');\n  }\n});\n```\n\n## Advanced Usage\n\n### Installment Payments\n\n```typescript\nimport { HwaNanTransactionType, HwaNanAutoCapMode } from '@rytass/payments-adapter-hwanan';\n\n// Configure gateway for installment payments\nconst installmentGateway = new HwaNanPayment({\n  merchantId: 'YOUR_MERCHANT_ID',\n  terminalId: 'YOUR_TERMINAL_ID',\n  merID: 'YOUR_MER_ID',\n  merchantName: 'Installment Shop',\n  identifier: 'YOUR_IDENTIFIER',\n  withServer: true,\n});\n\n// Create installment order\nconst installmentOrder = await installmentGateway.prepare({\n  items: [\n    {\n      name: 'High-value Product',\n      unitPrice: 30000, // NT$30,000\n      quantity: 1,\n    },\n  ],\n});\n\n// The payment form will include installment options\nconst installmentForm = installmentOrder.form;\nconsole.log('Installment form data:', installmentForm);\n```\n\n### Custom Order Caching\n\n```typescript\nimport { OrdersCache } from '@rytass/payments-adapter-hwanan';\n\n// Implement custom cache (e.g., Redis)\nclass RedisOrderCache implements OrdersCache<HwaNanCommitMessage, string, HwaNanOrder<HwaNanCommitMessage>> {\n  private redis: RedisClient;\n\n  constructor(redisClient: RedisClient) {\n    this.redis = redisClient;\n  }\n\n  async get(key: string): Promise<HwaNanOrder<HwaNanCommitMessage> | undefined> {\n    const data = await this.redis.get(`hwanan:order:${key}`);\n    return data ? JSON.parse(data) : undefined;\n  }\n\n  async set(key: string, value: HwaNanOrder<HwaNanCommitMessage>): Promise<void> {\n    await this.redis.setex(`hwanan:order:${key}`, 3600, JSON.stringify(value));\n  }\n}\n\n// Use custom cache\nconst paymentGateway = new HwaNanPayment({\n  merchantId: 'YOUR_MERCHANT_ID',\n  terminalId: 'YOUR_TERMINAL_ID',\n  merID: 'YOUR_MER_ID',\n  merchantName: 'Cached Shop',\n  identifier: 'YOUR_IDENTIFIER',\n  ordersCache: new RedisOrderCache(redisClient),\n  withServer: true,\n});\n```\n\n### Multi-language Support\n\n```typescript\nimport { HwaNanCustomizePageType } from '@rytass/payments-adapter-hwanan';\n\n// Different language configurations\nconst configs = {\n  traditionalChinese: {\n    customizePageType: HwaNanCustomizePageType.ZH_TW,\n    merchantName: '繁體中文商店',\n  },\n  simplifiedChinese: {\n    customizePageType: HwaNanCustomizePageType.ZH_CN,\n    merchantName: '简体中文商店',\n  },\n  english: {\n    customizePageType: HwaNanCustomizePageType.EN_US,\n    merchantName: 'English Store',\n  },\n  japanese: {\n    customizePageType: HwaNanCustomizePageType.JA_JP,\n    merchantName: '日本語ストア',\n  },\n};\n\n// Create gateway with specific language\nconst createGatewayForLanguage = (language: keyof typeof configs) => {\n  return new HwaNanPayment({\n    merchantId: 'YOUR_MERCHANT_ID',\n    terminalId: 'YOUR_TERMINAL_ID',\n    merID: 'YOUR_MER_ID',\n    identifier: 'YOUR_IDENTIFIER',\n    ...configs[language],\n    withServer: true,\n  });\n};\n\nconst englishGateway = createGatewayForLanguage('english');\nconst chineseGateway = createGatewayForLanguage('traditionalChinese');\n```\n\n### Order Query and Management\n\n```typescript\n// Query order status\nconst queryOrder = async (orderId: string) => {\n  try {\n    const order = await paymentGateway.query(orderId);\n\n    return {\n      id: order.id,\n      state: order.state,\n      totalPrice: order.totalPrice,\n      items: order.items,\n      createdAt: order.createdAt,\n      committedAt: order.committedAt,\n      additionalInfo: order.additionalInfo,\n    };\n  } catch (error) {\n    console.error('Order not found:', error);\n    return null;\n  }\n};\n\n// Check order status\nconst orderStatus = await queryOrder('ORDER-2024-001');\nif (orderStatus) {\n  console.log('Order found:', orderStatus);\n  console.log('Payment completed:', orderStatus.state === 'COMMITTED');\n}\n```\n\n## Integration Examples\n\n### NestJS Service Integration\n\n```typescript\nimport { Injectable, Logger } from '@nestjs/common';\nimport { HwaNanPayment, HwaNanPaymentChannel } from '@rytass/payments-adapter-hwanan';\nimport { PaymentEvents, OrderState } from '@rytass/payments';\n\n@Injectable()\nexport class HwaNanPaymentService {\n  private readonly logger = new Logger(HwaNanPaymentService.name);\n  private readonly paymentGateway: HwaNanPayment;\n\n  constructor() {\n    this.paymentGateway = new HwaNanPayment({\n      merchantId: process.env.HWANAN_MERCHANT_ID!,\n      terminalId: process.env.HWANAN_TERMINAL_ID!,\n      merID: process.env.HWANAN_MER_ID!,\n      merchantName: process.env.SHOP_NAME!,\n      identifier: process.env.HWANAN_IDENTIFIER!,\n      serverHost: process.env.SERVER_HOST!,\n      withServer: true,\n    });\n\n    this.setupEventHandlers();\n  }\n\n  private setupEventHandlers() {\n    this.paymentGateway.emitter.on(PaymentEvents.ORDER_COMMITTED, message => {\n      this.logger.log(`Payment committed: ${message.id}`);\n      this.handlePaymentSuccess(message);\n    });\n\n    this.paymentGateway.emitter.on(PaymentEvents.ORDER_FAILED, failure => {\n      this.logger.error(`Payment failed: ${failure.code} - ${failure.message}`);\n      this.handlePaymentFailure(failure);\n    });\n  }\n\n  async createPayment(orderData: {\n    orderId?: string;\n    items: Array<{\n      name: string;\n      price: number;\n      quantity: number;\n    }>;\n  }) {\n    const order = await this.paymentGateway.prepare({\n      id: orderData.orderId,\n      items: orderData.items.map(item => ({\n        name: item.name,\n        unitPrice: item.price,\n        quantity: item.quantity,\n      })),\n    });\n\n    return {\n      orderId: order.id,\n      checkoutUrl: `${process.env.SERVER_HOST}/payments/hwanan/checkout/${order.id}`,\n      totalAmount: order.totalPrice,\n      formAction: this.paymentGateway.checkoutActionUrl,\n      formData: order.form,\n      autoSubmitHtml: order.formHTML,\n    };\n  }\n\n  async getOrderStatus(orderId: string) {\n    try {\n      const order = await this.paymentGateway.query(orderId);\n\n      return {\n        orderId: order.id,\n        state: order.state,\n        totalPrice: order.totalPrice,\n        createdAt: order.createdAt,\n        committedAt: order.committedAt,\n        isPaid: order.state === OrderState.COMMITTED,\n      };\n    } catch (error) {\n      throw new Error(`Order ${orderId} not found`);\n    }\n  }\n\n  private async handlePaymentSuccess(message: any) {\n    // Update database, send notifications, etc.\n    this.logger.log(`Processing payment success for order: ${message.id}`);\n  }\n\n  private async handlePaymentFailure(failure: any) {\n    // Log failure, notify customer, etc.\n    this.logger.error(`Processing payment failure: ${failure.code}`);\n  }\n}\n```\n\n### React Payment Component\n\n```typescript\nimport React, { useState, useEffect } from 'react';\nimport { OrderState } from '@rytass/payments';\n\ninterface HwaNanPaymentProps {\n  items: Array<{\n    name: string;\n    price: number;\n    quantity: number;\n  }>;\n  orderId?: string;\n  onSuccess: (orderId: string) => void;\n  onError: (error: string) => void;\n}\n\nconst HwaNanPayment: React.FC<HwaNanPaymentProps> = ({\n  items,\n  orderId,\n  onSuccess,\n  onError\n}) => {\n  const [paymentData, setPaymentData] = useState<any>(null);\n  const [isLoading, setIsLoading] = useState(false);\n\n  const createPayment = async () => {\n    setIsLoading(true);\n\n    try {\n      const response = await fetch('/api/payments/hwanan/create', {\n        method: 'POST',\n        headers: { 'Content-Type': 'application/json' },\n        body: JSON.stringify({ items, orderId })\n      });\n\n      const data = await response.json();\n\n      if (data.success) {\n        setPaymentData(data);\n      } else {\n        onError(data.error);\n      }\n    } catch (error) {\n      onError('Payment creation failed');\n    } finally {\n      setIsLoading(false);\n    }\n  };\n\n  const proceedToPayment = () => {\n    if (paymentData) {\n      // Option 1: Redirect to hosted checkout\n      window.location.href = paymentData.checkoutUrl;\n\n      // Option 2: Submit form programmatically\n      // const form = document.createElement('form');\n      // form.method = 'POST';\n      // form.action = paymentData.formAction;\n      // Object.entries(paymentData.formData).forEach(([key, value]) => {\n      //   const input = document.createElement('input');\n      //   input.type = 'hidden';\n      //   input.name = key;\n      //   input.value = value as string;\n      //   form.appendChild(input);\n      // });\n      // document.body.appendChild(form);\n      // form.submit();\n    }\n  };\n\n  const totalAmount = items.reduce((sum, item) => sum + (item.price * item.quantity), 0);\n\n  return (\n    <div className=\"hwanan-payment\">\n      <h3>HwaNan Bank Payment</h3>\n\n      <div className=\"order-summary\">\n        <h4>Order Summary</h4>\n        {items.map((item, index) => (\n          <div key={index} className=\"item\">\n            <span>{item.name}</span>\n            <span>{item.quantity} x NT${item.price}</span>\n          </div>\n        ))}\n        <div className=\"total\">\n          <strong>Total: NT${totalAmount}</strong>\n        </div>\n      </div>\n\n      {!paymentData && (\n        <button\n          onClick={createPayment}\n          disabled={isLoading}\n          className=\"create-payment-btn\"\n        >\n          {isLoading ? 'Creating Payment...' : 'Proceed to Payment'}\n        </button>\n      )}\n\n      {paymentData && (\n        <div className=\"payment-options\">\n          <p>Payment ready for NT${paymentData.totalAmount}</p>\n          <button onClick={proceedToPayment} className=\"pay-btn\">\n            Pay with HwaNan Bank\n          </button>\n        </div>\n      )}\n    </div>\n  );\n};\n\nexport default HwaNanPayment;\n```\n\n### Local Development with Ngrok\n\n```typescript\nimport { HwaNanPayment } from '@rytass/payments-adapter-hwanan';\n\n// Automatically creates ngrok tunnel for local development\nconst developmentGateway = new HwaNanPayment({\n  merchantId: 'TEST_MERCHANT_ID',\n  terminalId: 'TEST_TERMINAL_ID',\n  merID: 'TEST_MER_ID',\n  merchantName: 'Development Store',\n  identifier: 'TEST_IDENTIFIER',\n  withServer: 'ngrok', // Creates ngrok tunnel automatically\n  onServerListen: () => {\n    console.log('Development server ready with ngrok tunnel!');\n    console.log('Server host:', developmentGateway.serverHost);\n  },\n});\n\n// The ngrok tunnel URL will be automatically used for callbacks\nconst testOrder = await developmentGateway.prepare({\n  items: [\n    {\n      name: 'Test Product',\n      unitPrice: 100,\n      quantity: 1,\n    },\n  ],\n});\n\nconsole.log('Test checkout URL:', `${developmentGateway.serverHost}/payments/hwanan/checkout/${testOrder.id}`);\n```\n\n## Payment Channels\n\n### Supported Payment Methods\n\n```typescript\nimport { HwaNanPaymentChannel } from '@rytass/payments-adapter-hwanan';\n\n// Currently supported channel\nconst supportedChannels = {\n  CREDIT: HwaNanPaymentChannel.CREDIT, // Credit card payments\n};\n\n// Future channels (check HwaNan Bank documentation)\n// DEBIT: HwaNanPaymentChannel.DEBIT     // Debit card payments\n// ATM: HwaNanPaymentChannel.ATM         // ATM transfers\n```\n\n### Transaction Types\n\n```typescript\nimport { HwaNanTransactionType, HwaNanAutoCapMode } from '@rytass/payments-adapter-hwanan';\n\n// One-time payment (default)\nconst oneTimePayment = HwaNanTransactionType.ONE_TIME;\n\n// Installment payment (requires minimum 3 installments)\nconst installmentPayment = HwaNanTransactionType.INSTALLMENTS;\n\n// Auto-capture modes\nconst autoCapture = HwaNanAutoCapMode.AUTO; // Automatically capture payment\nconst manualCapture = HwaNanAutoCapMode.MANUALLY; // Manual capture required\n```\n\n## Error Handling\n\n### Common Error Scenarios\n\n```typescript\ntry {\n  const order = await paymentGateway.prepare({\n    items: [\n      {\n        name: 'Product',\n        unitPrice: 1000,\n        quantity: 1,\n      },\n    ],\n  });\n} catch (error) {\n  if (error.message.includes('merchantId is required')) {\n    console.error('Missing merchant configuration');\n  } else if (error.message.includes('Invalid item data')) {\n    console.error('Invalid product information');\n  } else if (error.message.includes('Server not started')) {\n    console.error('Payment server not initialized');\n  } else {\n    console.error('Order preparation failed:', error.message);\n  }\n}\n\n// Handle callback errors\npaymentGateway.emitter.on(PaymentEvents.ORDER_FAILED, failure => {\n  switch (failure.code) {\n    case '05': // Do not honor\n      console.error('Card declined by issuing bank');\n      break;\n    case '51': // Insufficient funds\n      console.error('Insufficient funds');\n      break;\n    case '54': // Expired card\n      console.error('Card has expired');\n      break;\n    default:\n      console.error(`Payment failed: ${failure.code} - ${failure.message}`);\n  }\n});\n```\n\n### Validation and Security\n\n```typescript\n// Validate callback authenticity\nconst validateCallback = (callbackData: HwaNanNotifyPayload) => {\n  const { checkValue, ...dataToValidate } = callbackData;\n\n  // HwaNan provides checkValue for validation\n  // Implementation depends on your identifier and HwaNan's hashing method\n  const calculatedCheckValue = generateCheckValue(dataToValidate);\n\n  if (checkValue !== calculatedCheckValue) {\n    throw new Error('Invalid callback - checkValue mismatch');\n  }\n\n  return true;\n};\n\n// Safe order processing\nconst processOrderSafely = async (orderId: string, callbackData: any) => {\n  try {\n    // Validate callback\n    validateCallback(callbackData);\n\n    // Get order from cache or database\n    const order = await paymentGateway.query(orderId);\n\n    if (!order) {\n      throw new Error('Order not found');\n    }\n\n    if (order.state === OrderState.COMMITTED) {\n      console.log('Order already processed');\n      return order;\n    }\n\n    // Process payment\n    if (callbackData.status === '1') {\n      order.commit({\n        id: orderId,\n        totalPrice: parseInt(callbackData.authAmt),\n        committedAt: new Date(),\n        channel: HwaNanPaymentChannel.CREDIT,\n        platformTradeNumber: callbackData.xid,\n      });\n    } else {\n      order.fail(callbackData.errcode, callbackData.errDesc);\n    }\n\n    return order;\n  } catch (error) {\n    console.error('Order processing failed:', error);\n    throw error;\n  }\n};\n```\n\n## Best Practices\n\n### Configuration Management\n\n- Store sensitive credentials in environment variables\n- Use different merchant IDs for development and production\n- Implement proper HTTPS for all payment-related endpoints\n- Regularly rotate identifiers and credentials\n\n### Order Management\n\n- Always validate callback authenticity using checkValue\n- Implement idempotent payment processing to handle duplicate callbacks\n- Use appropriate TTL for order caching\n- Log all payment events for debugging and auditing\n\n### Security\n\n- Validate all payment callbacks before processing\n- Implement proper CSRF protection for payment forms\n- Use HTTPS for all payment-related communications\n- Store sensitive payment data securely with proper encryption\n\n### Performance\n\n- Use custom caching solutions (Redis) for high-volume scenarios\n- Implement proper connection pooling for database operations\n- Monitor payment gateway response times\n- Set appropriate timeout values for payment operations\n\n### Error Handling\n\n- Implement comprehensive error logging\n- Provide clear error messages to customers\n- Handle network failures gracefully with retry mechanisms\n- Monitor for unusual payment failure patterns\n\n## Testing\n\n```typescript\nimport { HwaNanPayment, HwaNanPaymentChannel } from '@rytass/payments-adapter-hwanan';\nimport { OrderState, Channel } from '@rytass/payments';\n\ndescribe('HwaNan Payment Integration', () => {\n  let paymentGateway: HwaNanPayment;\n\n  beforeEach(() => {\n    paymentGateway = new HwaNanPayment({\n      merchantId: 'TEST_MERCHANT',\n      terminalId: 'TEST_TERMINAL',\n      merID: 'TEST_MER_ID',\n      merchantName: 'Test Store',\n      identifier: 'TEST_IDENTIFIER',\n    });\n  });\n\n  it('should create order successfully', async () => {\n    const order = await paymentGateway.prepare({\n      items: [\n        {\n          name: 'Test Product',\n          unitPrice: 1000,\n          quantity: 1,\n        },\n      ],\n    });\n\n    expect(order.id).toBeDefined();\n    expect(order.totalPrice).toBe(1000);\n    expect(order.state).toBe(OrderState.PRE_COMMIT);\n  });\n\n  it('should generate correct form data', async () => {\n    const order = await paymentGateway.prepare({\n      items: [\n        {\n          name: 'Test Product',\n          unitPrice: 2000,\n          quantity: 2,\n        },\n      ],\n    });\n\n    const form = order.form;\n\n    expect(form.MerchantID).toBe('TEST_MERCHANT');\n    expect(form.TerminalID).toBe('TEST_TERMINAL');\n    expect(form.purchAmt).toBe(4000);\n    expect(form.lidm).toBe(order.id);\n    expect(form.checkValue).toBeDefined();\n  });\n\n  it('should handle payment success', async () => {\n    const order = await paymentGateway.prepare({\n      items: [\n        {\n          name: 'Test Product',\n          unitPrice: 1000,\n          quantity: 1,\n        },\n      ],\n    });\n\n    // Simulate successful payment\n    order.commit(\n      {\n        id: order.id,\n        totalPrice: 1000,\n        committedAt: new Date(),\n        channel: HwaNanPaymentChannel.CREDIT,\n        platformTradeNumber: 'TEST_XID_123',\n      },\n      {\n        channel: Channel.CREDIT_CARD,\n        processDate: new Date(),\n        authCode: '123456',\n        amount: 1000,\n        eci: '',\n        card4Number: '1234',\n        card6Number: '******',\n      },\n    );\n\n    expect(order.state).toBe(OrderState.COMMITTED);\n    expect(order.committedAt).toBeDefined();\n  });\n\n  it('should handle payment failure', async () => {\n    const order = await paymentGateway.prepare({\n      items: [\n        {\n          name: 'Test Product',\n          unitPrice: 1000,\n          quantity: 1,\n        },\n      ],\n    });\n\n    order.fail('05', 'Do not honor');\n\n    expect(order.state).toBe(OrderState.FAILED);\n    expect(order.failedMessage?.code).toBe('05');\n    expect(order.failedMessage?.message).toBe('Do not honor');\n  });\n});\n```\n\n## API Reference\n\n### HwaNanPayment Constructor Options\n\n```typescript\ninterface HwaNanPaymentInitOptions {\n  merchantId: string; // Required: HwaNan merchant ID\n  terminalId: string; // Required: HwaNan terminal ID\n  merID: string; // Required: Merchant identifier\n  merchantName: string; // Required: Store name for payment page\n  identifier: string; // Required: Secret for checkValue generation\n\n  baseUrl?: string; // Optional: HwaNan API URL\n  customizePageType?: HwaNanCustomizePageType; // Optional: Page language\n  customizePageVersion?: string; // Optional: Page version\n  serverHost?: string; // Optional: Your server domain\n  checkoutPath?: string; // Optional: Checkout endpoint path\n  callbackPath?: string; // Optional: Callback endpoint path\n  withServer?: boolean | 'ngrok'; // Optional: Enable built-in server\n  ttl?: number; // Optional: Order cache TTL in milliseconds\n  ordersCache?: OrdersCache; // Optional: Custom caching implementation\n  onServerListen?: () => void; // Optional: Server ready callback\n  onCommit?: (order: HwaNanOrder) => void; // Optional: Payment success callback\n}\n```\n\n### HwaNanOrder Methods\n\n```typescript\ninterface HwaNanOrder {\n  id: string; // Order ID\n  totalPrice: number; // Total amount\n  items: PaymentItem[]; // Order items\n  state: OrderState; // Current order state\n  form: Record<string, string>; // Payment form data\n  formHTML: string; // Auto-submit form HTML\n\n  commit(message: HwaNanCommitMessage, additionalInfo?: CreditCardAuthInfo): void;\n  fail(code: string, message: string): void;\n}\n```\n\n### Constants and Enums\n\n```typescript\n// Page language options\nenum HwaNanCustomizePageType {\n  ZH_TW = 1, // Traditional Chinese\n  ZH_CN = 2, // Simplified Chinese\n  EN_US = 3, // English\n  JA_JP = 4, // Japanese\n  OTHER = 5, // Other languages\n}\n\n// Transaction types\nenum HwaNanTransactionType {\n  ONE_TIME = 0, // Single payment\n  INSTALLMENTS = 1, // Installment payments (min 3 periods)\n}\n\n// Capture modes\nenum HwaNanAutoCapMode {\n  MANUALLY = 0, // Manual capture\n  AUTO = 1, // Auto capture\n}\n\n// Payment channels\nenum HwaNanPaymentChannel {\n  CREDIT = 1, // Credit card payments\n}\n```\n\n## License\n\nMIT\n","readmeFilename":"README.md"}