cielo_ecommerce 패키지는 플러터 개발자가 애플리케이션에 Cielo 전자상거래 결제 처리를 통합할 수 있도록 합니다. 이는 Cielo API와 상호작용하기 위한 간단한 인터페이스를 제공하며, 여러 플랫폼에서 안전한 거래 처리를 지원합니다. 신용카드 결제가 필요한 앱을 개발하는 개발자를 위해 설계되었으며, Cielo의 결제 인프라와의 통합을 간소화합니다. Android, iOS, Web, macOS, Windows, Linux와 호환되어 광범위한 배포 옵션을 보장합니다. 완전한 구현 가이드는 공식 문서를 권장합니다.
사용 사례
모바일 앱에서 신용카드 결제 처리
Cielo 전자상거래 API와의 통합
Flutter로 전자상거래 애플리케이션 구축하기
하나의 코드베이스에서 여러 플랫폼 지원
안전한 온라인 거래 활성화
주요 기능
크로스 플랫폼 지원
Cielo API와의 간단한 통합
안전한 결제 처리
공식 SDK 호환성
Flutter 애플리케이션을 위한 것
적합한 대상
Flutter 개발자
전자상거래 앱 제작자
결제 게이트웨이 통합업체
브라질을 대상으로 하는 모바일 앱 개발자
Cielo 결제 처리가 필요한 앱
고려 사항
공식 Cielo API 자격 증명이 필요합니다
최신 문서에 의존합니다
추가 보안 조치가 필요할 수 있습니다
플랫폼별 구성이 가능합니다
비-Cielo 결제 수단에는 적합하지 않습니다
원본 README
연결된 소스 저장소의 README 원문 스냅샷입니다. 최신 내용은 저장소에서 확인하세요.
cielo_ecommerce
Pacote para criar pagamentos usando o SDK da API Cielo e-Commerce. Para mais informações acesse a documentação oficial da Cielo e-Commerce para desenvolvedores.
import'package:cielo_ecommerce/cielo_ecommerce.dart';
...
finalCieloEcommerce cielo = CieloEcommerce(
environment: Environment.SANDBOX,
merchant: Merchant(
merchantId: "SEU_MERCHANT_ID",
merchantKey: "SEU_MERCHANT_KEY",
));
_makePayment() async {
print("Transação Simples");
print("Iniciando pagamento....");
//Objeto de vendaSale sale = Sale(
merchantOrderId: "2020032601", // Numero de identificação do Pedido
customer: Customer(
name: "Comprador crédito simples", // Nome do Comprador
),
payment: Payment(
type: TypePayment.creditCard, // Tipo do Meio de Pagamento
amount: 9, // Valor do Pedido (ser enviado em centavos)
installments: 1, // Número de Parcelas
softDescriptor: "Mensagem", // Descrição que aparecerá no extrato do usuário. Apenas 15 caracteres
creditCard: CreditCard(
cardNumber: "4024007153763191", // Número do Cartão do Comprador
holder: 'Teste accept', // Nome do Comprador impresso no cartão
expirationDate: '08/2030', // Data de validade impresso no cartão
securityCode: '123', // Código de segurança impresso no verso do cartão
brand: 'Visa', // Bandeira do cartão
),
),
);
try {
var response = await cielo.createSale(sale);
print('paymentId ${response.payment.paymentId}');
} onCieloExceptioncatch (e) {
print(e);
print(e.message);
print(e.errors[0].message);
print(e.errors[0].code);
}
}
...
...
print("Transação com Cartão Tokenizado");
print("Iniciando pagamento....");
//Objeto de vendaSale sale = Sale(
merchantOrderId: "2020032601", // Numero de identificação do Pedido
customer: Customer(
name: "Comprador crédito simples", // Nome do Comprador
),
payment: Payment(
type: TypePayment.creditCard, // Tipo do Meio de Pagamento
amount: 9, // Valor do Pedido (ser enviado em centavos)
installments: 1, // Número de Parcelas
softDescriptor: "Mensagem", // Descrição que aparecerá no extrato do usuário. Apenas 15 caracteres
creditCard: CreditCard(
cardToken: "db62dc71-d07b-4745-9969-42697b988ccb", // Cartão tokenizado
securityCode: '123', // Código de segurança impresso no verso do cartão
brand: 'Visa', // Bandeira do cartão
)
)
);
try{
var response = await cielo.createSale(sale);
print('paymentId ${response.payment.paymentId}');
paymentId = response.payment.paymentId;
status = response.payment.status;
} onCieloExceptioncatch(e){
print(e.message);
print(e.errors[0].message);
print(e.errors[0].code);
}
...
Transação com Análise de Fraude (AF)
...
print("Transação com Análise de Fraude (AF)");
print("Iniciando pagamento....");
//Objeto de vendaSale sale = Sale(
merchantOrderId: "2020032601", // Numero de identificação do Pedido
customer: Customer(
name: "Comprador crédito AF", // Nome do Comprador
identity: '12345678909', // Número do RG, CPF ou CNPJ do Cliente
identityType: 'CPF', // Tipo de documento de identificação do comprador (CPF ou CNPJ)
email: "compradorteste@live.com", // Email do Comprador
mobile: '5521995760078',
phone: "552125553669",
),
payment: Payment(
type: TypePayment.creditCard, // Tipo do Meio de Pagamento
amount: 9, // Valor do Pedido (ser enviado em centavos)
currency: "BRL", // Moeda na qual o pagamento será feito (BRL)
country: "BRA", // Pais na qual o pagamento será feito
installments: 1, // Número de Parcelas
interest: 'ByMerchant', // Tipo de parcelamento - Loja (ByMerchant) ou Cartão (ByIssuer)
capture: false, // Booleano que identifica que a autorização deve ser com captura automática
authenticate: false, // Define se o comprador será direcionado ao Banco emissor para autenticação do cartão
softDescriptor: "Mensagem", // Descrição que aparecerá no extrato do usuário. Apenas 15 caracteres
creditCard: CreditCard(
cardNumber: "4024007153763191", // Número do Cartão do Comprador
holder: 'Teste accept', // Nome do Comprador impresso no cartão
expirationDate: '08/2030', // Data de validade impresso no cartão
securityCode: '123', // Código de segurança impresso no verso do cartão
brand: 'Visa', // Bandeira do cartão
saveCard: "false", // Booleano que identifica se o cartão será salvo para gerar o token (CardToken)
),
fraudAnalysis: FraudAnalysis(
provider: "cybersource", // Fixo “cybersource”
sequence: "AuthorizeFirst", // Tipo de Fluxo para realização da análise de fraude
sequenceCriteria: "OnSuccess", // Critério do fluxo
captureOnLowRisk: false, // Quando true, captura automática quando o risco de fraude for considerado baixo (Accept)
voidOnHighRisk: false, // Quando true, o estorno deve acontecer automaticamente quando o risco de fraude for considerado alto
totalOrderAmount: 9, // Valor total do pedido
cart: Cart(
items: [
Items(
name: "ItemTeste", // Nome do Produto
quantity: 1, // Quantidade do produto
sku: "201411170235134521346", // Código comerciante identificador do produto
unitPrice: 9// Preço unitário do produto
)
]
),
),
),
);
try {
var response = await cielo.createSale(sale);
print('paymentId ${response.payment.paymentId}');
print('returnCode ${response.payment.returnCode}');
//Obs: FraudAnalysisReasonCode só está disponível em PRODUÇÂO//PRODUCTION/*if(response.payment.returnCode == '00'){
//SANDBOX
/*if(response.payment.returnCode == '4' || response.payment.returnCode == '6'){
print('fraudAnalysisReasonCode ${response.payment.fraudAnalysis.fraudAnalysisReasonCode}');
if(response.payment.fraudAnalysis.fraudAnalysisReasonCode == 100){
print('\ncreditCard ${response.payment.fraudAnalysis}\n');
print('\ncreditCard ${response.payment.fraudAnalysis.replyData}\n');
print('Operação realizada com sucesso!');
} else {
print('Transação não autorizada. Cod.: ${response.payment.fraudAnalysis.fraudAnalysisReasonCode}');
}
} else {
print('Transação não autorizada. Cod.: ${response.payment.returnCode}');
}
}*/print('Operação realizada com sucesso!');
} onCieloExceptioncatch (e) {
print(e);
print(e.message);
print(e.errors[0].message);
print(e.errors[0].code);
}
...
Transação com Boleto
...
print("Operação por Boleto");
print("Gerando boleto....");
//Objeto de vendaSale sale = Sale(
merchantOrderId: "2020032601", // Numero de identificação do Pedido
customer: Customer(
name: "Comprador crédito simples", // Nome do Comprador
identity: "12345678909", // Número do CPF
address: Address(
street: "Avenida Marechal Câmara", // Endereço do Comprador.
number: "160", // Número do endereço do Comprador.
complement: "Sala 934",
zipCode: "22750012", // CEP do endereço do Comprador.
district: "Centro", // Bairro do Comprador.
city: "Rio de Janeiro", // Cidade do endereço do Comprador.
state: "RJ", // Estado do endereço do Comprador.
country: "BRA"// Pais do endereço do Comprador.
)),
payment: Payment(
type: TypePayment.boleto, // Tipo do Meio de Pagamento
amount: 10, // Valor do Pedido (ser enviado em centavos)
provider: "bradesco2", // Banco (A API Aceita apenas boletos Bradesco e Banco do Brasil).
address: "Rua Teste", // Nome do Cedente.
boletoNumber: "123", // Número do Boleto enviado pelo lojista. Usado para contar boletos emitidos (“NossoNumero”).
assignor: "Empresa Teste",
demonstrative: "Desmonstrative Teste", // Texto de Demonstrativo.
expirationDate: "5/1/2015", // Data de expiração do Boleto. Ex. 2020-12-31
identification: "11884926754", // Documento de identificação do Cedente.
instructions: "Aceitar somente até a data de vencimento, após essa data juros de 1% dia.", // Instruções do Boleto.
),
);
try {
var response = await cielo.createSale(sale);
print('paymentId ${response.payment.paymentId}');
print('payment ${response.payment.toJson()}');
print('url do boleto ${response.payment.url}');
print('link de consulta ${response.payment.links[0].href}');
paymentId = response.payment.paymentId;
status = response.payment.status;
setState(() {});
} onCieloExceptioncatch (e) {
print(e);
print(e.message);
print(e.errors[0].message);
print(e.errors[0].code);
}
...
Transação com Google Pay
...
// Para pagamentos com Google Pay, utilize este pacote em conjunto com o pacote "pay", disponível em pub.dev/packages/payprint("Operação por Google Pay");
//Objeto de vendaSale sale = Sale(
merchantOrderId: "2020032601", // Numero de identificação do Pedido
customer: Customer(
name: "Comprador crédito simples", // Nome do Comprador
identity: "12345678909", // Número do CPF
address: Address(
street: "Avenida Marechal Câmara", // Endereço do Comprador.
number: "160", // Número do endereço do Comprador.
complement: "Sala 934",
zipCode: "22750012", // CEP do endereço do Comprador.
district: "Centro", // Bairro do Comprador.
city: "Rio de Janeiro", // Cidade do endereço do Comprador.
state: "RJ", // Estado do endereço do Comprador.
country: "BRA"// Pais do endereço do Comprador.
)),
payment: Payment(
type: TypePayment.creditCard, // Tipo do Meio de Pagamento
amount: 9, // Valor do Pedido (ser enviado em centavos)
installments: 1, // Número de Parcelas
softDescriptor: "Mensagem", // Descrição que aparecerá no extrato do usuário. Apenas 15 caracteres
wallet: Wallet(
type: TypePayment.androidPay, //Nome da provedora de Meio de Pagamento. Para transações Google Pay, utilize “AndroidPay”
walletKey: "{\"encryptedMessage\": \"ZW5jcnlwdGVkTWVzc2FnZQ==\",""\"ephemeralPublicKey\": \"ZXBoZW1lcmFsUHVibGljS2V5\",\"tag\": \"c2lnbmF0dXJl\"}", // Preencher com o valor do parâmetro “signedMessage” retornado pelo Google Pay
additionalData: AdditionalData(
signature: "ZXBoZW1lcmFsUHVibGljS2V5"//Preencher com o valor do parâmetro “signature” retornado pelo Google Pay
)
)
),
);
try {
var response = await cielo.createSale(sale);
print('paymentId ${response.payment.paymentId}');
print('payment ${response.payment.toJson()}');
print('url do boleto ${response.payment.url}');
print('link de consulta ${response.payment.links[0].href}');
paymentId = response.payment.paymentId;
status = response.payment.status;
setState(() {});
} onCieloExceptioncatch (e) {
print(e);
print(e.message);
print(e.errors[0].message);
print(e.errors[0].code);
}
...
Funções opcionais
getReturn(paymentId) - Função para consulta
enableCapture(paymentId) - Função para aprovar a compra
enableVoid(paymentId) - Função para cancelar a compra
Consulte o aplicativo de exemplo deste plugin para obter um exemplo completo. Consulte LICENÇA para obter detalhes.