PagSeguro
Instalação
$ meteor add gbit:pagseguro
Testando (caso você queira clonar)
$ meteor test-packages ./
Documentação no PagSeguro
Não implementado ainda neste novíssimo beta
- Consultamento de transações
- Handler dos dados de pagamento
- Respectivos status de pagamentos
Configurando
Definindo os dados do vendedor
Meteor.startup(function(){
PagSeguro.settings({
email: 'youremail@net.com',
token: 'YOUR_TOKEN'
});
// A moeda padrão é o Real, mas você pode definir outra:
PagSeguro.settings({
email: 'youremail@net.com',
token: 'YOUR_TOKEN',
currency: 'USD'
});
});
API urls
Defina quais URLs o PagSeguro deve usar para mandar dados das transações.
Meteor.startup(function(){
PagSeguro.config.callbackUrls({
// PagSeguro ficará mandando aqui infos
// sobre o status do pagamento das transações
notifications: '/pagseguro_notifications',
// successfulPurchase -> Aqui é para onde seu usuário
// será redirectionando depois de sair da tela de pagamento do PagSeguro
successfulPurchase: '/pagseguro_confirmation',
// Depois de chamar `buy.checkout()`, PagSeguro
// vai redirecionar o seu usuário com o código do pagamento pra cá
confirmationCode: '/pagseguro_response',
})
});
Definindo onde as compras serão salvas no seu banco
Este pacote usará uma Mongo Collection padrão se nenhum for informado.
A collection padrão está disponível em PagSeguro.config._purchasesCollection
.
Mas você pode querer configurar uma collection sua:
Meteor.startup(function(){
PagSeguro.config.PurchasesCollection(PurchasesCollection);
});
Se você quiser usar o SimpleSchema para validar seus docs, tenha certeza de adicionar pelo menos estes campos no seu schema:
Schemas.Purchases = new SimpleSchema({
items: {
type: [Object],
label: 'Purchase items'
},
createdAt: {
type: Date,
},
// Esse campo será modificado pelos status do pagamento da compra notificados
// pelo PagSeguro
status: {
type: String
},
// Dados do comprador
sender: {
type: Object,
label: 'User'
},
// Dados do endereço de entrega
shippingAddress: {
type: Object
}
});
PurchasesCollection.attachSchema(Schemas.Purchases);
Manuseando os dados do comprador
Para dizer ao pacote como os dados do seu comprador serão pegos, você DEVE definir um handler. Assegurando de retornar um objeto com os dados, os disponíveis são (nem todos são requeridos): senderName, senderPhone, senderAreaCode, senderEmail:
// Locus: server
PagSeguro.config.SenderHandler(function(userId){
// Code of yours here
// Doing some amazing stuff
// and...
var user = Meteor.users.findOne(userId);
return {
// You can define others fields that will be saved
// in purchase doc but won't go in the request
someOtherField: 'I love you',
senderName: 'Silvio Santos',
senderPhone: '9999-9999',
senderAreaCode: '99',
senderEmail: 'silviosantos@sbt.com.br'
}
})
O handler será chamado durante o processando do request de pagamento para pegar os dados do comprador, userId
é a mongo id do usuário logado.
Handling shipping address data
Para dizer ao pacote como os dados de entrega do seu comprador serão pegos, você DEVE definir um handler. Assegurando de retornar um objeto com os dados, os disponíveis são (nem todos são requeridos): shippingType, shippingAddressStreet, shippingAddressNumber, shippingAddressComplement, shippingAddressDistrict, shippingAddressPostalCode, shippingAddressCity, shippingAddressState', shippingAddressCountry:
// Locus: server
PagSeguro.config.ShippingHandler(function(userId){
// Code of yours here
// Doing some amazing stuff
// and...
return {
shippingType:,
shippingAddressStreet: 'St. Blue',
shippingAddressNumber: '123',
shippingAddressComplement: 'CS1',
shippingAddressDistrict: '13',
shippingAddressPostalCode: '4444-666',
shippingAddressCity: 'City',
shippingAddressState: 'State',
shippingAddressCountry: 'Country'
}
})
O handler será chamado durante o processando do request de pagamento.
Usando o carrinho
Os items do seu carrinho são salvos no minimongo local (máquina do client), mas graças ao PersistentMinimongo, seu usuário pode navegar livrement pelo site e eles não serão resetados;
Para usar o carrinho de items, apenas crie uma nova instância do PagSeguro no seu client code:
var buy = new PagSeguro();
Adicionando itens ao carrinho
buy.addItem({
amount: 15.0, // R$ 15,00
description: 'Very cool stuff',
});
=> { _id: '...', description: 'Very cool stuff', amount: 15.0, weight: 0, }
Você deve informar pelo menos a description e o amount
Removendo itens do carrinho
buy.removeItem(itemId)
// removing all items
buy.removeAllItems();
Checkout
// Você pode deixar o servidor redirecionar o usuário para o pagamento
buy.checkout();
// Ou você pode redirecionar o usuário no client code
// apenas passando um callback para buy.checkout
buy.checkout(function(err, response){
Router.go(response.paymentUrl);
});
Os itens do carrinho serão apagados quando o checkout for disparado, mas você pode dizer pra isso não acontecer:
buy.checkout(false);
// ou
buy.checkout(callback, false);