Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

pagseguro

Package Overview
Dependencies
Maintainers
1
Versions
6
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

pagseguro - npm Package Compare versions

Comparing version 0.0.5 to 0.1.0

209

lib/pagseguro.js

@@ -1,2 +0,2 @@

// Generated by CoffeeScript 1.6.3
// Generated by CoffeeScript 1.9.3
(function() {

@@ -10,6 +10,14 @@ var pagseguro, req, xml;

pagseguro = (function() {
function pagseguro(email, token) {
this.email = email;
this.token = token;
this.obj = new Object;
function pagseguro(configObj) {
if (arguments.length > 1) {
this.email = arguments[0];
this.token = arguments[1];
this.mode = "payment";
console.warn("This constructor is deprecated. Please use a single object with the config options as attributes");
} else {
this.email = configObj.email;
this.token = configObj.token;
this.mode = configObj.mode || "payment";
}
this.obj = {};
this.xml = '<?xml version="1.0" encoding="UTF-8" standalone="yes"?>';

@@ -20,3 +28,3 @@ return this;

pagseguro.prototype.currency = function(cur) {
this.obj['currency'] = cur;
this.obj.currency = cur;
return this;

@@ -26,3 +34,3 @@ };

pagseguro.prototype.reference = function(ref) {
this.obj['reference'] = ref;
this.obj.reference = ref;
return this;

@@ -32,5 +40,8 @@ };

pagseguro.prototype.addItem = function(item) {
if (!this.obj['items']) {
this.obj['items'] = new Array;
if (this.mode === 'subscription') {
throw new Error("This function is for payment mode only!");
}
if (this.obj.items == null) {
this.obj.items = [];
}
this.obj.items.push({

@@ -42,36 +53,131 @@ item: item

pagseguro.prototype.buyer = function(obj) {
this.obj['sender'] = new Object;
this.obj.sender['name'] = obj.name;
this.obj.sender['email'] = obj.email;
this.obj.sender['phone'] = new Object;
this.obj.sender.phone['areaCode'] = obj.phoneAreaCode;
this.obj.sender.phone['number'] = obj.phoneNumber;
pagseguro.prototype.buyer = function(buyer) {
this.obj.sender = {
name: buyer.name,
email: buyer.email,
phone: {
areaCode: buyer.phoneAreaCode,
number: buyer.phoneNumber
}
};
if (this.mode === 'subscription') {
this.obj.sender.address = {};
if (buyer.street != null) {
this.obj.sender.address.street = buyer.street;
}
if (buyer.number != null) {
this.obj.sender.address.number = buyer.number;
}
if (buyer.postalCode != null) {
this.obj.sender.address.postalCode = buyer.postalCode;
}
if (buyer.city != null) {
this.obj.sender.address.city = buyer.city;
}
if (buyer.state != null) {
this.obj.sender.address.state = buyer.state;
}
if (buyer.country != null) {
this.obj.sender.address.country = buyer.country;
}
if (buyer.complement != null) {
this.obj.sender.address.complement = buyer.complement;
}
if (buyer.district != null) {
this.obj.sender.address.district = buyer.district;
}
}
return this;
};
pagseguro.prototype.shipping = function(obj) {
this.obj['shipping'] = new Object;
this.obj.shipping['type'] = obj.type;
this.obj.shipping['address'] = new Object;
this.obj.shipping.address['street'] = obj.street;
this.obj.shipping.address['number'] = obj.number;
if (obj.complement) {
this.obj.shipping.address['complement'] = obj.complement;
pagseguro.prototype.shipping = function(shippingInfo) {
switch (this.mode) {
case 'payment':
case 'sandbox':
this.obj.shipping = {
type: shippingInfo.type,
address: {
street: shippingInfo.street,
number: shippingInfo.number,
postalCode: shippingInfo.postalCode,
city: shippingInfo.city,
state: shippingInfo.state,
country: shippingInfo.country
}
};
if (shippingInfo.complement != null) {
this.obj.shipping.complement = shippingInfo.complement;
}
if (shippingInfo.district != null) {
this.obj.shipping.district = shippingInfo.district;
}
break;
case 'subscription':
if (this.obj.sender == null) {
this.obj.sender = {};
}
this.obj.sender.address = {
street: shippingInfo.street,
number: shippingInfo.number,
postalCode: shippingInfo.postalCode,
city: shippingInfo.city,
state: shippingInfo.state,
country: shippingInfo.country
};
if (shippingInfo.complement != null) {
this.obj.sender.address.complement = shippingInfo.complement;
}
if (shippingInfo.district != null) {
this.obj.sender.address.district = shippingInfo.district;
}
}
if (obj.district) {
this.obj.shipping.address['district'] = obj.district;
return this;
};
pagseguro.prototype.preApproval = function(preApprovalInfo) {
var maxTotalAmount, twoYearsFromNow;
if (this.mode === 'subscription') {
twoYearsFromNow = new Date();
twoYearsFromNow.setFullYear(twoYearsFromNow.getFullYear() + 2);
maxTotalAmount = preApprovalInfo.maxTotalAmount * 1 || preApprovalInfo.amountPerPayment * 24 || preApprovalInfo.maxAmountPerPayment * 24;
this.obj.preApproval = {
charge: preApprovalInfo.charge || 'manual',
finalDate: preApprovalInfo.finalDate || twoYearsFromNow.toJSON(),
maxTotalAmount: maxTotalAmount.toFixed(2)
};
if (preApprovalInfo.name != null) {
this.obj.preApproval.name = preApprovalInfo.name;
}
if (preApprovalInfo.details != null) {
this.obj.preApproval.details = preApprovalInfo.details;
}
if (preApprovalInfo.period != null) {
this.obj.preApproval.period = preApprovalInfo.period;
}
if (preApprovalInfo.amountPerPayment != null) {
this.obj.preApproval.amountPerPayment = preApprovalInfo.amountPerPayment;
}
if (preApprovalInfo.maxAmountPerPayment != null) {
this.obj.preApproval.maxAmountPerPayment = preApprovalInfo.maxAmountPerPayment;
}
if (preApprovalInfo.maxPaymentsPerPeriod != null) {
this.obj.preApproval.maxPaymentsPerPeriod = preApprovalInfo.maxPaymentsPerPeriod;
}
if (preApprovalInfo.maxAmountPerPeriod != null) {
this.obj.preApproval.maxAmountPerPeriod = preApprovalInfo.maxAmountPerPeriod;
}
if (preApprovalInfo.initialDate != null) {
this.obj.preApproval.initialDate = preApprovalInfo.initialDate;
}
} else {
throw new Error("This function is for subscription mode only!");
}
this.obj.shipping.address['postalCode'] = obj.postalCode;
this.obj.shipping.address['city'] = obj.city;
this.obj.shipping.address['state'] = obj.state;
this.obj.shipping.address['country'] = obj.country;
return this;
};
/*
Configura as URLs de retorno e de notificação por pagamento
*/
*/
pagseguro.prototype.setRedirectURL = function(url) {

@@ -87,19 +193,42 @@ this.obj.redirectURL = url;

pagseguro.prototype.setReviewURL = function(url) {
if (this.mode === "subscription") {
this.obj.reviewURL = url;
} else {
throw new Error("This function is for subscription mode only!");
}
return this;
};
pagseguro.prototype.send = function(callback) {
var options;
options = {
uri: "https://ws.pagseguro.uol.com.br/v2/checkout?email=" + this.email + "&token=" + this.token,
method: 'POST',
headers: {
'Content-Type': 'application/xml; charset=UTF-8'
},
body: this.xml + xml.toXML({
checkout: this.obj
})
}
};
switch (this.mode) {
case 'payment':
options.uri = "https://ws.pagseguro.uol.com.br/v2/checkout?email=" + this.email + "&token=" + this.token;
options.body = this.xml + xml.toXML({
checkout: this.obj
});
break;
case 'subscription':
options.uri = "https://ws.pagseguro.uol.com.br/v2/pre-approvals/request?email=" + this.email + "&token=" + this.token;
options.body = this.xml + xml.toXML({
preApprovalRequest: this.obj
});
break;
case 'sandbox':
options.uri = "https://ws.sandbox.pagseguro.uol.com.br/v2/checkout?email=" + this.email + "&token=" + this.token;
options.body = this.xml + xml.toXML({
checkout: this.obj
});
}
return req(options, function(err, res, body) {
if (err) {
callback(err);
}
if (!err) {
return callback(err);
} else {
return callback(null, body);

@@ -106,0 +235,0 @@ }

4

package.json

@@ -26,3 +26,3 @@ {

"description": "Fornece integração à API de pagamentos do PagSeguro",
"version": "0.0.5",
"version": "0.1.0",
"homepage": "https://github.com/cranic/node-pagseguro",

@@ -48,2 +48,2 @@ "repository": {

}
}
}

@@ -1,13 +0,13 @@

node-pagseguro
==============
# node-pagseguro
Integração ao Pagseguro para sistemas usando o Node.js
Instalação
----------
## Instalação
`npm install pagseguro`
Como usar
---------
## Como usar
### Para pagamentos únicos
```javascript

@@ -17,5 +17,8 @@ //Inicializar a função com o e-mail e token

pagseguro = require('pagseguro');
pag = new pagseguro('suporte@lojamodelo.com.br', '95112EE828D94278BD394E91C4388F20');
pag = new pagseguro({
email : 'suporte@lojamodelo.com.br',
token: '95112EE828D94278BD394E91C4388F20'
});
//Configurando a moeda e a ferência do pedido
//Configurando a moeda e a referência do pedido
pag.currency('BRL');

@@ -83,2 +86,108 @@ pag.reference('12345');

});
```
```
### Assinaturas (Pagamentos Recorrentes)
```javascript
// Inicializa o objeto PagSeguro em modo assinatura
var pagseguro = require('pagseguro'),
pag = new pagseguro({
email : 'suporte@lojamodelo.com.br',
token: '95112EE828D94278BD394E91C4388F20',
mode : 'subscription'
});
//Configurando a moeda e a referência do pedido
pag
.currency('BRL')
.reference('12345');
/***********************************
* Configura a assinatura *
************************************/
//Configurando as informações do comprador
pag.buyer({
name: 'José Comprador',
email: 'comprador@uol.com.br',
phoneAreaCode: '51',
phoneNumber: '12345678',
street: 'Rua Alameda dos Anjos',
number: '367',
complement: 'Apto 307',
district: 'Parque da Lagoa',
postalCode: '01452002',
city: 'São Paulo',
state: 'RS',
country: 'BRA'
});
// Configurando os detalhes da assinatura (ver documentação do PagSeguro para mais parâmetros)
pag.preApproval({
// charge: 'auto' para cobranças automáticas ou 'manual' para cobranças
// disparadas pelo seu back-end
// Ver documentação do PagSeguro sobre os tipos de cobrança
charge: 'auto',
// Título da assinatura (até 100 caracteres)
name: 'Assinatura de serviços',
// Descrição da assinatura (até 255 caracteres)
details: 'Assinatura mensal para prestação de serviço da loja modelo',
// Valor de cada pagamento
amountPerPayment: '50.00',
// Peridiocidade dos pagamentos: Valores: 'weekly','monthly','bimonthly',
// 'trimonthly','semiannually','yearly'
period: 'monthly',
// Data de expiração da assinatura (máximo 2 anos após a data inicial)
finalDate: '2016-10-09T00:00:00.000-03:00'
});
//Configurando URLs de retorno e de notificação (Opcional)
//ver https://pagseguro.uol.com.br/v2/guia-de-integracao/finalizacao-do-pagamento.html#v2-item-redirecionando-o-comprador-para-uma-url-dinamica
pag
.setRedirectURL("http://www.lojamodelo.com.br/retorno")
.setNotificationURL("http://www.lojamodelo.com.br/notificacao");
// Configurando URL de revisão dos termos de assinatura (Opcional)
pag.setReviewURL("http://www.lojamodelo.com.br/revisao");
//Enviando o xml ao pagseguro
pag.send(function(err, res) {
if (err) {
console.log(err);
}
console.log(res);
});
```
### Modo Sandbox
O modo Sandbox do PagSeguro (hoje, 09/10/2014, em beta) permite o desenvolvedor a testar seu código usando o serviço do PagSeguro sem disparar transações reais mas ainda recebendo notificações. Por enquanto ele só dá suporte a pagamentos padrão, logo para testar assinaturas ainda é necessário realizar uma transação real.
Para utilizar o modo Sandbox, basta inicializar a biblioteca com a opção `mode : 'sandbox'` como no exemplo abaixo e utilizá-la para gerar pagamentos avulsos.
```javascript
// Inicializa o objeto PagSeguro em modo assinatura
var pagseguro = require('pagseguro'),
pag = new pagseguro({
email : 'suporte@lojamodelo.com.br',
token: '95112EE828D94278BD394E91C4388F20',
mode : 'sandbox'
});
```
É preciso gerar um token específico para o modo Sandbox na [Página do Sandbox do PagSeguro](https://sandbox.pagseguro.uol.com.br)
## Changelog
* **v0.1.0** - Assinaturas no PagSeguro
- Novo construtor aceita um objeto de configuração ao invés dos argumentos de e-mail e token. A maneira antiga ainda é válida, mas está obsoleta e gerará um aviso no console.
- A configuração aceita três modos de pagamento (atributo `mode`):
+ `'payment'` : Pagamento único padrão do PagSeguro (**Padrão**)
+ `'subscription'` : Modo de assinatura para pagamentos recorrentes
+ `'sandbox'` : Modo de testes do PagSeguro (ver https://sandbox.pagseguro.uol.com.br/)
- Nova função para configurar assinaturas: `pag.preApproval(config)`
- Caso a função `addItem()` seja chamada em modo `subscription`, é levantada uma exceção
- Caso a função `preApproval()` seja chamada em modo `payment` ou `sandbox`, é levantada uma exceção
- Caso a função `setReviewURL()` seja chamada em modo `payment` ou `sandbox`, é levantada uma exceção

Sorry, the diff of this file is not supported yet

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc