esewa_pnp 1.0.7
esewa_pnp: ^1.0.7 copied to clipboard

Integrate native eSewa payment method in your flutter application with ease.

esewa_pnp #

Starware pub package

esewa_pnp is flutter plugin that let's developer to integrate native eSewa payment method into their flutter application with just few lines of code.

How to install #

  • Depend on it

    dependencies:
      esewa_pnp: ^1.0.7
    
  • [Android] Add following attribute inside your AndroidMainfest.xml

     <application
        ...
        android:theme="@style/Theme.AppCompat.Light.NoActionBar"
        ...>
    ...
    </application>
    
    
  • [iOS] esewa_pnp (version ^1.0.0) iOS can not be tested on simulator. For that you will need to depend on plugin from plugin's GitHub repository "dev" branch.

    dependencies:
      # esewa_pnp: ^1.0.7 # Use it on production app or while testing esewa_pnp on real physical iOS device.
      esewa_pnp:
          git:
              url: git://github.com/ayyshim/esewa_pnp.git
              ref: dev
    

Usage #

  1. Create a ESewaConfiguration object. Start with test environment. When application is ready, you can switch it to live (ENVIRONMENT_LIVE)
...

ESewaConfiguration _configuration = ESewaConfiguration(
    clientID: "<Client-ID>",
    secretKey: "<Secret-Key>",
    environment: ESewaConfiguration.ENVIRONMENT_TEST //ENVIRONMENT_LIVE
);
...

clientID and secretKey values are provided by eSewa to its merchant/client and is unique for each. For development phase, you can use the following credentials:

clientID: "JB0BBQ4aD0UqIThFJwAKBgAXEUkEGQUBBAwdOgABHD4DChwUAB0R"

secretKey: "BhwIWQQADhIYSxILExMcAgFXFhcOBwAKBgAXEQ=="

  1. Create ESewaPnp object and pass configuration.
...
ESewaPnp _eSewaPnp = ESewaPnp(configuration: _configuration);
  1. Finally create the payment object
...
ESewaPayment _payment = ESewaPayment(
    amount: <ANY_DOUBLE_VALUE>,
    productName: "<Product-Name>",
    productID: "<Unique-Product-ID>",
    callBackURL: "<Call-Back-URL>"
);
...
  1. Now call initPayment method.
...
final _res = await _eSewaPnp.initPayment(payment: _payment);
...
  1. Determine application behavior according to the response. Wrap the .initPayment method inside try-catch block.
...
try {
	final _res = await _eSewaPnp.initPayment(payment: _payment);
	// Handle success
} on ESewaPaymentException catch(e) {
	// Handle error
}
...

ESewaPaymentException #

ESewaPaymentException class is thrown when payment process fails.

  • .message [String] : returns the error message

###

ESewaResult #

ESewaResult is returned when payment process successful.

  • .message [String] : returns readable success message
  • .productId [String] : returns product id of the product customer paid for
  • .productName [String] : returns product name of the product customer paid for
  • .totalAmount [String] : returns total amount customer paid
  • .date [String] : returns the date of transaction
  • .status [String] : returns the transaction status
  • .referenceId [String] : returns the transaction reference id

🆕 ESewaPaymentButton #

ESewaPaymentButton is a customizable button widget. It takes ESewaPnp, 6 required named parameters and 8 optional parameters.

To use this button you must download assets and paste it inside your assets folder of your project. Add following line inside your pubspec.yaml file too.

  ...
  flutter:
    assets:
      - assets/esewa/
  ...

Example #1 (Default):

  ...
  ESewaPaymentButton(
    _esewaPnp,
    amount: 800.0,
    callBackURL: "https://example.com",
    productId: "abc123",
    productName: "ESewa Pnp Example",
    onSuccess: (ESewaResult result) {
      // Do something with Result
    },
    onFailure: (ESewaPaymentException e) {
      // Do something with Error
    },
  ),
  ...

Example #2 (White background):

Changing button color will also result to dyanmically change in label color and esewa logo varient (dark/light).

  ...
  ESewaPaymentButton(
    _esewaPnp,
    amount: 800.0,
    callBackURL: "https://example.com",
    productId: "abc123",
    productName: "ESewa Pnp Example",
    onSuccess: (ESewaResult result) {
      // Do something with Result
    },
    onFailure: (ESewaPaymentException e) {
      // Do something with Error
    },
    color: Color(0xFFFFFFF), // White background
  ),
  ..

Example #3 (with labelBuilder):

  ...
  ESewaPaymentButton(
    _esewaPnp,
    amount: 800.0,
    callBackURL: "https://example.com",
    productId: "abc123",
    productName: "ESewa Pnp Example",
    onSuccess: (ESewaResult result) {
      // Do something with Result
    },
    onFailure: (ESewaPaymentException e) {
      // Do something with Error
    },
    color: Color(0xFF60BB47), // Green background
    labelBuilder: (int amount, Widget esewaLogo) {
      return Text("Pay Rs.$amount");
    }
  ),
  ..

Output: Screenshot

Platform Support #

PlatformStatus
Android
iOS

👨‍🦱 Author #

Ashim Upadhaya

Checkout example implementation : EsewaPnp Example

🌟 Starware #

esewa_pnp is Starware.
This means you're free to use the project, as long as you star its GitHub repository.

Special thanks to contributors #

25
likes
120
pub points
79%
popularity

Publisher

uashim.com.np

Integrate native eSewa payment method in your flutter application with ease.

Homepage
Repository (GitHub)
View/report issues

Documentation

API reference

License

MIT (LICENSE)

Dependencies

flutter

More

Packages that depend on esewa_pnp