thunderpix
Version:
Biblioteca javascript de padronização de gateways de pagamentos PIX
123 lines (122 loc) • 4.15 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const axios_1 = __importDefault(require("axios"));
class PicPayProvider {
baseUrl;
token;
providerInfo = {
name: 'PicPay',
description: 'A solução completa para pagamentos instantâneos e transferências.',
documentation: 'https://ecommerce.picpay.com/doc/',
isOnline: true,
vendor: {
name: 'PicPay',
shotname: 'picpay',
url: 'https://picpay.com',
api: 'https://appws.picpay.com/ecommerce/public',
versions: [
{
name: 'br.com.picpay.api-v1',
version: '1.0.0',
path: '/',
},
],
},
};
constructor(configs) {
this.token = configs.token;
this.baseUrl = configs.isTest
? 'https://appws.picpay.com/ecommerce/public/sandbox'
: 'https://appws.picpay.com/ecommerce/public';
}
getHeaders() {
return {
Authorization: `Bearer ${this.token}`,
'Content-Type': 'application/json',
};
}
async gerarCobranca(referenceId, value, callbackUrl, returnUrl, buyer) {
const payload = {
referenceId,
value,
callbackUrl,
returnUrl,
buyer,
};
const response = await axios_1.default.post(`${this.baseUrl}/payments`, payload, {
headers: this.getHeaders(),
});
return response.data;
}
async consultarCobranca(referenceId) {
const response = await axios_1.default.get(`${this.baseUrl}/payments/${referenceId}`, {
headers: this.getHeaders(),
});
return response.data;
}
async estornarPagamento(referenceId) {
const response = await axios_1.default.post(`${this.baseUrl}/payments/${referenceId}/refunds`, {}, {
headers: this.getHeaders(),
});
return response.data;
}
async generatingPixBilling(body) {
var valueCents = Number.isInteger(body.valueCents)
? body.valueCents
: Math.round(body.valueCents * 100);
var response = await this.gerarCobranca(body.pixkey, (valueCents / 100), body.callbackUrl, body.returnUrl, {
firstName: body.name,
lastName: body.lastName,
document: body.document
});
return {
qrcode: response.qrcode.base64,
pixkey: body.pixkey,
value: {
original: body.valueCents,
cents: valueCents,
fixed: (valueCents / 100).toFixed(2),
float: valueCents / 100,
},
expires: {
timestamp: Math.floor(Date.now() / 1000 + body.expires),
dateTime: new Date(Date.now() + body.expires * 1000).toLocaleString('pt-BR'),
iso: new Date(Date.now() + body.expires * 1000).toISOString(),
},
code: response.referenceId,
};
}
async searchPixBilling(body) {
const data = await this.consultarCobranca(body.reference);
return {
referenceCode: data.referenceId,
valueCents: data.value * 100,
content: data.paymentUrl,
status: data.status,
registrationDate: data.createdAt,
paymentDate: data.paidAt,
};
}
listingPixBilling(body) {
throw new Error('Method not implemented.');
}
async generateProviderWidthdraw(body) {
throw new Error('Method not implemented.');
}
async listProviderWidthdraw(body) {
throw new Error('Method not implemented.');
}
async getBalance() {
return {
valueCents: 0,
valueFloat: 0.0
};
}
searchProviderWidthdraw(body) {
throw new Error('Method not implemented.');
}
}
exports.default = PicPayProvider;