$ meteor add gbit:pagseguro
$ meteor test-packages ./
- Consultamento de transações
- Handler dos dados de pagamento
- Respectivos status de pagamentos
Meteor.startup(function(){
PagSeguro.settings({
email: '[email protected]',
token: 'YOUR_TOKEN'
});
// A moeda padrão é o Real, mas você pode definir outra:
PagSeguro.settings({
email: '[email protected]',
token: 'YOUR_TOKEN',
currency: 'USD'
});
});
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',
})
});
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);
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: '[email protected]'
}
})
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.
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.
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();
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
buy.removeItem(itemId)
// removing all items
buy.removeAllItems();
// 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);