fiatpe_payments_sdk 1.0.2
fiatpe_payments_sdk: ^1.0.2 copied to clipboard
The All-in-One FiatPe Payment Gateway Flutter library is a robust solution designed to simplify digital payment acceptance in your Flutter applications.
fiatpe_payments_sdk #
fiatpe_payments_sdk is a Flutter SDK that simplifies the integration of UPI payment features into your Flutter applications. Designed for flexibility and scalability, this library aims to streamline payment processes with additional features coming soon.
✨ Features #
- 🔄 UPI Payments: Seamlessly integrate UPI payments into your Flutter app.
- 🚀 Future-Ready: Support for more payment options like net banking and cards is coming soon.
🛠 Installation #
Add the following dependency to your pubspec.yaml
file:
dependencies:
fiatpe_payments_sdk: ^1.0.1
Alternatively, you can add the dependency directly to your Flutter project by running the following command in your terminal:
dart pub add fiatpe_payments_sdk
This will automatically update your pubspec.yaml file with the required dependency.
Then run:
flutter pub get
🛠 Android Configuration #
Add Internet Permission
For Android, ensure that you have the Internet permission set in your AndroidManifest.xml
file. This permission is necessary for network communications between your app and the FiatPe payment servers.
Add the following line inside the <manifest>
tag in your AndroidManifest.xml
file:
<uses-permission android:name="android.permission.INTERNET" />
This allows your application to access the Internet, which is crucial for processing payments.
🛠 iOS Configuration #
Update Info.plist
For iOS, you must configure your Info.plist
to include the URL schemes of the payment apps your application will interact with. This step is crucial to ensure your app can check if these apps are installed and facilitate the UPI payment process.
Add the following configuration to your Info.plist
:
<key>LSApplicationQueriesSchemes</key>
<array>
<string>BHIM</string>
<string>bhim</string>
<string>com.amazon.mobile.shopping</string>
<string>gpay</string>
<string>imobile</string>
<string>paytm</string>
<string>paytmmp</string>
<string>payzapp</string>
<string>phonepe</string>
</array>
This configuration allows your application to query for the installed status of popular payment apps like BHIM, Google Pay, iMobile, Paytm, and others.
📝 Usage Instructions #
1. Import the Library
Add the import statement to your Dart file:
import 'package:fiatpe_payments_sdk/fiatpe_payments_sdk.dart';
2. Initialize the SDK #
To start using fiatpe_payments_sdk, you need to initialize the SDK with your API Key and Salt Key. This should be done when your application starts.
FiatPePayments.init(
keys: const FiatPeAuthKeys(
api: "YOUR_API_KEY", // Your FiatPe API key
salt: "YOUR_SALT_KEY", // Your FiatPe Salt key
),
onFailed: (msg) {
print("Initialization failed: $msg");
},
onSuccess: (msg) {
print("Initialization succeeded: $msg");
},
);
Parameters
api
: (Required) Your FiatPe API key, provided by FiatPe.salt
: (Required) Your FiatPe Salt key, provided by FiatPe.onFailed
: (Optional) Callback function triggered when initialization fails, providing the error message as a string.onSuccess
: (Optional) Callback function triggered when initialization is successful, providing a success message as a string.
3. Start a UPI Payment #
To initiate a UPI payment, call the startPayment
method with the required parameters encapsulated in the PaymentParams
class.
FiatPePayments.startPayment(
context: context,
params: PaymentParams(
transactionId: "TRANSACTIONID", // Transaction Id
amount: 100.0, // Amount to be paid
customerName: "John Doe", // Customer's full name
customerEmail: "customer@example.com", // Customer's email
phoneNumber: "+911234567890", // Customer's phone number
callbackURL: "https://example.com/payment_callback", // Payment callback URL
udf1: "custom data 1", // Optional user-defined field
udf2: "custom data 2", // Optional user-defined field
udf3: "custom data 3", // Optional user-defined field
udf4: "custom data 4", // Optional user-defined field
udf5: "custom data 5", // Optional user-defined field
),
onPaymentResult: (result) {
switch (result) {
case PaymentSuccess():
print("Payment Successful. Transaction ID: ${result.details.transactionId}");
break;
case PaymentFailure():
print("Payment Failed. Error: ${result.details?.transactionId}");
break;
case PaymentPending():
print("Payment Pending. Transaction ID: ${result.details.transactionId}");
break;
case PaymentCancelled():
print("Payment Cancelled.");
break;
case PaymentUnknown():
print("Unknown Payment Status.");
break;
}
},
);
UPI Payments Demo #
📄 PaymentParams Class #
The PaymentParams
class encapsulates the details required to process a payment. Below is a breakdown of its fields:
Field | Type | Required | Description |
---|---|---|---|
amount | double | ✅ Yes | The payment amount. |
customerName | String | ✅ Yes | Full name of the customer. |
customerEmail | String | ✅ Yes | Email address of the customer. |
phoneNumber | String | ✅ Yes | Phone number of the customer. |
callbackURL | String | ✅ Yes | URL to which the payment result is sent. |
udf1 | String? | ❌ No | Optional user-defined field for custom data e.g. Order Id, Address, Invoice ID, Internal Transaction ID or any other custom field. |
udf2 | String? | ❌ No | Optional user-defined field for custom data e.g. Order Id, Address, Invoice ID, Internal Transaction ID or any other custom field. |
udf3 | String? | ❌ No | Optional user-defined field for custom data e.g. Order Id, Address, Invoice ID, Internal Transaction ID or any other custom field. |
udf4 | String? | ❌ No | Optional user-defined field for custom data e.g. Order Id, Address, Invoice ID, Internal Transaction ID or any other custom field. |
udf5 | String? | ❌ No | Optional user-defined field for custom data e.g. Order Id, Address, Invoice ID, Internal Transaction ID or any other custom field. |
📄 PaymentResult Class #
The PaymentResult
class represents the possible outcomes of a payment process. It uses a sealed class structure to handle different results like success, failure, pending, cancellation, and unknown status.
Variants #
Variant | Field | Type | Required | Description |
---|---|---|---|---|
PaymentSuccess | details | TransactionDetails | ✅ Yes | Detailed information about the successful transaction. |
PaymentFailure | errorCode | String | ✅ Yes | Error code associated with the payment failure. NOT_INITIALIZED / PAYMENT_FAILED |
errorMessage | String | ✅ Yes | Description of the error. | |
details | TransactionDetails? | ❌ No | Additional transaction details if available. | |
PaymentPending | details | TransactionDetails | ✅ Yes | Detailed information about the pending transaction. |
PaymentCancelled | details | TransactionDetails | ✅ Yes | Detailed information about the cancelled transaction. |
reason | String? | ❌ No | Optional reason for cancellation. | |
PaymentUnknown | rawResponse | String | ✅ Yes | Raw response for debugging unknown or unexpected results. |
📄 TransactionDetails Class #
The TransactionDetails
class provides detailed information about a transaction during the payment process.
Field | Type | Required | Description |
---|---|---|---|
id | int | ✅ Yes | Unique identifier for the transaction. |
paymentMode | String? | ❌ No | Mode of payment used (e.g., UPI, card, net banking). |
transactionId | String | ✅ Yes | Unique identifier for the transaction. |
transactionRefId | dynamic | ❌ No | Reference ID used internally. |
rrnNo | dynamic | ❌ No | Retrieval reference number, if applicable. |
status | String | ✅ Yes | Current status of the transaction (e.g., success, failure). |
amount | int | ✅ Yes | The payment amount. |
udf1 | String? | ❌ No | Optional user-defined field for custom data e.g. Order Id, Address, Invoice ID, Internal Transaction ID or any other custom field. |
udf2 | String? | ❌ No | Optional user-defined field for custom data e.g. Order Id, Address, Invoice ID, Internal Transaction ID or any other custom field. |
udf3 | String? | ❌ No | Optional user-defined field for custom data e.g. Order Id, Address, Invoice ID, Internal Transaction ID or any other custom field. |
udf4 | String? | ❌ No | Optional user-defined field for custom data e.g. Order Id, Address, Invoice ID, Internal Transaction ID or any other custom field. |
udf5 | String? | ❌ No | Optional user-defined field for custom data e.g. Order Id, Address, Invoice ID, Internal Transaction ID or any other custom field. |
txnDateTime | DateTime | ✅ Yes | Date and time of the transaction. |
message | String | ✅ Yes | Additional information or messages about the transaction. |
Notes on Required Fields: #
id
: Ensures every transaction is uniquely identifiable.transactionId
: Necessary for referencing the specific transaction.status
: Vital for determining the outcome of the transaction.amount
: Specifies the monetary value involved in the transaction.txnDateTime
: Provides the timestamp for transaction logging and auditing.message
: Offers additional context or feedback regarding the transaction.
📦 Upcoming Features #
- 💳 Card Payments: Support for credit and debit card transactions.
- 💼 Net Banking: Simplified integration with major banks.
🛡 License #
This project is licensed under the MIT License. See the LICENSE file for details.
🛠 Support #
For issues or feature requests, please raise an issue on the GitHub Repository.
📫 Connect with Us #
- Website: https://fiatpe.com
- Email: support@fiatpayments.com