Flutter支付集成插件basispaypgv2的使用

Flutter支付集成插件basispaypgv2的使用

Basispay PG SDK v2

Basispay Payment Gateway Flutter SDK - 0.0.1

BasisPay-Flutter-PG-SDKV2-KIT

一个用于在Flutter应用中接受在线支付的插件。

简介

本文档描述了如何集成Basispay在线支付网关的Flutter SDK。此支付网关通过减少用户操作来执行在线支付交易。它接收支付详情作为输入,并处理支付流程,最后返回支付结果给用户。用户需要手动将框架导入其项目才能使用。

要求

  • Android最小SDK版本:21
  • Android最大SDK版本:34

首先从BasisPay获取凭证

插件仅支持API密钥

ANDROID

步骤1: 进入您的应用的android文件夹并打开build.gradle文件

allprojects {
    repositories {
        ...
        maven { url 'https://jitpack.io' }
    }
}

开始支付

Future<void> initPlatformState() async {
  Map<String, dynamic> paymentRequestParams = {
    // 必填参数
    "apiKey": "YOUR_PG_API_KEY",
    "secureHash": "xxxx",
    "orderReference": "xxxx",
    "customerName": "xxxx",
    "customerEmail": "xxxx",
    "customerMobile": "xxxxxxxxxx",
    "address": "xxxx",
    "postalCode": "xxxx",
    "city": "xxxx",
    "region": "xxxx",
    "country": "xxx", // ISO 3码,例如:IND
    "returnUrl": "xxxx",
    "isPgMode": false, // 如果PG模式为LIVE,则设置为true,否则为false
    "paymentMode":"",
    "paymentMethod":"",
    // 可选参数
    "deliveryAddress": "xxxx",
    "deliveryCustomerName": "xxxx",
    "deliveryCustomerMobile": "xxxxxxxxxx",
    "deliveryPostalCode": "xxxx",
    "deliveryCity": "xxxx",
    "deliveryRegion": "xxxx",
    "deliveryCountry": "xxx", // ISO 3码,例如:IND
  };

  try {
    var response = Basispaypgv2.startTransaction(paymentRequestParams);
    response.then((value) {
      print(value);
      var referenceNo = value['referenceNo'];
      var success = value['success'];
    }).catchError((onError) {
      if (onError is PlatformException) {
        setState(() {
          print(onError.message + " \n  " + onError.details.toString());
        });
      } else {
        setState(() {
          print(onError.toString());
        });
      }
    });
  } catch (err) {
    print(err.toString());
  }
}

示例代码

import 'package:flutter/material.dart';
import 'dart:async';

import 'package:flutter/services.dart';
import 'package:basispaypgv2/basispaypgv2.dart';

void main() {
  runApp(const MyApp());
}

class MyApp extends StatefulWidget {
  const MyApp({super.key});

  [@override](/user/override)
  State<MyApp> createState() => _MyAppState();
}

class _MyAppState extends State<MyApp> {
  String _platformVersion = 'Unknown';
  final _basispaypgv2Plugin = Basispaypgv2();

  [@override](/user/override)
  void initState() {
    super.initState();
    // initPlatformState();
  }

  // 平台消息异步调用,因此我们初始化在一个异步方法中。
  Future<void> initPlatformState() async {
    Map<String, dynamic> paymentRequestParams = {
      // 必填参数
      "apiKey": "ac2d6957-f765-4b3d-99e3-b2926b1d7b3c",
      "secureHash": "61261EB0899CEBFE71583D23A4399F1685F9CDC416A338B017C09E2D37E2113752DAFCB3334C00AD90DDE55537B837C3CB47A8DB70BDC5E23E676ABBCF95DADD",
      "orderReference": "bpQGrKHvLyocqcGauJKdfA==",
      "customerName": "mathan",
      "customerEmail": "Testing223@gmail.com",
      "customerMobile": "88543221100",
      "address": "5/223 choolaimedu,chennai-01",
      "postalCode": "641017",
      "city": "chennai",
      "region": "Tamil Nadu",
      "country": "IND",
      "returnUrl": "http://157.245.105.135:9057/cinchcollect/pg/merchant",
      "isPgMode": false, // isPgMode false=TEST or true=LIVE
      "paymentMethod":"",
      "paymentMode":"",
      // 可选参数
      "deliveryAddress": "",
      "deliveryCustomerName": "",
      "deliveryCustomerMobile": "",
      "deliveryPostalCode": "",
      "deliveryCity": "",
      "deliveryRegion": "",
      "deliveryCountry": "IND",
    };

    try {
      var response = Basispaypgv2.startTransaction(paymentRequestParams);
      response.then((value) {
        print(value);
        for(var key in value.keys) {
          print(key);
        }
        var referenceNo = value['referenceNo'];
        var success = value['success'];
        print("==Ref==" + referenceNo);
        print("==Success==" + success);
      }).catchError((onError) {
        if (onError is PlatformException) {
          setState(() {
            print(onError.message! + " \n  " + onError.details.toString());
          });
        } else {
          setState(() {
            print(onError.toString());
          });
        }
      });
    } catch (err) {
      print(err.toString());
    }
  }

  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: const Text('Basispay'),
        ),
        body: Center(
          child: Column(
            children: [
              ElevatedButton(
                  onPressed: () {
                    setState(() {
                      initPlatformState();
                    });
                  },
                  child: Text("Make Payment"))
            ],
          ),
        ),
      ),
    );
  }
}

