Skip to content

Unofficial esewa plugin for flutter application.

License

Notifications You must be signed in to change notification settings

asisadh/esewa_pnp

 
 

Repository files navigation

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.5
  • [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.5 # 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

Platform Status
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

About

Unofficial esewa plugin for flutter application.

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Objective-C 47.3%
  • Dart 25.3%
  • Java 16.3%
  • Swift 5.9%
  • Ruby 5.2%