Add this dependencies
in your app's pubspec.yaml
payhere_flutter: ^0.1.1
This plugin mimics the original payhere android sdk hence making a payment is identical to original sdk
import 'package:payhere_flutter/payhere_flutter.dart';
One-time Payment Request
InitRequest req = new InitRequest();
//Required Params
req.setMerchantId("1210XXX"); // Your Merchant PayHere ID
req.setMerchantSecret("ugknesnvn"); // Your Merchant secret (Add your app at Settings > Domains & Credentials, to get this))
req.setCurrency("LKR"); // Currency code LKR/USD/GBP/EUR/AUD
req.setAmount(1000.00); // Final Amount to be charged
req.setOrderId("230000123"); // Unique Reference ID
req.setItemsDescription("Door bell wireless"); // Item description title
req.setCustom1("This is the custom message 1");
req.setCustom2("This is the custom message 2");
req.getCustomer().setFirstName("Saman");
req.getCustomer().setLastName("Perera");
req.getCustomer().setEmail("[email protected]");
req.getCustomer().setPhone("+94771234567");
req.getCustomer().getAddress().setAddress("No.1, Galle Road");
req.getCustomer().getAddress().setCity("Colombo");
req.getCustomer().getAddress().setCountry("Sri Lanka");
//Optional Params
req.getCustomer().getDeliveryAddress().setAddress("No.2, Kandy Road");
req.getCustomer().getDeliveryAddress().setCity("Kadawatha");
req.getCustomer().getDeliveryAddress().setCountry("Sri Lanka");
req.getItems().add(new Item(null, "Door bell wireless", 1, 1000.0));
call SANDBOX
or LIVE
end points with InitRequest
RaisedButton(
onPressed: () async {
// SANDBOX
PhResponse response =
await PayhereFlutter.oneTimePaymentSandbox(request: req);
child: Text("One Time Payment SANDBOX"),
),
PhResponse
is identical to PHResponse
in Android SDK
PhResponse
type | name | description |
---|---|---|
Data |
data |
includes information about transaction |
String |
message |
brief about transaction |
int |
status |
Transaction status |
status | code |
---|---|
STATUS_SUCCESS | 1 |
ERROR_UNKNOWN | -1 |
ERROR_DATA | -2 |
ERROR_VALIDATION | -3 |
ERROR_NETWORK | -4 |
ERROR_PAYMENT | -5 |
type | name | description |
---|---|---|
int |
status |
payment status |
double |
paymentNo |
unique payment identifier |
String |
currency |
The unit of currency in which the transaction was made |
price |
price |
Amount of transaction. |
String |
sign |
transaction sign key |
String |
message |
description about transaction |
status | code |
---|---|
INIT | 0 |
PAYMENT | 1 |
SUCCESS | 2 |
FAILED | -2 |
you can find example code in here
flutter uses R8 code shrinker by default if you want to use R8 you need to add proguard-rules.pro
to your flutter app. more
-
release with R8 ( default)
i. create
proguard-rules.pro
underandroid>app
and add this-keep class lk.payhere.** { *; }
ii. under
app>build.gradle
add this
buildTypes {
release {
// TODO: Add your own signing config for the release build.
// Signing with the debug keys for now, so `flutter run --release` works.
minifyEnabled true
useProguard true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
signingConfig signingConfigs.debug
}
}
-
without code shrinking
run
flutter build apk --no-shrink
API | Android | iOS |
---|---|---|
One-time Payment | ✔️ | ❌ |
Recurring Payment | ❌ | ❌ |
Pre-approval | ❌ | ❌ |
The project is open to public contribution. Please feel very free to contribute. Experienced an issue or want to report a bug? Please, report it here. Remember to be as descriptive as possible.
-
0.0.3 Android Manifest merger failed error add Page maker rule for
AndroidManifest.xml
// add this ```
please don't forget to give a little start ⭐ from here and give a 👍 for this.