hurbis-pagamento-v1
Version:
Biblioteca de pagamento utilizando PagSeguro (UOL).
447 lines (446 loc) • 14.9 kB
TypeScript
/// <reference types="angular" />
/// <reference types="angular-resource" />
declare namespace hurbis.pagamento {
interface IPagamentoConfigService {
getConfiguracao(): IConfiguracao;
}
interface IConfiguracaoPagSeguro {
cookieNomeSessionId: string;
/**
* Rotina para recuperar sessão gerada a partir do servidor. Para facilitar, utilize o componente Hurbis.Pagamento (NuGet) em sua API.
*/
recuperarSessaoServidor?: angular.Injectable<{
(...args: any[]): ng.IPromise<pagseguro.ISessao>;
}>;
producao: boolean;
}
interface IConfiguracao {
pagSeguro: IConfiguracaoPagSeguro;
}
}
interface Window {
PagSeguroDirectPayment: PagSeguroDirectPayment;
}
declare var PagSeguroDirectPayment: PagSeguroDirectPayment;
interface PagSeguroDirectPayment {
setSessionId(valor: string): void;
getSenderHash(): string;
getPaymentMethods(parametro: hurbis.pagamento.pagseguro.IFormasPagamentoParametro): void;
getBrand(parametro: hurbis.pagamento.pagseguro.IBandeiraCartaoParametro): void;
createCardToken(parametro: hurbis.pagamento.pagseguro.ICartaoTokenParametro): void;
getInstallments(parametro: hurbis.pagamento.pagseguro.ICartaoParcelamentoParametro): void;
}
declare namespace hurbis.pagamento.pagseguro {
const CAMINHO_BASE_RECURSO_PRODUCAO: string;
const CAMINHO_BASE_RECURSO_DESENVOLVIMENTO: string;
interface IParametro<T> {
success: {
(resultado: T): void;
};
error: {
(erro): void;
};
complete?: {
(resultado): void;
};
}
interface IFormaPagamentoImagem {
size: string;
path: string;
}
interface IFormaPagamentoImagens {
SMALL: IFormaPagamentoImagem;
MEDIUM: IFormaPagamentoImagem;
}
interface IFormaPagamentoDetalhe {
name: string;
displayName: string;
status: string;
code: number;
images: IFormaPagamentoImagens;
}
interface IFormaPagamento<T> {
name: string;
options: T;
code: number;
}
interface IFormaPagamentoOpcaoBoleto {
BOLETO: IFormaPagamentoDetalhe;
}
interface IFormaPagamentoOpcaoDeposito {
BANCO_BRASIL: IFormaPagamentoDetalhe;
HSBC: IFormaPagamentoDetalhe;
}
interface IFormaPagamentoOpcaoDebito {
BANCO_BRASIL: IFormaPagamentoDetalhe;
BANRISUL: IFormaPagamentoDetalhe;
BRADESCO: IFormaPagamentoDetalhe;
ITAU: IFormaPagamentoDetalhe;
}
interface IFormaPagamentoOpcaoCredito {
AMEX?: IFormaPagamentoDetalhe;
AURA?: IFormaPagamentoDetalhe;
BRASILCARD?: IFormaPagamentoDetalhe;
DINERS?: IFormaPagamentoDetalhe;
ELO?: IFormaPagamentoDetalhe;
HIPERCARD?: IFormaPagamentoDetalhe;
MASTERCARD?: IFormaPagamentoDetalhe;
PERSONALCARD?: IFormaPagamentoDetalhe;
PLENOCARD?: IFormaPagamentoDetalhe;
SOROCRED?: IFormaPagamentoDetalhe;
VISA?: IFormaPagamentoDetalhe;
VALECARD?: IFormaPagamentoDetalhe;
}
interface IFormasPagamento {
BOLETO?: IFormaPagamento<IFormaPagamentoOpcaoBoleto>;
ONLINE_DEBIT?: IFormaPagamento<IFormaPagamentoOpcaoDebito>;
CREDIT_CARD?: IFormaPagamento<IFormaPagamentoOpcaoCredito>;
DEPOSIT?: IFormaPagamento<IFormaPagamentoOpcaoCredito>;
}
interface IFormasPagamentoParametro extends IParametro<IFormasPagamentoResultado> {
amount: number;
}
interface IFormasPagamentoResultado {
error: boolean;
paymentMethods: IFormasPagamento;
}
interface IBandeiraCartao {
name: string;
bin: number;
cvvSize: number;
expirable: boolean;
validationAlgorithm: string;
}
interface IBandeiraCartaoParametro extends IParametro<IBandeiraCartaoResultado> {
cardBin: number;
}
interface IBandeiraCartaoResultado {
brand: IBandeiraCartao;
}
interface ICartaoToken {
token: string;
}
interface ICartaoTokenBase {
cardNumber: number;
brand: string;
cvv?: number;
expirationMonth?: number;
expirationYear?: number;
}
interface ICartaoTokenParametro extends IParametro<ICartaoTokenResultado>, ICartaoTokenBase {
}
interface ICartaoTokenResultado {
card: ICartaoToken;
}
interface ICartaoParcelamentoDetalhe {
quantity: number;
totalAmount: number;
installmentAmount: number;
interestFree: boolean;
}
interface ICartaoParcelamento {
amex?: ICartaoParcelamentoDetalhe[];
aura?: ICartaoParcelamentoDetalhe[];
brasilcard?: ICartaoParcelamentoDetalhe[];
diners?: ICartaoParcelamentoDetalhe[];
elo?: ICartaoParcelamentoDetalhe[];
hipercard?: ICartaoParcelamentoDetalhe[];
mastercard?: ICartaoParcelamentoDetalhe[];
personalcard?: ICartaoParcelamentoDetalhe[];
plenocard?: ICartaoParcelamentoDetalhe[];
sorocred?: ICartaoParcelamentoDetalhe[];
visa?: ICartaoParcelamentoDetalhe[];
valecard?: ICartaoParcelamentoDetalhe[];
}
interface ICartaoParcelamentoParametroBase {
amount: number;
brand?: string;
maxInstallmentNoInterest?: number;
}
interface ICartaoParcelamentoResultado {
error: boolean;
installments: ICartaoParcelamento;
}
interface ICartaoParcelamentoParametro extends IParametro<ICartaoParcelamentoResultado>, ICartaoParcelamentoParametroBase {
}
}
declare namespace hurbis.pagamento.pagseguro {
interface ISessao {
id: string;
dataHora: Date;
}
interface ITelefone {
codigoArea: string;
numero: string;
}
enum TipoDocumento {
CPF = 1,
CNPJ = 2,
}
interface IDocumento {
tipo: TipoDocumento;
valor: string;
}
interface IComprador {
hash: string;
ip?: string;
dataNascimento: Date;
telefone: ITelefone;
email: string;
documentos: IDocumento[];
nome: string;
}
interface IItem {
id: string;
descricao: string;
valorUnitario: number;
quantidade: number;
}
interface IEndereco {
logradouro: string;
numero: number;
complemento?: string;
bairro: string;
cidade: string;
estado: string;
pais?: string;
cep: string;
}
enum TipoFrete {
PAC = 1,
Sedex = 2,
Nenhum = 3,
}
interface IFrete {
endereco?: IEndereco;
tipo?: TipoFrete;
valor?: number;
enderecoObrigatorio: boolean;
}
interface IParcelamento {
quantidade: number;
quantidadeParcelasSemJuros: number;
valor: number;
}
interface IResponsavel {
nome: string;
documentos: IDocumento[];
dataNascimento: Date;
telefone: ITelefone;
}
interface ICartaoCredito {
token: string;
parcelamento: IParcelamento;
responsavel: IResponsavel;
enderecoCobranca: IEndereco;
}
interface IBanco {
nome: string;
}
interface IDynamicPaymentMethodMessage {
creditCard: string;
boleto: string;
}
enum TipoMeioPagamento {
CartaoCredito = 1,
Boleto = 2,
Debito = 3,
}
interface IPagamento {
/**
* URL para envio de notificações. Formato: Uma URL válida, com limite de 255 caracteres.
**/
notificationURL?: string;
comprador: IComprador;
itens: IItem[];
/**
* Código de referência da transação.
* Informa o código que foi usado para fazer referência ao pagamento.
* Este código foi fornecido no momento do pagamento e é útil para vincular as
* transações do PagSeguro às vendas registradas no seu sistema.
* Formato: Livre, com o limite de 200 caracteres.
**/
codigoReferencia?: string;
frete: IFrete;
/**
* Valores extras a serem cobrados.
* Formato: Decimal, com duas casas decimais separadas por ponto (p.e., 1234.56),
* maior que 0.00 e menor ou igual a 9999999.00.
**/
valorExtra?: number;
/**
* Meio de pagamento.
**/
meioPagamento: TipoMeioPagamento;
cartaoCredito?: ICartaoCredito;
/**
* Dados para pagamento com Débito Online.
**/
banco?: IBanco;
dynamicPaymentMethodMessage?: IDynamicPaymentMethodMessage;
/**
* O campo promoCode pode ser utilizado para promoções e parcerias com o PagSeguro.
**/
codigoPromocional?: string;
}
enum TipoFormaPagamento {
CartaoCredito = 1,
Boleto = 2,
Debito = 3,
Saldo = 4,
DepositoConta = 7,
}
enum CodigoFormaPagamento {
CartaoCreditoVisa = 101,
CartaoCreditoMasterCard = 102,
CartaoCreditoAmericanExpress = 103,
CartaoCreditoDiners = 104,
CartaoCreditoHipercard = 105,
CartaoCreditoAura = 106,
CartaoCreditoElo = 107,
CartaoCreditoPersonalCard = 109,
CartaoCreditoBrasilCard = 112,
CartaoCreditoFORTBRASIL = 113,
CartaoCreditoVALECARD = 115,
CartaoCreditoCabal = 116,
CartaoCreditoMais = 117,
CartaoCreditoGRANDCARD = 119,
CartaoCreditoSorocred = 120,
CartaoCreditoUpPolicard = 122,
CartaoCreditoBaneseCard = 123,
BoletoBradesco = 201,
BoletoSantander = 202,
DebitoBradesco = 301,
DebitoItau = 302,
DebitoBancoBrasil = 304,
DebitoBanrisul = 306,
SaldoPagSeguro = 401,
DepositoEmContaBancoBrasil = 701,
DepositoEmContaHSBC = 702,
}
interface IFormaPagamentoTransacao {
tipo: TipoFormaPagamento;
codigo: CodigoFormaPagamento;
}
enum TipoTransacao {
CHECKOUT = 1,
TRANSFER = 2,
FUNDS_ADDITION = 3,
WITHDRAW = 4,
CHARGING = 5,
DONATATION = 6,
BONUS = 7,
BONUS_REPASS = 8,
OPERATIONAL = 9,
POLITICAL_DONATATION = 10,
PAGAMENTO_PRE_APROVADO = 11,
BONUS_CAMPAIGN = 12,
SECONDARY = 13,
VALIDATOR = 14,
}
enum TipoStatus {
Nenhum = 0,
AguardandoPagamento = 1,
EmAnalise = 2,
Paga = 3,
Disponivel = 4,
EmDisputa = 5,
Devolvida = 6,
Cancelada = 7,
}
interface ITransacao {
data: Date;
codigoReferencia: string;
formaPagamento: IFormaPagamentoTransacao;
comprador: IComprador;
valorBruto: number;
itens: IItem[];
frete: IFrete;
dataSituacao: Date;
origemCancelamento: string;
valorDesconto: number;
valorLiquido: number;
valorExtra: number;
dataEncerramento: Date;
quantidadeParcela: number;
valorTaxa: number;
linkPagamento?: string;
tipo: TipoTransacao;
status: TipoStatus;
quantidadeItens: number;
codigo: string;
}
}
declare namespace hurbis.pagamento.pagseguro {
class Util {
static recuperarDetalheCartaoCredito(opcoes: IFormaPagamentoOpcaoCredito, bandeira: string): IFormaPagamentoDetalhe;
static recuperarParcelaCartaoCredito(opcoes: ICartaoParcelamento, bandeira: string): ICartaoParcelamentoDetalhe[];
}
}
declare namespace hurbis.pagamento {
class Script {
static PAGSEGURO_PRODUCAO: string;
static PAGSEGURO_DESENVOLVIMENTO: string;
static itens: hurbis.comum.IScriptDefinicao[];
}
}
declare namespace hurbis.pagamento {
class Modulo {
static DEFINICAO: comum.IModuloDefinicao;
static inicializar(): void;
}
}
declare namespace hurbis.pagamento {
class ConfiguracaoProvider implements angular.IServiceProvider {
constructor();
private _configuracao;
configurar(configuracao: IConfiguracao): void;
getConfiguracao: () => IConfiguracao;
$get: (() => IPagamentoConfigService)[];
static inicializar(): void;
}
}
declare namespace hurbis.pagamento {
class PagamentoPagSeguroService {
private $resource;
private $q;
private $injector;
private configuracao;
constructor($resource: angular.resource.IResourceService, $q: angular.IQService, $injector: angular.auto.IInjectorService, $hbsPagamentoConfig: IPagamentoConfigService);
private Sessao;
private atualizarSessaoPagSeguro();
private converterMinutoParaMilisegundo(tempo);
private sessaoValida();
private executarMetodo(metodo);
/**
* Iniciar sessão junto ao servidor do PagSeguro. Necessário configurar rotina pagSeguro.recuperarSessaoServidor.
* Método é chamado automaticamente ao acionar alguma rotina que dependa da sessão.
*/
iniciarSessaoAsync(): ng.IPromise<void>;
/**
* Recupera identificador único do comprador/cliente para realizar operações.
*/
getIdentificadorComprador(): string;
/**
* Recupera os meios de pagamento disponíveis para o valor informado.
* @param valor Valor do produto/serviço.
*/
getMeiosPagamento(valor: number): ng.IPromise<pagseguro.IFormasPagamentoResultado>;
/**
* Retorna a bandeira do cartão.
* @param binCartao Seis primeiros números do cartão.
*/
getBandeira(binCartao: number): ng.IPromise<pagseguro.IBandeiraCartaoResultado>;
/**
* Recupera token gerado pelo PagSeguro para o cartão de crédito informado.
* @param cartao Dados do cartão.
*/
getCartaoToken(cartao: pagseguro.ICartaoTokenBase): ng.IPromise<pagseguro.ICartaoTokenResultado>;
/**
* Retorna a lista de parcelas com seus respectivos detalhes.
* @param informacaoParcelamento Informações do parcelamento.
*/
getParcelas(informacaoParcelamento: pagseguro.ICartaoParcelamentoParametroBase): ng.IPromise<pagseguro.ICartaoParcelamentoResultado>;
static inicializar(): void;
}
}