@vigo.technology/payment
Version:
50 lines (49 loc) • 2.14 kB
JavaScript
;
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.Payment = void 0;
const layer2_1 = require("./layer2");
class Payment {
constructor(options) {
this.layer2 = new layer2_1.Layer2(options || {});
}
createLayer2Payment(order, options) {
return __awaiter(this, void 0, void 0, function* () {
// check params
this.layer2.checkParams(order);
// 1. Submit data to generate payment order and return payment order number.
const payResult = yield this.layer2.createRecord(order);
console.log("payResult:", payResult);
const { pay_id: payId, receive_address: toAccount } = payResult;
// 2. Transfer on layer-2.
const txReceipt = yield this.layer2.transfer({
payId,
toAccount,
token: order.crypto,
amount: order.cryptoAmount,
jsrpc: options.jsrpc,
ethWallet: options.ethWallet,
}).catch(err => {
console.error("err:", err);
this.layer2.cancelRecord(payId);
throw err;
});
// 3. Polling Payment Status.
const status = yield this.layer2.pollingPayStatus(payId);
// 4. return
return {
payId,
status,
};
});
}
}
exports.Payment = Payment;