Criando uma assinatura
A API MundiPagg oferece uma funcionalidade prática para o gerenciamento de cobranças recorrentes: as Assinaturas(Subscription). Ela possibilita que você cobre os seus clientes com intervalos pré determinados, sem que seja necessário criar essa regra de negócio do seu lado. Nesse tutorial iremos descrever passo a passo como realizar a criação de uma assinatura avulsa e como criar uma assinatura a partir de um plano previamente cadastrado.
Nesse tutorial iremos utilizar a SDK C# da Mundipagg disponível no gerenciador de pacotes NuGet com o nome de MundiAPI.PCL.
Criando uma assinatura avulsa
Primeiro você deve importar o pacote MundiAPI.PCL para a nossa aplicação de teste e depois adicionar nossas credenciais instanciando a classe MundiAPIClient.
using MundiAPI.PCL;
namespace TutorialAssinatura {
class Program {
static void Main(string[] args) {
string basicAuthUserName = "sk_test_4AdjlqpseatnmgbW";
// Senha em branco. Passando apenas a secret key
string basicAuthPassword = "";
var client = new MundiAPIClient(basicAuthUserName, basicAuthPassword);
}
}
}
Em seguida, criará o objeto Customer, objeto esse que contém os dados do usuário final que está contratando a assinatura. Apenas o campo Name é obrigatório porém recomendamos que envie também o campo Email. Enviando esse campo, conseguiremos identificar se o cliente já esta na sua carteira de cliente, evitando assim qualquer duplicidade.
using MundiAPI.PCL;
using MundiAPI.PCL.Models;
namespace TutorialAssinatura {
class Program {
static void Main(string[] args) {
string basicAuthUserName = "sk_test_4AdjlqpseatnmgbW";
// Senha em branco. Passando apenas a secret key
string basicAuthPassword = "";
var client = new MundiAPIClient(basicAuthUserName, basicAuthPassword);
var customer = new CreateCustomerRequest() {
Name = "Gustavo Fonseca",
Email = "[email protected]"
};
}
}
}
Caso já tenha cadastrado o Customer previamente, você pode informar o CustomerId na criação do CreateSubscriptionRequest.
var createSubscriptionRequest = new CreateSubscriptionRequest() {
CustomerId = "Id do Customer"
};
O próximo passo é cadastrar os Itens que irão compor a Assinatura.
Para criação de um item você utilizará o CreateSubscriptionItemRequest. Os campos obrigatórios são:
- Description : descrição ou nome do item
- Quantity : quantidade do item
- Pricing Scheme : template de precificação do item
Logo depois adicionará a uma lista de CreateSubscriptionItemRequest.
using MundiAPI.PCL;
using MundiAPI.PCL.Models;
using System.Collections.Generic;
namespace TutorialAssinatura {
class Program {
static void Main(string[] args) {
string basicAuthUserName = "sk_test_4AdjlqpseatnmgbW";
// Senha em branco. Passando apenas a secret key
string basicAuthPassword = "";
var client = new MundiAPIClient(basicAuthUserName, basicAuthPassword);
var customer = new CreateCustomerRequest() {
Name = "Gustavo Fonseca",
Email = "[email protected]"
};
var items = new List<CreateSubscriptionItemRequest> {
new CreateSubscriptionItemRequest {
Description = "Musculação",
Quantity = 1,
PricingScheme = new CreatePricingSchemeRequest {
Price = 18990
}
}
};
}
}
}
Intervalos
Durante a requisição de criação de uma assinatura pode-se definir algumas informações de intervalo das cobranças utilizando as propriedades:
- Interval : possíveis valores - week, month ou year
- IntervalCount : recebendo um numero inteiro
Assim pode-se criar intervalos de cobrança como :
- Interval : month
- IntervalCount : 3
Criando uma assinatura que sera cobrada a cada 3 meses.
Formas de pagamento
É possível escolher entre dois meios de pagamentos disponíveis para assinaturas :
- Boleto
- Cartão de crédito
Utilizando boleto
Você iniciará o processo de requisição de criação de uma assinatura instanciando um objeto chamado CreateSubscriptionRequest. Logo depois informará o meio de pagamento boleto na propriedade PaymentMethod.
Em seguida utilizará nossa classe Client para fazer a requisição de criação da Subscription.
using MundiAPI.PCL;
using MundiAPI.PCL.Models;
using System.Collections.Generic;
namespace TutorialAssinatura {
class Program {
static void Main(string[] args) {
string basicAuthUserName = "sk_test_39joaPCZQFyxA8zx";
// Senha em branco. Passando apenas a secret key
string basicAuthPassword = "";
var client = new MundiAPIClient(basicAuthUserName, basicAuthPassword);
var customer = new CreateCustomerRequest() {
Name = "Gustavo Fonseca",
Email = "[email protected]"
};
var items = new List<CreateSubscriptionItemRequest> {
new CreateSubscriptionItemRequest {
Description = "Musculação",
Quantity = 1,
PricingScheme = new CreatePricingSchemeRequest {
Price = 18990
}
}
};
var subscrition = new CreateSubscriptionRequest(){
PaymentMethod = "boleto",
Interval = "month",
IntervalCount = 3,
Customer = customer,
Items = items
};
var response = client.Subscriptions.CreateSubscription(subscription);
}
}
}
Utilizando cartão de crédito
Para criação de uma assinatura com o meio de pagamento cartão de crédito, você precisará de algumas informações adicionais além das solicitadas para criação com meio de pagamento boleto. É necessário o envio do objeto do objeto Card e do objeto BillingAddress para compor a requisição da Subscription.
using MundiAPI.PCL;
using MundiAPI.PCL.Models;
using System.Collections.Generic;
namespace TutorialAssinatura {
class Program {
static void Main(string[] args) {
string basicAuthUserName = "sk_test_39joaPCZQFyxA8zx";
// Senha em branco. Passando apenas a secret key
string basicAuthPassword = "";
var client = new MundiAPIClient(basicAuthUserName, basicAuthPassword);
var customer = new CreateCustomerRequest() {
Name = "Gustavo Fonseca",
Email = "[email protected]"
};
var items = new List<CreateSubscriptionItemRequest> {
new CreateSubscriptionItemRequest {
Description = "Musculação",
Quantity = 1,
PricingScheme = new CreatePricingSchemeRequest {
Price = 18990
}
}
};
var card = new CreateCardRequest() {
HolderName = "Tony Stark",
Number = "5425019448107793",
HolderDocument = "93095135270",
ExpMonth = 1,
ExpYear = 20,
Cvv = "433",
Brand = "Mastercard",
BillingAddress = new CreateAddressRequest(){
Line1 = "375, Av. General Justo, Centro",
Line2 = "7º andar, sala 01",
City = "Rio de Janeiro",
Country = "BR",
State = "RJ",
ZipCode = "22000111",
}
};
var subscription = new CreateSubscriptionRequest(){
PaymentMethod = "credit_card",
Card = card,
Interval = "month",
IntervalCount = 1,
Customer = customer,
Items = items
};
var response = client.Subscriptions.CreateSubscription(subscription);
}
}
}
Caso já tenha cadastrado o cartão do cliente previamente, você pode informar o CardId na requisição
using MundiAPI.PCL;
using MundiAPI.PCL.Models;
using System.Collections.Generic;
namespace TutorialAssinatura {
class Program {
static void Main(string[] args) {
string basicAuthUserName = "sk_test_39joaPCZQFyxA8zx";
// Senha em branco. Passando apenas a secret key
string basicAuthPassword = "";
var client = new MundiAPIClient(basicAuthUserName, basicAuthPassword);
var customer = new CreateCustomerRequest() {
Name = "Gustavo Fonseca",
Email = "[email protected]"
};
var items = new List<CreateSubscriptionItemRequest> {
new CreateSubscriptionItemRequest {
Description = "Musculação",
Quantity = 1,
PricingScheme = new CreatePricingSchemeRequest {
Price = 18990
}
}
};
var subscription = new CreateSubscriptionRequest(){
PaymentMethod = "credit_card",
CardId = "Card id previamente cadastrado",
Interval = "month",
IntervalCount = 1,
Customer = customer,
Items = items
};
var response = client.Subscriptions.CreateSubscription(subscription);
}
}
}
Criando uma assinatura a partir de um plano
Além da criação de uma assinatura avulsa apresentada anteriormente é possível criar uma assinatura a partir de um [Plano](colocar link:https://docs.mundipagg.com/v1/reference#planos). O Plano é um template pré-definido de assinatura, facilitando a organização e criação de diferentes tipos de assinaturas. O Plano possui todas as propriedades informadas na criação da assinatura avulsa.
É preciso realizar a criação de um plano utilizando o CreatePlanRequest informando o nome do plano e os itens, com suas respectivas informações, seguindo o mesmo modelo da assinatura avulsa. A única diferença nesse caso é que irá utilizar o CreatePlanItemRequest.
Na criação do Plano, você pode definir qual meio de pagamento será aceito utilizando a propriedade PaymentMethods. Importante atentar que nas assinaturas ou planos só são aceitos os meios de pagamento cartão de crédito e boleto.
using MundiAPI.PCL;
using MundiAPI.PCL.Models;
using System.Collections.Generic;
namespace TutorialAssinatura {
class Program {
static void Main(string[] args) {
string basicAuthUserName = "sk_test_39joaPCZQFyxA8zx";
// Senha em branco. Passando apenas a secret key
string basicAuthPassword = "";
var client = new MundiAPIClient(basicAuthUserName, basicAuthPassword);
var customer = new CreateCustomerRequest() {
Name = "Gustavo Fonseca",
Email = "[email protected]"
};
var request = new CreatePlanRequest {
Name = "Plano Gold",
PaymentMethods = new List<string>() { "credit_card","boleto"},
Items = new List<CreatePlanItemRequest> {
new CreatePlanItemRequest {
Name = "Musculação",
Quantity = 1,
PricingScheme = new CreatePricingSchemeRequest {
Price = 18990
}
}
}
};
var response = client.Plans.CreatePlan(request);
}
}
}
Após a criação do Plano recebemos o PlanId, o identificador daquele plano. Utilizaremos esse PlanId para criação da assinatura.
using MundiAPI.PCL;
using MundiAPI.PCL.Models;
using System.Collections.Generic;
namespace TutorialAssinatura {
class Program {
static void Main(string[] args) {
string basicAuthUserName = "sk_test_39joaPCZQFyxA8zx";
// Senha em branco. Passando apenas a secret key
string basicAuthPassword = "";
var client = new MundiAPIClient(basicAuthUserName, basicAuthPassword);
var customer = new CreateCustomerRequest() {
Name = "Gustavo Fonseca",
Email = "[email protected]"
};
var request = new CreatePlanRequest {
Name = "Plano Gold",
PaymentMethods = new List<string>() { "credit_card","boleto"},
Items = new List<CreatePlanItemRequest> {
new CreatePlanItemRequest {
Name = "Musculação",
Quantity = 1,
PricingScheme = new CreatePricingSchemeRequest {
Price = 18990
}
}
}
};
var plan = client.Plans.CreatePlan(request);
var subscriptionRequest = new CreateSubscriptionRequest() {
PlanId = plan.Id,
PaymentMethod = "boleto",
Interval = "month",
IntervalCount = 1,
Customer = customer,
};
var subscritionRequest = client.Subscriptions.CreateSubscription(subscrition);
}
}
}
Para mais informações acesse a nossa API Reference.
Updated over 6 years ago