upi_india 1.1.1 upi_india: ^1.1.1 copied to clipboard
A flutter plugin to do UPI transaction through different apps in Android.
UPI India (for Android only) #
This plugin is used to integrate UPI payment in your Android app.
Apps supported by this plugin are:
- PayTM
- Google Pay
- BHIM
- PhonePe
- Mi Pay
- Amozon Pay
- Truecaller
- My Airtel
In response you will receive:
- Transaction ID
- Response Code
- Approval Reference Number
- Transaction Reference ID
- Status
You may face the following errors which you need to handle:
- APP_NOT_INSTALLED
- INVALID_PARAMETERS
- NULL_RESPONSE
- USER_CANCELLED
Status of payment could be either of the following:
- SUCCESS
- SUBMITTED
- FAILURE
To know about how to use this plugin take a look at the following example.
class HomePage extends StatefulWidget {
@override
_HomePageState createState() => _HomePageState();
}
class _HomePageState extends State<HomePage> {
Future _transaction;
Future<String> initiateTransaction(String app) async {
UpiIndia upi = new UpiIndia(
app: app,
receiverUpiId: 'tester@test',
receiverName: 'Tester',
transactionRefId: 'TestingId',
transactionNote: 'Not actual. Just an example.',
amount: 100.00,
);
String response = await upi.startTransaction();
return response;
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('UPI'),
),
body: Column(
children: <Widget>[
Expanded(
flex: 1,
child: Container(
alignment: Alignment.center,
child: RaisedButton(
child: Text('PhonePe'),
onPressed: () {
_transaction = initiateTransaction(UpiIndiaApps.PhonePe);
setState(() {});
}),
),
),
Expanded(
flex: 2,
child: FutureBuilder(
future: _transaction,
builder: (BuildContext context, AsyncSnapshot snapshot) {
if (snapshot.connectionState == ConnectionState.waiting ||
snapshot.data == null)
return Text(' ');
else {
switch (snapshot.data.toString()) {
case UpiIndiaResponseError.APP_NOT_INSTALLED:
return Text(
'App not installed.',
);
break;
case UpiIndiaResponseError.INVALID_PARAMETERS:
return Text(
'Requested payment is invalid.',
);
break;
case UpiIndiaResponseError.USER_CANCELLED:
return Text(
'It seems like you cancelled the transaction.',
);
break;
case UpiIndiaResponseError.NULL_RESPONSE:
return Text(
'No data received',
);
break;
default:
UpiIndiaResponse _upiResponse;
_upiResponse = UpiIndiaResponse(snapshot.data);
String txnId = _upiResponse.transactionId;
String resCode = _upiResponse.responseCode;
String txnRef = _upiResponse.transactionRefId;
String status = _upiResponse.status;
String approvalRef = _upiResponse.approvalRefNo;
return Column(
mainAxisAlignment: MainAxisAlignment.spaceEvenly,
children: <Widget>[
Text('Transaction Id: $txnId'),
Text('Response Code: $resCode'),
Text('Reference Id: $txnRef'),
Text('Status: $status'),
Text('Approval No: $approvalRef'),
],
);
}
}
},
),
)
],
),
);
}
}