更多关于Flutter支付集成插件basispaypgv2的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter支付集成插件basispaypgv2的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


basispaypgv2 是一个 Flutter 插件,用于集成 Basis Pay 支付网关的支付功能。使用该插件,开发者可以轻松地在 Flutter 应用中实现支付功能。以下是使用 basispaypgv2 插件的基本步骤:

1. 添加依赖

首先,在 pubspec.yaml 文件中添加 basispaypgv2 插件的依赖:

dependencies:
  flutter:
    sdk: flutter
  basispaypgv2: ^1.0.0  # 使用最新版本

然后运行 flutter pub get 来获取依赖。

2. 初始化插件

在需要使用支付功能的 Dart 文件中导入插件并进行初始化:

import 'package:basispaypgv2/basispaypgv2.dart';

void initializePayment() {
  BasisPayPgv2.initialize(
    merchantId: 'YOUR_MERCHANT_ID',
    merchantKey: 'YOUR_MERCHANT_KEY',
    isTestMode: true,  // 测试模式,生产环境设置为 false
  );
}

3. 发起支付

使用 BasisPayPgv2 发起支付请求。通常需要提供订单号、金额、回调 URL 等信息:

void startPayment() async {
  try {
    var response = await BasisPayPgv2.startPayment(
      orderId: 'ORDER_ID_123',
      amount: '100.00',  // 金额
      currency: 'INR',   // 货币类型
      customerName: 'John Doe',
      customerEmail: 'john.doe@example.com',
      customerPhone: '1234567890',
      returnUrl: 'https://yourwebsite.com/return',  // 支付成功后的回调 URL
      notifyUrl: 'https://yourwebsite.com/notify',  // 支付状态通知 URL
    );

    // 处理支付响应
    if (response['status'] == 'success') {
      print('Payment successful: ${response['transactionId']}');
    } else {
      print('Payment failed: ${response['message']}');
    }
  } catch (e) {
    print('Error: $e');
  }
}

4. 处理支付回调

支付完成后,用户将被重定向到指定的 returnUrl。你可以在这个页面上处理支付结果,并根据结果更新订单状态。

5. 处理支付通知

Basis Pay 会向 notifyUrl 发送支付状态通知。你需要在服务器上处理这些通知,并更新订单状态。

6. 错误处理

在支付过程中,可能会遇到各种错误。建议在代码中加入错误处理逻辑,以便更好地处理异常情况。

7. 测试和上线

在测试环境中确保支付功能正常工作后,可以将 isTestMode 设置为 false,并部署到生产环境。

示例代码

以下是一个完整的示例代码:

import 'package:flutter/material.dart';
import 'package:basispaypgv2/basispaypgv2.dart';

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      home: PaymentScreen(),
    );
  }
}

class PaymentScreen extends StatefulWidget {
  [@override](/user/override)
  _PaymentScreenState createState() => _PaymentScreenState();
}

class _PaymentScreenState extends State<PaymentScreen> {
  [@override](/user/override)
  void initState() {
    super.initState();
    initializePayment();
  }

  void initializePayment() {
    BasisPayPgv2.initialize(
      merchantId: 'YOUR_MERCHANT_ID',
      merchantKey: 'YOUR_MERCHANT_KEY',
      isTestMode: true,
    );
  }

  void startPayment() async {
    try {
      var response = await BasisPayPgv2.startPayment(
        orderId: 'ORDER_ID_123',
        amount: '100.00',
        currency: 'INR',
        customerName: 'John Doe',
        customerEmail: 'john.doe@example.com',
        customerPhone: '1234567890',
        returnUrl: 'https://yourwebsite.com/return',
        notifyUrl: 'https://yourwebsite.com/notify',
      );

      if (response['status'] == 'success') {
        print('Payment successful: ${response['transactionId']}');
      } else {
        print('Payment failed: ${response['message']}');
      }
    } catch (e) {
      print('Error: $e');
    }
  }

  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Basis Pay Integration'),
      ),
      body: Center(
        child: ElevatedButton(
          onPressed: startPayment,
          child: Text('Pay Now'),
        ),
      ),
    );
  }
}
回到顶部