UNPKG

hurbis-pagamento-v1

Version:

Biblioteca de pagamento utilizando PagSeguro (UOL).

447 lines (446 loc) 14.9 kB
/// <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; } }