The Hubtel Flutter Checkout Package is a convenient and easy-to-use library that simplifies the process of implementing a checkout flow in your Flutter application.
The Hubtel Merchat Checkout
package is available on GitHub for Flutter apps to integrate with their apps. It'll be available
on pub.dev soon.
- Open your
pubspec.yaml
file. - Add the following lines to your dependencies section:
hubtel_merchant_checkout_sdk:
git:
url: https://github.com/hubtel/hubtel-mobile-flutter-merchant-checkout-sdk.git
ref: master
Objects needed
Properties | Explanation |
---|---|
HubtelCheckoutConfiguration |
is an object used for payment processing with Hubtel Checkout service. It enables merchants to set their identification, specify a callback URL for payment notifications, and secure transations with a merchant API key. |
merchantId (required) |
given to the merchant to use the sdk. This is one of three parameters to be passed to the configuration object. |
merchantApiKey (required) |
Base64 encoded string of the customer’s id and password. Also passed to be passed to the configuration object. |
callbackUrl (required) |
A url provided by the merchant in order to be able to listen for callbacks from the payment api to know the status of payments. Also passed to the configuration object . |
PurchaseInfo |
Information about the purchase to process. Details are given below. |
amount (required) |
The price of the item or service the customer is trying to purchase from. |
customerPhoneNumber (required) |
A required mobile number of the customer purchasing the item. |
purchaseDescription (required) |
An optional description attached to the purchase. |
ThemeConfig |
Lets you pass a primaryColor that the checkout adopts. |
- Add the package to your app as described above.
- Import the package in the screen you want to implement the checkout like so:
import 'package:hubtel_merchant_checkout_sdk/hubtel_merchant_checkout_sdk.dart';
- Create a
HubtelCheckoutConfiguration
object, like so:
final hubtelConfig = HubtelCheckoutConfiguration(
merchantApiKey: "QTN1akQ1SzpiM2IxMjA1NTEwZmI0NjYzYTdiY2ZmZmUyNmQ1YmIzZA==",
merchantID: "1122334",
callbackUrl: "www.sdfasd.com",
);
- Create a
PurchaseInfo
object, like so:
final purchaseInfo = PurchaseInfo(
amount: 0.1,
customerPhoneNumber: '0541234567',
clientReference: const Uuid().v4(),
purchaseDescription: 'Camera',
);
Note that Uuid().v4()
is agnostic of this package, it's given by the uuid package available on pub.dev
.
- You may optionally create a
ThemeConfig
object like so:
final themeConfig = ThemeConfig(primaryColor: Colors.black);
- On your pay button, for example, having all necessary configurations set, navigate to the
CheckoutScreen
like so:
final onCheckoutCompleted = Navigator.push(
context,
MaterialPageRoute(
builder: (context) {
return CheckoutScreen(
purchaseInfo: purchaseInfo,
configuration: hubtelConfig,
themeConfig: themeConfig,
);
},
),
);
if (onCheckoutCompleted is CheckoutCompletionStatus){
//Your activity after checkout Completion.
}
The UnifiedCheckoutPaymentStatus
is an enum displaying the status of payment. It contains the following cases:
userCancelledPayment
: When the user closes the checkout page without performing any transaction.paymentFailed
: When the user performs a transaction but payment fails.paymentSuccessful
: When the user finally pays successfully.unknown
: When the user cancels transaction after payment attempt without checking status.pending
: when the user performs a bank pay transaction and receipt is successfully downloaded.