flutter_midtrans_cc 1.0.4 copy "flutter_midtrans_cc: ^1.0.4" to clipboard
flutter_midtrans_cc: ^1.0.4 copied to clipboard

Midtrans Credit Card handler for Flutter, this packages have no affiliates with midtrans.

example/lib/main.dart

import 'dart:convert';

import 'package:flutter/material.dart';
import 'package:flutter_midtrans_cc/flutter_midtrans_cc.dart';
import 'SuccessPage.dart';

void main() => runApp(MyApp());

class MyApp extends StatelessWidget {
  // This widget is the root of your application.
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Midtrans CC',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: FlutterMidtransCCExample(),
    );
  }
}

class FlutterMidtransCCExample extends StatefulWidget {
  @override
  _FlutterMidtransCCExampleState createState() =>
      _FlutterMidtransCCExampleState();
}

class _FlutterMidtransCCExampleState extends State<FlutterMidtransCCExample> {
  TextEditingController ccNumberController;
  TextEditingController expiryDateController;
  TextEditingController expiryYearController;
  TextEditingController cvvController;
  FlutterMidtransCC midtransCC;

  List<Map> item_details = [
    {'id': 'item1', 'price': 15000, 'quantity': 1, 'name': 'roti bakar'}
  ];

  Map customer_details = {
    'first_name': 'John',
    'last_name': 'Doe',
    'email': 'johndoe@example.com',
    'phone': '08881112233344'
  };

  @override
  void initState() {
    midtransCC = FlutterMidtransCC('midtrans_production_url',
        'midtrans_staging_url', 'server_key', 'client_key',
        isProduction: false);
    super.initState();
  }

  @override
  Widget build(BuildContext context) {
    return Container(
      padding: EdgeInsets.symmetric(horizontal: 13, vertical: 13),
      child: ListView(
        children: <Widget>[
          TextFormField(
            controller: ccNumberController,
            autocorrect: false,
            autofocus: false,
            keyboardType: TextInputType.number,
            decoration: InputDecoration(
                hintText: 'credit card number', labelText: 'cc number'),
          ),
          TextFormField(
            controller: expiryDateController,
            autocorrect: false,
            autofocus: false,
            keyboardType: TextInputType.number,
            decoration:
                InputDecoration(hintText: 'expiry date', labelText: 'exp date'),
          ),
          TextFormField(
            controller: expiryYearController,
            autocorrect: false,
            autofocus: false,
            keyboardType: TextInputType.number,
            decoration:
                InputDecoration(hintText: 'expiry year', labelText: 'exp year'),
          ),
          TextFormField(
            controller: cvvController,
            autocorrect: false,
            autofocus: false,
            keyboardType: TextInputType.number,
            decoration: InputDecoration(hintText: 'cvv', labelText: 'cvv'),
          ),
          RaisedButton(
            child: Text(
              'Submit',
              style: TextStyle(color: Colors.white),
            ),
            color: Colors.blue,
            onPressed: () {
              midtransCC
                  .getCreditCardToken(
                      ccNumberController.text,
                      expiryDateController.text,
                      expiryYearController.text,
                      cvvController.text)
                  .then((response) {
                print(response.statusCode);
                print(response.body);

                var extractedData = json.decode(response.body);

                if (response.statusCode == 200) {
                  if (extractedData['status_code'] == '200') {
                    midtransCC
                        .midtransCharge(extractedData['token_id'], '0x224s',
                            '15000', item_details, customer_details)
                        .then((response) {
                      var extractedData = json.decode(response.body);
                      print(response.statusCode);

                      if (response.statusCode == 201 ||
                          response.statusCode == 200) {
                        print(response.body);
                        if (extractedData['status_code'] == "201") {
                          Navigator.push(
                            context,
                            MaterialPageRoute(
                              builder: (context) => midtransCC.webview3DS(
                                  transactionId:
                                      extractedData['transaction_id'],
                                  url: extractedData['redirect_url'],
                                  onClosePressed: () {
                                    Navigator.pop(context);
                                  },
                                  onCompleteRedirect: () {
                                    Navigator.pushReplacement(
                                      context,
                                      MaterialPageRoute(
                                        builder: (context) => SuccessPage(),
                                      ),
                                    );
                                  }),
                            ),
                          ).then((result) {
                            print(result);
                          });
                        }
                      } else {
                        print(response.body);
                      }
                    });
                  } else {
                    for (int i = 0;
                        i < extractedData['validation_messages'].length;
                        i++) {
                      var err = extractedData['validation_messages'].toString();

                      print(err);
                    }
                  }
                }
              });
            },
          )
        ],
      ),
    );
  }
}
1
likes
40
pub points
0%
popularity

Publisher

unverified uploader

Midtrans Credit Card handler for Flutter, this packages have no affiliates with midtrans.

Repository (GitHub)
View/report issues

License

MIT (LICENSE)

Dependencies

flutter, http, webview_flutter

More

Packages that depend on flutter_midtrans_cc