Flutter SDK
The deema-flutter-sdk allows you to integrate deema Pay (Buy Now Pay Later) functionality into your Flutter applications. This SDK enables users to make purchases using the BNPL payment method in a smooth and efficient way.
deema BNPL SDK for Flutter
Introduction
The deema SDK for Flutter allows you to seamlessly integrate our Buy Now, Pay Later (BNPL) payment service into your Flutter applications. The SDK simplifies initiating payment flows, managing transactions, and handling result statuses with structured responses.
Installation
Add the deema SDK to your Flutter project by including it in your pubspec.yaml
:
dependencies:
deema_sdk: ^1.0.0
Run the following command to install the package:
flutter pub get
Quick Start
Step 1: Import the SDK
import 'package:deema_sdk/deema_sdk.dart';
Step 2: Launch the SDK
Use the DeemaSdk.launch
method to initiate the payment flow:
DeemaSdk.launch(
context,
"SDK_KEY",
Environment.sandbox,
PurchaseRequest(
merchantOrderId: "1726",
amount: 100.0,
currencyCode: "KWD",
),
(result) {
if (result is Success) {
ScaffoldMessenger.of(context).showSnackBar(
SnackBar(content: Text("Payment successful!")),
);
} else if (result is Failure) {
ScaffoldMessenger.of(context).showSnackBar(
SnackBar(content: Text("Payment failed: ${result.message}")),
);
} else if (result is Canceled) {
ScaffoldMessenger.of(context).showSnackBar(
SnackBar(content: Text("Payment was canceled")),
);
} else if (result is Unknown) {
ScaffoldMessenger.of(context).showSnackBar(
SnackBar(content: Text("Unknown payment result")),
);
}
},
);
Example Integration
Here’s a complete example integrating the Deema SDK into a Flutter application:
import 'package:flutter/material.dart';
import 'package:deema_sdk/deema_sdk.dart';
void main() {
runApp(const MyApp());
}
class MyApp extends StatelessWidget {
const MyApp({Key? key}) : super(key: key);
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Deema Payment Demo',
theme: ThemeData(primarySwatch: Colors.blue),
home: const PaymentScreen(),
);
}
}
class PaymentScreen extends StatefulWidget {
const PaymentScreen({Key? key}) : super(key: key);
@override
State<PaymentScreen> createState() => _PaymentScreenState();
}
class _PaymentScreenState extends State<PaymentScreen> {
void _makePurchase(BuildContext context) {
DeemaSdk.launch(
context,
"SDK_KEY",
Environment.sandbox,
PurchaseRequest(
merchantOrderId: "1726",
amount: 100.0,
currencyCode: "KWD",
),
(result) {
if (result is Success) {
ScaffoldMessenger.of(context).showSnackBar(
SnackBar(content: Text("Payment successful!")),
);
} else if (result is Failure) {
ScaffoldMessenger.of(context).showSnackBar(
SnackBar(content: Text("Payment failed: ${result.message}")),
);
} else if (result is Canceled) {
ScaffoldMessenger.of(context).showSnackBar(
SnackBar(content: Text("Payment was canceled")),
);
} else if (result is Unknown) {
ScaffoldMessenger.of(context).showSnackBar(
SnackBar(content: Text("Unknown payment result")),
);
}
},
);
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(title: const Text("Deema Payment")),
body: Center(
child: ElevatedButton(
onPressed: () => _makePurchase(context),
child: const Text("Pay Now"),
),
),
);
}
}
API Reference
Classes
DeemaSdk
DeemaSdk
launch
: Initiates the payment flow.- Parameters:
SDK_Key
:String
(required) - The SDK key provided by Deema for authentication.environment
:Environment
(required) - The environment for the transaction (sandbox
orproduction
).context
:BuildContext
(required) - The current widget context.request
:PurchaseRequest
(required) - Details of the purchase.callback
:Function(PurchaseResult result)
(required) - Callback to handle the result of the payment.
- Parameters:
PurchaseRequest
PurchaseRequest
- Represents the payment details.
- Fields:
merchantOrderId
:String
(required) - Unique identifier for the merchant order.amount
:double
(required) - The purchase amount.currencyCode
:String
(required) - The currency code ("KWD" or "BHD").
- Fields:
Result Classes
PurchaseResult
PurchaseResult
The parent class for all result types. Subclasses include:
Success
: Indicates a successful payment.Failure
: Indicates a payment failure.- Field:
message
(String) - Describes the reason for failure.
- Field:
Canceled
: Indicates the user canceled the payment.Unknown
: Represents an unknown error or status.
Updated 4 days ago