O jeito mais simples e rápido de integrar o Moip a sua aplicação .NET
Índice
- Instalação
- Autenticando e configurando o ambiente
- Exemplos de Uso:
- Tratamento de Exceções
- Documentação
- Licença
- Comunidade Slack
Execute o comando para instalar via NuGet:
dotnet add package Moip --version 1.0.1
Package:
https://www.nuget.org/packages/Moip/
Para gerar o client, informe seu token oAuth e em qual environment você quer executar suas ações:
Client client = new Client("TOKEN_OAUTH", Configuration.Environments.SANDBOX);
TaxDocument taxDocument = new TaxDocument
{
Type = "CPF",
Number = "22222222222"
};
Phone phone = new Phone
{
CountryCode = "55",
AreaCode = "11",
Number = "66778899"
};
ShippingAddress shippingAddress = new ShippingAddress
{
Street = "Rua test",
StreetNumber = "123",
Complement = "Ap test",
District = "Bairro test",
City = "TestCity",
State = "SP",
Country = "BRA",
ZipCode = "01234000"
};
CustomerRequest customerRequest = new CustomerRequest
{
Fullname = "Fulano de Tal",
OwnId = "OFulanoDeTal",
BirthDate = "1990-01-01",
Email = "[email protected]",
Phone = phone,
ShippingAddress = shippingAddress,
TaxDocument = taxDocument
};
SubtotalsRequest subtotalsRequest = new SubtotalsRequest
{
Shipping = 1500,
Addition = 20,
Discount = 10
};
AmountOrderRequest amountRequest = new AmountOrderRequest
{
Currency = "BRL"
Subtotals = subtotalsRequest
};
Item itemsRequest = new Item
{
Product = "Bicicleta Specialized Tarmac 26 Shimano Alivio",
Quantity = 1,
Detail = "uma linda bicicleta",
Price = 2000
};
List<Item> itemsRequestList = new List<Item>
{
itemsRequest
};
OrderRequest orderRequest = new OrderRequest
{
OwnId = "my_own_id",
Amount = amountRequest,
Items = itemsRequestList,
Customer = customerRequest,
};
OrderResponse createdOrder = client.Orders.CreateOrder(orderRequest);
string orderId = "ORD-HPMZSOM611M2";
Order order = client.Orders.GetOrder(orderId);
OrderListResponse orderResponseList = client.Orders.ListOrders();
List<OrderResponse> orderList = orderResponseList.Orders;
TODO
TODO
TODO
Também é possível usar paginação, filtros e consulta de valor específico juntos
TODO
TaxDocument taxDocumentRequest = new TaxDocument
{
Type = "CPF",
Number = "33333333333"
};
Phone phoneRequest = new Phone
{
CountryCode = "55",
AreaCode = "11",
Number = "66778899"
};
HolderRequest holderRequest = new HolderRequest
{
Fullname = "Jose Goku da Silva",
Birthdate = "1988-12-30",
TaxDocument = taxDocumentRequest,
Phone = phoneRequest
};
CreditCardRequest creditCardRequest = new CreditCardRequest
{
ExpirationMonth = "02",
ExpirationYear = "20",
Number = "5555666677778884",
Cvc = "123",
Holder = holderRequest
};
FundingInstrumentRequest fundingInstrumentRequest = new FundingInstrumentRequest
{
Method = "CREDIT_CARD",
CreditCard = creditCardRequest
};
PaymentRequest paymentRequest = new PaymentRequest
{
InstallmentCount = 1,
StatementDescriptor = "MyStore",
FundingInstrument = fundingInstrumentRequest
};
Payment payment = client.Payments.CreateCreditCard("ORD-HPMZSOM611M2", paymentRequest);
BoletoInstructionLines boletoInstructionLines = new BoletoInstructionLines
{
First("Primeira linha"),
Second("Segunda linha"),
Third("Terceira linha")
};
BoletoRequest boletoRequest = new BoletoRequest
{
ExpirationDate = "2020-09-30",
InstructionLines = boletoInstructionLines,
LogoUri = "http://"
};
FundingInstrumentRequest fundingInstrumentRequest = new FundingInstrumentRequest
{
Method = "BOLETO",
Boleto = boletoRequest
};
PaymentBoletoOrDebitRequest paymentRequest = new PaymentBoletoOrDebitRequest
{
FundingInstrument = fundingInstrumentRequest
};
Payment payment = client.Payments.CreateBoletoOrDebit("ORD-GOHHIF4Z6PLV", paymentRequest);
Para capturar os links do boleto:
// Link do Boleto
payment.Links.PayBoleto.RedirectHref;
TODO
// Link para impressão do boleto
payment.Links.PayBoleto.PrintHref;
PaymentResponse paymentResponse = client.Payments.GetPayment("PAY-FRAAY8GN1HSB");
PaymentResponse capturedPayment = client.Payments.CapturePreAuthorized("PAY-FRAAY8GN1HSB");
PaymentResponse capturedPayment = client.Payments.CancelPreAuthorized("PAY-FRAAY8GN1HSB");
ShippingAddress shippingAddressRequest = new ShippingAddress
{
Street = "Rua test",
StreetNumber = "123",
Complement = "Ap test",
District = "Bairro test",
City = "TestCity",
State = "SP",
Country = "BRA",
ZipCode = "01234000"
};
TaxDocument taxDocumentRequest = new TaxDocument
{
Type = "CPF",
Number = "33333333333"
};
Phone phoneRequest = new Phone
{
CountryCode = "55",
AreaCode = "11",
Number = "66778899"
};
CustomerRequest customerRequest = new CustomerRequest
{
Fullname = "Fulano de Tal",
OwnId = "OFulanoDeTal" + date,
BirthDate = "1990-01-01",
Email = "[email protected]",
Phone = phoneRequest,
ShippingAddress = shippingAddressRequest,
TaxDocument = taxDocumentRequest
};
CustomerResponse customerResponse = client.Customers.CreateCustomer(customerRequest);
string customerId = "CUS-Q3BL0CAJ2G33";
CustomerResponse customerResponse = client.Customers.GetCustomer(customerId);
ShippingAddress shippingAddressRequest = new ShippingAddress
{
Street = "Rua test",
StreetNumber = "123",
Complement = "Ap test",
District = "Bairro test",
City = "TestCity",
State = "SP",
Country = "BRA",
ZipCode = "01234000"
};
TaxDocument taxDocumentRequest = new TaxDocument
{
Type = "CPF",
Number = "33333333333"
};
Phone phoneRequest = new Phone
{
CountryCode = "55",
AreaCode = "11",
Number = "66778899"
};
HolderRequest holderRequest = new HolderRequest
{
Fullname = "Jose Goku da Silva",
Birthdate = "1988-12-30",
TaxDocument = taxDocumentRequest,
Phone = phoneRequest
};
CreditCardRequest creditCardRequest = new CreditCardRequest
{
ExpirationMonth = "02",
ExpirationYear = "20",
Number = "5555666677778884",
Cvc = "123",
Holder = holderRequest
};
CustomerCreditCardRequest customerCreditCardRequest = new CustomerCreditCardRequest
{
Method = "CREDIT_CARD",
CreditCard = creditCardRequest
};
CustomerCreditCardResponse customerCreditCardResponse = client.Customers.CreateCreditCard(customerCreditCardRequest, "CUS-1RM8JPVKWEVR");
List<string> eventsList = new List<string>();
eventsList.Add("ORDER.*");
eventsList.Add("PAYMENT.AUTHORIZED");
eventsList.Add("PAYMENT.CANCELLED");
NotificationPreferenceRequest notificationPreferenceRequest = new NotificationPreferenceRequest
{
Events = eventsList,
Target = "http://requestb.in/1dhjesw1",
Media = "WEBHOOK"
};
NotificationPreferenceResponse notificationPreferenceResponse = client.Notifications.CreateNotificationPreference(notificationPreferenceRequest);
NotificationPreferenceResponse notificationPreferenceResponse = client.Notifications.GetNotificationPreference("NPR-NR0GR85KHL10");
client.Notifications.DeleteNotificationPreference("NPR-NR0GR85KHL10");
List<NotificationPreferenceResponse> notificationPreferenceResponseList = client.Notifications.ListNotificationsPreferences();
Para fazer reembolsos totais basta remover o atributo
Amount
.
Phone phoneRequest = new Phone
{
CountryCode = "55",
AreaCode = "11",
Number = "66778899"
};
TaxDocument taxDocumentRequest = new TaxDocument
{
Type = "CPF",
Number = "33333333333"
};
HolderRequest holderRequest = new HolderRequest
{
Fullname = "Jose Goku da Silva",
Birthdate = "1988-12-30",
TaxDocument = taxDocumentRequest,
Phone = phoneRequest,
};
CreditCardRequest creditCardRequest = new CreditCardRequest
{
Number = "5555666677778884",
ExpirationMonth = "02",
ExpirationYear = "20",
Cvc = "123",
Holder = holderRequest
};
RefundingInstrumentCCRequest refundingInstrumentRequest = new RefundingInstrumentCCRequest
{
Method = "CREDIT_CARD",
CreditCard = creditCardRequest
};
RefundCCRequest refundRequest = new RefundCCRequest
{
RefundingInstrument = refundingInstrumentRequest,
Amount = 2000
};
RefundCCResponse refundResponse = client.Refunds.CreateOrder("ORD-89SOQ6FMPJPX", refundRequest);
TaxDocument taxDocumentRequest = new TaxDocument
{
Type = "CPF",
Number = "22222222222"
};
HolderRequest holderRequest = new HolderRequest
{
Fullname = "Fulano de Tal",
Birthdate = "1990-01-01",
TaxDocument = taxDocumentRequest,
};
BankAccountRefundingInstrumentRequest bankAccountRefundRequest = new BankAccountRefundingInstrumentRequest
{
BankNumber = "341",
AgencyNumber = "4444444",
AgencyCheckNumber = "2",
AccountNumber = "1234",
AccountCheckNumber = "1",
Type = "CHECKING",
Holder = holderRequest
};
RefundingInstrumentBankAccountRequest refundingInstrumentRequest = new RefundingInstrumentBankAccountRequest
{
Method = "BANK_ACCOUNT",
BankAccount = bankAccountRefundRequest
};
RefundBankAccountRequest refundRequest = new RefundBankAccountRequest
{
RefundingInstrument = refundingInstrumentRequest,
Amount = 2000
};
RefundBankAccountResponse refundResponse = client.Refunds.CreateOrderBankAccount("ORD-GS1FSQ3SO9SY", refundRequest);
Phone phoneRequest = new Phone
{
CountryCode = "55",
AreaCode = "11",
Number = "66778899"
};
TaxDocument taxDocumentRequest = new TaxDocument
{
Type = "CPF",
Number = "33333333333"
};
HolderRequest holderRequest = new HolderRequest
{
Fullname = "Jose Goku da Silva",
Birthdate = "1988-12-30",
TaxDocument = taxDocumentRequest,
Phone = phoneRequest,
};
CreditCardRequest creditCardRequest = new CreditCardRequest
{
Number = "5555666677778884",
ExpirationMonth = "02",
ExpirationYear = "20",
Cvc = "123",
Holder = holderRequest
};
RefundingInstrumentCCRequest refundingInstrumentRequest = new RefundingInstrumentCCRequest
{
Method = "CREDIT_CARD",
CreditCard = creditCardRequest
};
RefundCCRequest refundRequest = new RefundCCRequest
{
RefundingInstrument = refundingInstrumentRequest,
Amount = 100
};
RefundCCResponse refundResponse = client.Refunds.CreatePayment("PAY-70380H9B6L5R", refundRequest);
TaxDocument taxDocumentRequest = new TaxDocument
{
Type = "CPF",
Number = "22222222222"
};
HolderRequest holderRequest = new HolderRequest
{
Fullname = "Fulano de Tal",
Birthdate = "1990-01-01",
TaxDocument = taxDocumentRequest,
};
BankAccountRefundingInstrumentRequest bankAccountRefundRequest = new BankAccountRefundingInstrumentRequest
{
BankNumber = "341",
AgencyNumber = "4444444",
AgencyCheckNumber = "2",
AccountNumber = "1234",
AccountCheckNumber = "1",
Type = "CHECKING",
Holder = holderRequest
};
RefundingInstrumentBankAccountRequest refundingInstrumentRequest = new RefundingInstrumentBankAccountRequest
{
Method = "BANK_ACCOUNT",
BankAccount = bankAccountRefundRequest
};
RefundBankAccountRequest refundRequest = new RefundBankAccountRequest
{
RefundingInstrument = refundingInstrumentRequest,
Amount = 2000
};
RefundBankAccountResponse refundResponse = client.Refunds.CreatePaymentBankAccount("PAY-E4Q0N9TK0BFW", refundRequest);
RefundCCResponse refundResponse = client.Refunds.GetCCRefund("REF-JR4WALM894UJ");
TaxDocument taxDocument = new TaxDocument
{
Type = "CPF",
Number = "22222222222"
};
Phone phone = new Phone
{
CountryCode = "55",
AreaCode = "11",
Number = "66778899"
};
ShippingAddress shippingAddress = new ShippingAddress
{
Street = "Rua test",
StreetNumber = "123",
Complement = "Ap test",
District = "Bairro test",
City = "TestCity",
State = "SP",
Country = "BRA",
ZipCode = "01234000"
};
CustomerRequest customerRequest = new CustomerRequest
{
Fullname = "Fulano de Tal",
OwnId = "OFulanoDeTal",
BirthDate = "1990-01-01",
Email = "[email protected]",
Phone = phone,
ShippingAddress = shippingAddress,
TaxDocument = taxDocument
};
SubtotalsRequest subtotalsRequest = new SubtotalsRequest
{
Shipping = 1500,
Addition = 20,
Discount = 10
};
AmountOrderRequest amountRequest = new AmountOrderRequest
{
Currency = "BRL",
Subtotals = subtotalsRequest
};
Item itemsRequest = new Item
{
Product = "Bicicleta Specialized Tarmac 26 Shimano Alivio",
Quantity = 1,
Detail = "uma linda bicicleta",
Price = 2000
};
List<Item> itemsRequestList = new List<Item>
{
itemsRequest
};
MoipAccountReceiverRequest moipAccountReceiver1 = new MoipAccountReceiverRequest
{
Id = "MPA-14AC21F09CAE"
};
AmountReceiverRequest amountReceiver1 = new AmountReceiverRequest
{
Percentual = 50
};
ReceiverRequest receiver1 = new ReceiverRequest
{
MoipAccount = moipAccountReceiver1,
Type = "PRIMARY",
Amount = amountReceiver1
};
MoipAccountReceiverRequest moipAccountReceiver2 = new MoipAccountReceiverRequest
{
Id = "MPA-B0D880F21EF1"
};
AmountReceiverRequest amountReceiver2 = new AmountReceiverRequest
{
Percentual = 50
};
ReceiverRequest receiver2 = new ReceiverRequest
{
MoipAccount = moipAccountReceiver2,
Type = "SECONDARY",
Amount = amountReceiver2
};
List<ReceiverRequest> receiverList = new List<ReceiverRequest>
{
receiver1,
receiver2
};
OrderRequest orderRequest1 = new OrderRequest
{
OwnId = "my_own_id",
Amount = amountRequest,
Items = itemsRequestList,
Customer = customerRequest,
Receivers = receiverList
};
CustomerRequest customerRequest2 = new CustomerRequest
{
Fullname = "Outro Nome Teste",
OwnId = "OFulanoDeTal",
BirthDate = "1990-01-01",
Email = "[email protected]",
Phone = phone,
ShippingAddress = shippingAddress,
TaxDocument = taxDocument
};
OrderRequest orderRequest2 = new OrderRequest
{
OwnId = "my_own_id2",
Amount = amountRequest,
Items = itemsRequestList,
Customer = customerRequest2,
Receivers = receiverList
};
List<OrderRequest> orderList = new List<OrderRequest>();
orderList.Add(orderRequest1);
orderList.Add(orderRequest2);
MultiorderRequest multiOrderRequest = new MultiorderRequest
{
OwnId = "meu_multiorder_id",
Orders = orderList
};
MultiorderResponse createdMultiorder = client.Multiorders.CreateMultiorder(multiorderRequest);
MultiorderResponse multiorder = client.Multiorders.GetMultiorder("MOR-F2R675E1X97P");
TODO
TODO
Para capturar os links do boleto:
// Link do Boleto
TODO
// Link para impressão do boleto
TODO
TODO
TODO
TODO
EmailRequest emailRequest = new EmailRequest
{
Address = "[email protected]"
};
TaxDocument taxDocumentRequest = new TaxDocument
{
Type = "CPF",
Number = "736.141.550-48"
};
IdentityDocumentRequest identityDocumentRequest = new IdentityDocumentRequest
{
Type = "RG",
Number = "434322344",
Issuer = "SSP",
IssueDate = "2000-12-12"
};
Phone phoneRequest = new Phone
{
CountryCode = "55",
AreaCode = "11",
Number = "712341234"
};
ShippingAddress shippingAddressRequest = new ShippingAddress
{
Street = "Av. Brigadeiro Faria Lima",
StreetNumber = "2927",
District = "Itaim",
ZipCode = "01234-000",
City = "São Paulo",
State = "SP",
Country = "BRA"
};
Person personRequest = new Person
{
Name = "Runscope",
LastName = "Goku",
TaxDocument = taxDocumentRequest,
IdentityDocument = identityDocumentRequest,
BirthDate = "1990-01-01",
Phone = phoneRequest,
Address = shippingAddressRequest,
};
AccountRequest accountRequest = new AccountRequest
{
Email = emailRequest,
Person = personRequest,
Type = "MERCHANT",
// Caso queira criar conta transparente, basta mudar esse atributo para true
TransparentAccount = false
};
AccountResponse accountResponse = client.Accounts.CreateAccount(accountRequest);
TODO
TODO
TODO
TODO
TODO
TODO
List<BankAccount> createdBankAccounts = api.bankAccount().getList("MPA-E0BAC6D15696");
TODO
TODO
TODO
TODO
TODO
TaxDocument taxDocumentRequest = new TaxDocument
{
Type = "CPF",
Number = "33333333333"
};
Phone phoneRequest = new Phone
{
CountryCode = "55",
AreaCode = "11",
Number = "66778899"
};
HolderRequest holderRequest = new HolderRequest
{
Fullname = "Jose Goku da Silva",
Birthdate = "1988-12-30",
TaxDocument = taxDocumentRequest,
Phone = phoneRequest
};
CreditCardRequest creditCardRequest = new CreditCardRequest
{
ExpirationMonth = "02",
ExpirationYear = "20",
Number = "5555666677778884",
Cvc = "123",
Holder = holderRequest
};
FundingInstrumentRequest fundingInstrumentRequest = new FundingInstrumentRequest
{
Method = "CREDIT_CARD",
CreditCard = creditCardRequest
};
Escrow escrow = new Escrow
{
Description = "Escrow test"
};
PaymentRequest paymentRequest = new PaymentRequest
{
InstallmentCount = 1,
StatementDescriptor = "MyStore",
FundingInstrument = fundingInstrumentRequest,
Escrow = escrow
};
PaymentResponse paymentResponse = client.Payments.CreateCreditCard("ORD-3435DIB58HYN", paymentRequest);
EscrowResponse escrowResponse = client.Payments.ReleaseEscrow('ECW-9OS6FAPR3FD5')
TODO
TODO
TODO
Quando ocorre algum erro na API, é lançada a exceção UnexpectedException para erros inesperados e ValidationException para erros de validação.
TODO
Tem dúvidas? Fale com a gente no Slack!