Flutter支付集成插件basispaysdkv2的使用

Flutter支付集成插件basispaysdkv2的使用

Baisipay-Flutter-PG-SDKV2-KIT

这是一个用于在Flutter应用中使用BasisPay支付网关插件以接受在线支付的库。

简介

本文件描述了集成BasisPay在线支付网关Flutter SDK套件的步骤。该支付网关通过减少用户操作来执行在线支付交易。它接收支付详情作为输入,并处理支付流程,最终将支付响应返回给用户。用户必须手动将框架导入其项目中才能使用。

要求

  • Android最小SDK版本:21

首先从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(测试模式)
    // 可选参数
    "deliveryAddress": "xxxx",
    "deliveryCustomerName": "xxxx",
    "deliveryCustomerMobile": "xxxxxxxxxx",
    "deliveryPostalCode": "xxxx",
    "deliveryCity": "xxxx",
    "deliveryRegion": "xxxx",
    "deliveryCountry": "xxx", // ISO 3码,例如:IND
  };

  try {
    var response = Basispaysdkv2.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:basispaysdkv2/basispaysdkv2.dart';

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

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

class _MyAppState extends State<MyApp> {
  String _platformVersion = 'Unknown';

  [@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=测试模式或 true=生产模式
      // 可选参数
      "deliveryAddress": "",
      "deliveryCustomerName": "",
      "deliveryCustomerMobile": "",
      "deliveryPostalCode": "",
      "deliveryCity": "",
      "deliveryRegion": "",
      "deliveryCountry": "IND",
    };

    try {
      var response = Basispaysdkv2.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('BasispaySdkv2'),
        ),
        body: Center(
          child: Column(
            children: [
              ElevatedButton(
                onPressed: () {
                  setState(() {
                    initPlatformState();
                  });
                },
                child: Text("Make Payment")
              )
            ],
          ),
        ),
      ),
    );
  }
}

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

1 回复

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


basispaysdkv2 是一个用于 Flutter 的支付集成插件,通常用于与 Basis Pay 支付系统进行集成。以下是如何在 Flutter 项目中使用 basispaysdkv2 插件的步骤:

1. 添加依赖

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

dependencies:
  flutter:
    sdk: flutter
  basispaysdkv2: ^1.0.0  # 请使用插件的最新版本

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

2. 导入插件

在你的 Dart 文件中导入 basispaysdkv2 插件:

import 'package:basispaysdkv2/basispaysdkv2.dart';

3. 初始化支付 SDK

在使用支付功能之前,通常需要初始化 SDK。你可以在 initStatemain 函数中进行初始化:

class PaymentPage extends StatefulWidget {
  @override
  _PaymentPageState createState() => _PaymentPageState();
}

class _PaymentPageState extends State<PaymentPage> {
  @override
  void initState() {
    super.initState();
    BasisPaySdkV2.initialize(
      merchantId: "YOUR_MERCHANT_ID",
      secretKey: "YOUR_SECRET_KEY",
      environment: BasisPayEnvironment.SANDBOX, // 或 BasisPayEnvironment.PRODUCTION
    );
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Payment'),
      ),
      body: Center(
        child: ElevatedButton(
          onPressed: () {
            // 发起支付
            _startPayment();
          },
          child: Text('Pay Now'),
        ),
      ),
    );
  }
}

4. 发起支付

使用 BasisPaySdkV2 提供的 API 来发起支付请求。通常需要提供订单号、金额、商品描述等信息:

void _startPayment() async {
  try {
    final response = await BasisPaySdkV2.startPayment(
      orderId: "ORDER_12345",
      amount: 100.0, // 金额
      currency: "USD", // 货币
      productName: "Test Product", // 商品名称
      productDescription: "This is a test product", // 商品描述
      customerEmail: "customer@example.com", // 客户邮箱
      customerPhone: "1234567890", // 客户电话
    );

    if (response.status == BasisPayStatus.SUCCESS) {
      // 支付成功
      print("Payment Success: ${response.transactionId}");
    } else {
      // 支付失败
      print("Payment Failed: ${response.message}");
    }
  } catch (e) {
    // 处理异常
    print("Error: $e");
  }
}

5. 处理支付结果

支付完成后,SDK 会返回一个 BasisPayResponse 对象,你可以根据 response.status 来判断支付是否成功,并处理相应的逻辑。

6. 监听支付状态(可选)

如果你需要监听支付过程中的状态变化,可以使用 BasisPaySdkV2 提供的回调方法:

BasisPaySdkV2.setPaymentListener((BasisPayResponse response) {
  if (response.status == BasisPayStatus.SUCCESS) {
    // 支付成功
  } else if (response.status == BasisPayStatus.FAILED) {
    // 支付失败
  } else if (response.status == BasisPayStatus.CANCELLED) {
    // 支付取消
  }
});
回到顶部