@vigo.technology/payment
Version:
2 lines (1 loc) • 5.91 kB
JavaScript
;var e=require("axios"),t=require("@vigo.technology/v-engine");function r(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var o=r(e),n=r(t),i="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{};function a(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}function s(e,t,r){return e(r={path:t,exports:{},require:function(e,t){return function(){throw new Error("Dynamic requires are not currently supported by @rollup/plugin-commonjs")}(null==t&&r.path)}},r.exports),r.exports}var u=s((function(e,t){var r=i&&i.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.Api=void 0;const n=r(o.default);t.Api=class{constructor({baseURL:e,timeout:t,token:r}){const o=n.default.create({baseURL:e,timeout:t||6e4,headers:{"x-auth-token":r}});return o.interceptors.request.use((e=>e),(e=>Promise.reject(e))),o.interceptors.response.use((e=>{const{status:t,data:r}=e;if(200===t&&200==r.code)return r;throw console.log(r),Error(r.message)}),(e=>{throw console.log(e),Error(e.message)})),o}}})),l=s((function(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.default={payStatusPollingInterval:2e3,payStatusPollingTimes:10,host:{localhost:"http://127.0.0.1:7001",devnet:"https://payment-api.powx.io",testnet:"https://pay-api.paragen.org",mainnet:"https://pay-api.dengine.io"},defaultEnvMode:"localhost"}})),c=s((function(e,t){var r=i&&i.__awaiter||function(e,t,r,o){return new(r||(r=Promise))((function(n,i){function a(e){try{u(o.next(e))}catch(e){i(e)}}function s(e){try{u(o.throw(e))}catch(e){i(e)}}function u(e){var t;e.done?n(e.value):(t=e.value,t instanceof r?t:new r((function(e){e(t)}))).then(a,s)}u((o=o.apply(e,t||[])).next())}))},o=i&&i.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.Layer2=void 0;const a=o(l),s="Completed",c="Failure";t.Layer2=class{constructor(e){this.timer=null;const t=e.envMode||a.default.defaultEnvMode,r=e.apiHost||a.default.host[t];this.api=new u.Api({baseURL:r,timeout:e.timeout,token:e.token})}transfer(e){return r(this,void 0,void 0,(function*(){const t=yield this.doTransfer(e);console.log("transferTx:",t);const r=yield t.awaitReceipt();return console.log("txReceipt:",r),this.putHashCount=0,yield this.putHash(e.payId,t),r}))}doTransfer(e){return r(this,void 0,void 0,(function*(){const{jsrpc:t,ethWallet:r,toAccount:o,token:i,amount:a}=e,s=yield n.default.Provider.newHttpProvider(t),u=yield n.default.Wallet.fromEthSigner(r,s),l=yield s.getTransactionFee("Transfer",o,i);console.log("txFee:",l);const c=yield u.syncTransfer({to:o,token:i,amount:a,fee:l.totalFee});return console.log("transferTx:",c),c}))}putHash(e,t){return r(this,void 0,void 0,(function*(){return yield this.api.request({url:`/channels/layer2/records/${e}`,method:"put",data:{tx_hash:t.txHash}}).then((e=>!0)).catch((r=>(this.putHashCount++,!(this.putHashCount>3)&&this.putHash(e,t))))}))}cancelRecord(e){return r(this,void 0,void 0,(function*(){return this.api.request({url:`channels/layer2/records/${e}/cancel`,method:"put"})}))}pollingPayStatus(e){return r(this,void 0,void 0,(function*(){let t=0;return new Promise(((o,n)=>r(this,void 0,void 0,(function*(){(yield this.fetchPayStatus(e).then((e=>(console.log("status1:",e),(e===s||e===c)&&(o(e),!0)))).catch((e=>null)))||(this.timer=setInterval((()=>{t++,t>a.default.payStatusPollingTimes&&(this.clearInterval(),n("Time out")),this.fetchPayStatus(e).then((e=>{console.log("status2:",e),e!==s&&e!==c||(this.clearInterval(),o(e))})).catch((e=>{}))}),a.default.payStatusPollingInterval))}))))}))}createRecord(e){return r(this,void 0,void 0,(function*(){return this.api.request({url:"/channels/layer2/records",method:"post",data:e}).then((e=>null==e?void 0:e.data))}))}fetchPayStatus(e){return r(this,void 0,void 0,(function*(){return this.api.request({url:`/records/${e}`,method:"get",timeout:a.default.payStatusPollingInterval-100}).then((e=>{var t;return null===(t=null==e?void 0:e.data)||void 0===t?void 0:t.status}))}))}clearInterval(){clearInterval(this.timer)}checkParams(e){if(!e)throw Error("options is required!");if(!e.memberId)throw Error("memberId is required!");if(!e.businessId)throw Error("businessId is required!");if(!e.chainId)throw Error("chainId is required!");if(!e.crypto)throw Error("crypto is required!");if(!e.cryptoAmount)throw Error("cryptoAmount is required!");if(!e.merchantOrderNo)throw Error("merchantOrderNo is required!");if(!e.payMethodId)throw Error("payMethodId is required!");if(!e.payChannelId)throw Error("payChannelId is required!");if(!e.payerAddress)throw Error("payerAddress is required!")}}})),d=s((function(e,t){var r=i&&i.__awaiter||function(e,t,r,o){return new(r||(r=Promise))((function(n,i){function a(e){try{u(o.next(e))}catch(e){i(e)}}function s(e){try{u(o.throw(e))}catch(e){i(e)}}function u(e){var t;e.done?n(e.value):(t=e.value,t instanceof r?t:new r((function(e){e(t)}))).then(a,s)}u((o=o.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.Payment=void 0;t.Payment=class{constructor(e){this.layer2=new c.Layer2(e||{})}createLayer2Payment(e,t){return r(this,void 0,void 0,(function*(){this.layer2.checkParams(e);const r=yield this.layer2.createRecord(e);console.log("payResult:",r);const{pay_id:o,receive_address:n}=r;yield this.layer2.transfer({payId:o,toAccount:n,token:e.crypto,amount:e.cryptoAmount,jsrpc:t.jsrpc,ethWallet:t.ethWallet}).catch((e=>{throw console.error("err:",e),this.layer2.cancelRecord(o),e}));const i=yield this.layer2.pollingPayStatus(o);return{payId:o,status:i}}))}}})),h=a(s((function(e,t){Object.defineProperty(t,"__esModule",{value:!0}),t.Payment=void 0,Object.defineProperty(t,"Payment",{enumerable:!0,get:function(){return d.Payment}})})));module.exports=h;