stripe_terminalx

Creator: coderz1093

Last updated:

0 purchases

TODO
Add to Cart

Description:

stripe terminalx

stripe_terminalx #

A flutter plugin to scan stripe readers and connect to the them and get the payment methods.
Installation #
Android #
No Configuration needed, workes out of the box.
iOS #
You need to provide permission request strings to your Info.plist file. A sample content can be
<key>NSLocationWhenInUseUsageDescription</key>
<string>Location access is required in order to accept payments.</string>
<key>NSBluetoothPeripheralUsageDescription</key>
<string>Bluetooth access is required in order to connect to supported bluetooth card readers.</string>
<key>NSBluetoothAlwaysUsageDescription</key>
<string>This app uses Bluetooth to connect to supported card readers.</string>
copied to clipboard
You also need to authorize backround modes authorization for bluetooth-central. Paste the following to your Info.plist file
<key>UIBackgroundModes</key>
<array>
<string>bluetooth-central</string>
</array>
copied to clipboard
Usage #

First initilize the SDK

stripeTerminal = StripeTerminal(
fetchToken: () async {
// Call your backend to get the connection token and return to this function
// Example token can be.
const token = "pst_test_XXXXXXXXXX....";

return token;
},
);
copied to clipboard

Example backend code to get the connection token written on node.js:

import Stripe from "stripe";
import express from "express"

const stripe = new Stripe("sk_test_XXXXXXXXXXXXXXXXXX", {
apiVersion: "2020-08-27"
})

const app = express();

app.get("/connectionToken", async (req, res) => {
const token = await stripe.terminal.connectionTokens.create();
res.send({
success: true,
data: token.secret
});
});

app.post("/createPaymentIntent", async (req, res) => {
const pi = await stripe.paymentIntents.create({
amount: 1000,
currency: "USD",
capture_method: "manual",
payment_method_types: ["card_present"]
})

res.send({
success: true,
paymentIntent: pi
})
})

app.listen(8000, () => {
console.log("Server started")
});
copied to clipboard

Discover the devices nearby and show it to the user

stripeTerminal
.discoverReaders(simulated: true)
.listen((List<StripeReader> readers) {
setState(() {
this.readers = readers;
});
});
copied to clipboard

Connect to a bluetooth reader

bool connected = await stripeTerminal.connectBluetoothReader(readers[0].serialNumber);
if(connected) {
print("Connected to a device");
}
copied to clipboard

Scan a card from the reader

stripeTerminal
.readReusableCardDetail()
.then((StripePaymentMethod paymentMethod) {
print("A card was read, the last four digit is ${paymentMethod.card?.last4}");
});
copied to clipboard

Scan payment method from the reader using tap, swipe, insert method

// Get this from your backend by creating a new payment intent

Future<String> createPaymentIntent() async {
Response invoice = await _dio.post("/createPaymentIntent");
return invoice.data["paymentIntent"]["client_secret"];
}

String payment_intent_client_secret = await createPaymentIntent();

stripeTerminal
.collectPaymentMethod(payment_intent_client_secret)
.then((StripePaymentIntent paymentIntent) {
print("A payment intent has captured a payment method, send this payment intent to you backend to capture the payment");
});
copied to clipboard
And you are done!!!!
Currently supported features: #

Initializing terminal SDK
Scanning the readers
Connecting to a device (Only bluetooth devices on android)
Checking connection status
Checking connected device
Read payment method from the device

Missing Features #

Create payment intent
Process payment
Capture payment

Future Plan #
Please feel free to send a PR for further feature as you need or just create an issue on the repo with the feature request.
I have no plans to maintain this package in the long future thus the package will be deprecated as soon as flutter_stripe adds support to their SDK as mentioned here
Support the creator #
Creating software for free takes time and effort thus please consider buying me a cup of coffee. This we definitely put a smile on my face and motivate me to contribute more.

❤️ Sponsor

License

For personal and professional use. You cannot resell or redistribute these repositories in their original state.

Files In This Product:

Customer Reviews

There are no reviews.