payu_payment
Simple PayU integration for Flutter.
Usage
For now, you can use PayUWebView widget to build your PayU WebView. First you need to:
- create and configure
PayUFlutterobject - create and place
PayUOrderusing usingprepareOrdermethod - pass response from
prepareOrderit toPayUWebViewwidget.
Example:
Crating and configure PayUFlutter object
PayUFlutter payuFlutter = PayUFlutter(
clientId: 1,
clientSecret: 'SECRET',
isProduction: false,
);
Create and place PayUOrder using using prepareOrder method
PayUOrder order = PayUOrder(
posId: 398870,
description: 'ZAKUPY',
currencyCode: 'PLN',
buyer: PayUBuyer(
email: 'thatlukeurban@gmail.com',
firstName: 'null',
language: 'pl',
lastName: 'null',
phone: '555555555',
),
products: [
PayUProduct(
name: 'poo',
unitPrice: 100,
quantity: 10,
)
]);
PayUOrderResponse payUOrderResponse = await payuFlutter.prepareOrder(order);
Pass response from prepareOrder it to PayUWebView widget.
PayUWebView(
builder: (WebViewController controller, Widget child) {
return child;
},
orderResponse: payUOrderResponse,
redirectUrl: redirectUrl,
onPaymentEnd: (bool paymentSuccessful) {
// If you don't override onPaymentEnd method that Navigator pop will be done by default
Navigator.of(context).pop(paymentSuccessful);
}
)
-
builder- required - builder is public in order to accessWebViewController. This allows devs to wrapchildwith some widgets that provide features like reload, refresh go back etc. See WebViewController documentation -
orderResponse- required - PayUOrderResponse - response object from payuFlutter.prepareOrder(order); -
onPaymentEnd- optional - Function(bool) - by default it does Navigator.of(context).pop(); but you can override this behavior -
customLoadingWidget- optional - Widget - Shows when webView is loading. By default it'sCircularProgressIndicator -
redirectUrl- required - String - Redirect url is a crucial part ofpayu_paymentis setting. It needs to be the same url as in PayU shopWebsite address *:(shown on screenshot). That URL is where the PayU flow ends in the WebView. The plugin uses that to detect when user payment was successful.

See example where I implemented 2 different flows of displaying the WebView. Remember to place there your valid PayU account settings