in dev

C# e a API do Simplify Commerce (MasterCard)

Recentemente participei de um hackathon da MasterCard (http://mastersofcode.com/) foi uma excelente experiência (recomendo participar). Além de todo o processo, e de virar a madrugada desenvolvendo \o/, conheci várias plataformas e API’s da MasterCard (https://developer.mastercard.com/portal/dashboard.action) porém a plataforma chamada Simplify Commerce foi uma das que mais se destacaram, ela oferece uma solução muito completa de processamento de cartões, com features como: criação de clientes, pagamento recorrentes, estorno e a transação do cartão em sí. Com ela desenvolvemos toda uma integração e a possibilidade de comprar produtos utilizando um app no celular, sem que nenhuma parte de nosso sistema tivesse que armazenar o cartão e em poucas horas.

A idéia deste post é mostrar um pouco quais os principais recursos da API do Simplify Commerce e além disto seu SDK em .NET. Lembrando que eu ainda não cheguei a utilizar ela em produção e que ela só está disponível no EUAs e Irlanda.

Simplify Commerce

Todo o cadastro e a documentação da Simplify Commerce está disponível em https://www.simplify.com/commerce/, para começar a utilizar como desenvolvedor é necessário fazer o cadastro, com isto teremos acesso as API’s Keys (em um ambiente de sandbox) e também ao dashboard da Simplify Commece.

Dashboard:

image

Transações ( pagamentos, autorizações, reembolso, depósitos e estornos)

image

Clientes( clientes, planos, cupons e faturas)

image

Integrações e plug-ins

A Simplify Commerce possui diversos plug-ins.

image

Além de API e SDK para a principais plataformas.

image

Começando com o SDK para .NET

Nosso próximo passo será fazer download do SDK para .NET https://www.simplify.com/commerce/docs/sdk/csharp e pegar a chaves da API em sandbox https://www.simplify.com/commerce/app#/account/apiKeys. Com estas duas coisas podemos criar um console aplication para começar a trabalhar, processando nossos cartões 🙂

Abaixo vou mostrar como é simples de criar pagamentos utilizando algumas abordagens:

Criando um pagamento com o numero do cartão

PaymentsApi.PublicApiKey = "sbpb_NjQ5MGEzN2ItMjUyZS00N2NjLWFlOTAtY2E4ZDRkN2MzNGQ1";
PaymentsApi.PrivateApiKey = "MQ10w7l+OHsdsspzkDVcQToP2n5GVs83iM5c2aLydqR5YFFQL0ODSXAOkNtXTToq";

var api = new PaymentsApi();

var cartao = new Card();
//Codigo de segurança
cartao.Cvc = "123"; 
//Mes de expiracao
cartao.ExpMonth = 8;
//Ano de expiracao com 2 digitos ex: 16
cartao.ExpYear = 16; 
//numero do cartão
cartao.Number = "5555555555554444"; 

var pagamento = new Payment();
//valor do pagamento, covertido sem virgula ex: 30,54 => 3054
pagamento.Amount = 1000;
//cartão
pagamento.Card = cartao;
//descricao do pagamento
pagamento.Description = "descricao do pagamento";
//id da Invoice (utilizar caso tenha sido gerado uma invoice pela api)
//pagamento.Invoice = "[Invoice ID]";

try
{
    pagamento= (Payment)api.Create(pagamento);
    //id do pagamento gerado
    var id=pagamento.Id;
}
catch (Exception e)
{
    Console.WriteLine(e.ToString());
}

Criando uma pagamento com um token do cartão

aymentsApi.PublicApiKey = "sbpb_NjQ5MGEzN2ItMjUyZS00N2NjLWFlOTAtY2E4ZDRkN2MzNGQ1";
PaymentsApi.PrivateApiKey = "MQ10w7l+OHsdsspzkDVcQToP2n5GVs83iM5c2aLydqR5YFFQL0ODSXAOkNtXTToq";

var api = new PaymentsApi();

var pagamento = new Payment();
//valor do pagamento, covertido sem virgula ex: 30,54 => 3054
pagamento.Amount = 1000;
//token do cartão, pode ser utilizado 1 vez e é gerado pelo endpoint de CardToken
pagamento.Token="[TOKEN DO CARTAO]";
//descricao do pagamento
pagamento.Description = "descricao do pagamento";

try
{
    pagamento= (Payment)api.Create(pagamento);
    //id do pagamento gerado
    var id=pagamento.Id;
}
catch (Exception e)
{
    Console.WriteLine(e.ToString());
}

Criando um cliente (e já adicionando um cartão e uma assinatura)

PaymentsApi.PublicApiKey = "sbpb_NjQ5MGEzN2ItMjUyZS00N2NjLWFlOTAtY2E4ZDRkN2MzNGQ1";
PaymentsApi.PrivateApiKey = "MQ10w7l+OHsdsspzkDVcQToP2n5GVs83iM5c2aLydqR5YFFQL0ODSXAOkNtXTToq";

var api = new PaymentsApi();

var cartao = new Card();
//Codigo de segurança
cartao.Cvc = "123";
//Mes de expiracao
cartao.ExpMonth = 8;
//Ano de expiracao com 2 digitos ex: 16
cartao.ExpYear = 16;
//numero do cartão
cartao.Number = "5555555555554444";

var cliente = new Customer();
//adicionado o cartao ao cliente
cliente.Card = cartao;
//configuração do email do cliente
cliente.Email = "[email protected]";
//nome do cliente
cliente.Name = "Customer Customer";
//id do cliente na nossa base (ex id do sql server)
cliente.Reference = "Ref1";

//Também é possível adicionar uma assinatura para o cliente, falando qual o id do plano
var assinaturas = new List<Subscription>();
var assinatura = new Subscription();
assinatura.Plan = new Plan("[PLAN ID]");
assinaturas.Add(assinatura);
cliente.Subscriptions = assinaturas;

try
{
    cliente = (Customer)api.Create(cliente);
}
catch (Exception e)
{
    Console.WriteLine(e.ToString());
}

Efetuando uma cobrança a partir do cliente (com isto é possível gerar cobranças sem termos armazenado o numero do cartão)

PaymentsApi.PublicApiKey = "sbpb_NjQ5MGEzN2ItMjUyZS00N2NjLWFlOTAtY2E4ZDRkN2MzNGQ1";
PaymentsApi.PrivateApiKey = "MQ10w7l+OHsdsspzkDVcQToP2n5GVs83iM5c2aLydqR5YFFQL0ODSXAOkNtXTToq";

var api = new PaymentsApi();

var pagamento= new Payment();
pagamento.Amount = 2310;
pagamento.Currency = "USD";
pagamento.Description = "descricao";
pagamento.Reference = "1234";

var customer = (Customer)api.Find(typeof(Customer), "IdCliente");

pagamento.Customer = customer;
try
{
    pagamento = (Payment)api.Create(pagamento);
}
catch (Exception e)
{
    Console.WriteLine(e.ToString());
}

 

Bom espero que este post seja útil, se você está trabalhando em integrações com pagamentos, acho que vale avaliar e testar esta plataforma da MasterCard, como é possível ver nos exemplos acima, a Simplify Commerce é bem simples e objetiva, além de oferecer os principais recurso em meios de pagamento.

Estou a disposição para dúvidas, criticas ou sugestões.

abs

Rodolfo Fadino

  • http://luisrudge.net Luis Rudge

    Muito legal, cara! Uma pergunta de preguiçoso (não procurei no site deles): funciona pra pagamento no brasil?

  • http://www.rodolfofadino.com.br/ Rodolfo Fadino

    Por enquanto, só EUA e Irlanda 🙁

  • http://luisrudge.net Luis Rudge

    Que pena.. Eu tenho um projeto com pagseguro, mas, se tivesse que fazer de novo, talvez olharia o https://pagar.me/ – achei a integração super simples e tem um ambientes de teste decente.

  • Michel Banagouro

    A diferença de serviço entre PagSeguro e Pagar.me é muito grande.
    PagSeguro cobra somente sobre os recebimentos, já o Pagar.me além de cobra por transação, tem um piso mínimo de R$500,00 mensais para garantir o custo operacional deles…

  • http://luisrudge.net Luis Rudge

    Opa, não mesmo. O Pagseguro cobra por recebimento e por transação (4,99% + R$0,40). O pagar.me cobra 1,49% + R$0,50 + x%, onde x é a cobrança da operadora de crédito que, normalmente, fica em 3%. A vantagem do pagseguro é que você não precisa ter cadastro com nenhuma operadora de cartão de crédito e eles aceitam muito mais meios de pagamento.

  • Michel Banagouro

    Sim, o que eu quis dizer é que com o Pagar.me, se vc não tiver nenhuma transação no mês ou o número de transações formuito baixa a ponto de não pagar o custo operacional deles, vc vai precisar pagar o piso mínimo que é R$500,00
    Está na página deles (https://pagar.me/precos/).

  • http://luisrudge.net Luis Rudge

    Será que não é o valor mínimo de vendas? Acho difícil que seja o valor mínimo pago ao pagar.me, mas o site realmente não deixa isso claro.

  • Michel Banagouro

    Tenho quase certeza que é isso. A Mundipagg trabalha dessa forma, minha empresa é parceira deles e construímos Ecommerce oferecendo o Mundipagg como gateway de pagamento.

  • http://luisrudge.net Luis Rudge

    Bom, se esse é o caso, então fica complicado mesmo 🙂

  • http://www.eduardopires.net.br/ Eduardo Pires

    Que pena, já ia separar para testar se fosse no BR.

    Aqui no BR eu uso MOIP, indico…