Flutter支付集成插件basispaysdk的使用

Flutter支付集成插件basispaysdk的使用

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

需求

  • iOS 11.0+
  • Xcode 11.0+
  • Swift 5.0+
  • Android最小SDK版本 - 21

首先从BasisPay获取凭证

插件仅在使用API密钥时有效。

ANDROID

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

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

步骤2: 进入您的android/app/src/main/res/values 和 android/app/src/main/res/values-night 文件夹,并在两个文件夹中创建名为colors.xml的文件。

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <color name="colorPrimary">#3F51B5</color>
    <color name="colorPrimaryDark">#303F9F</color>
    <color name="colorAccent">#FF4081</color>
</resources>

开始支付

Future<void> initPlatformState() async {
  // 支付请求字典
  Map<String, dynamic> paymentRequestDictionary = {
    "orderId": "8349574023489",
    "amount": "6000",
    "currency": "INR",
    "description": "YYYYYY",
    "name": "XXXXXXX",
    "email": "YYYYYYY",
    "phone": "ZZZZZZZZ",
    "addressLine1": "XXXXX",
    "addressLine2": "XXXXX",
    "city": "XXXXX",
    "state": "YYYYY",
    "country": "XXXXX",
    "zipCode": "YYYYY",
    "udf1": "udf1",
    "udf2": "udf2",
    "udf3": "udf3",
    "udf4": "Testing4",
    "udf5": "Testing5",
  };
  try {
    // 调用Basispaysdk的startTransaction方法
    var response = await Basispaysdk.startTransaction(
      "[API-KEY From Basispay team]", // API密钥
      "[SALT-KEY From Basispay team]", // 盐值密钥
      "[YOUR-RETURN-URL to get the response]", // 回调URL
      true, // 检查
      paymentRequestDictionary,
      false);

    // 处理响应
    response.then((value) {
      print(value);
    }).catchError((onError) {
      if (onError is PlatformException) {
        setState(() {
          print(onError.message + " \n  " + onError.details.toString());
        });
      } else {
        setState(() {
          print(onError.toString());
        });
      }
    });
  } catch (err) {
    print(err.message);
  }
}

示例代码

以下是完整的示例代码:

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

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

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

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

  Future<void> initPlatformState() async {
    // 支付请求字典
    Map<String, dynamic>? paymentRequestDictionary = {
      "orderId": "82734679243453",
      "amount": "200",
      "currency": "INR",
      "description": "YYYYYY",
      "name": "XXXXXXX",
      "email": "XXXXXX",
      "phone": "ZZZZZZZZ",
      "addressLine1": "XXXXX",
      "addressLine2": "XXXXX",
      "city": "XXXXX",
      "state": "YYYYY",
      "country": "XXXXX",
      "zipCode": "YYYYY",
      "udf1": "udf1",
      "udf2": "udf2",
      "udf3": "udf3",
      "udf4": "Testing4",
      "udf5": "Testing5",
    };

    try {
      // 调用Basispaysdk的startTransaction方法
      var response = await Basispaysdk.startTransaction(
        "[API-KEY From Basispay team]", // API密钥
        "[SALT-KEY From Basispay team]", // 盐值密钥
        "[YOUR-RETURN-URL to get the response]", // 回调URL
        true, // 检查
        paymentRequestDictionary);
      
      // 处理响应
      response.then((value) {
        print(value);
      }).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("开始网页支付"),
              )
            ],
          ),
        ),
      ),
    );
  }
}

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

1 回复

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


BasisPaySDK 是一个用于在 Flutter 应用中集成支付功能的插件。它通常用于处理移动支付、银行卡支付等场景。以下是如何在 Flutter 项目中使用 BasisPaySDK 的基本步骤。

1. 添加依赖

首先,你需要在 pubspec.yaml 文件中添加 basis_pay_sdk 插件的依赖。

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

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

2. 导入插件

在你的 Dart 文件中导入 basis_pay_sdk 插件。

import 'package:basis_pay_sdk/basis_pay_sdk.dart';

3. 初始化 SDK

在使用 BasisPaySDK 之前,通常需要先初始化 SDK。这通常需要提供一些配置信息,比如 API Key、商户 ID 等。

void initializeBasisPaySDK() async {
  try {
    await BasisPaySDK.initialize(
      apiKey: 'YOUR_API_KEY',
      merchantId: 'YOUR_MERCHANT_ID',
      environment: BasisPayEnvironment.Sandbox, // 使用沙盒环境进行测试
    );
    print('BasisPaySDK initialized successfully');
  } catch (e) {
    print('Failed to initialize BasisPaySDK: $e');
  }
}

4. 发起支付

初始化 SDK 后,你可以使用 BasisPaySDK 提供的 API 来发起支付请求。

void initiatePayment() async {
  try {
    PaymentRequest paymentRequest = PaymentRequest(
      amount: 100.0, // 支付金额
      currency: 'USD', // 货币类型
      orderId: 'ORDER12345', // 订单ID
      description: 'Payment for goods', // 支付描述
      customerEmail: 'customer@example.com', // 客户邮箱
    );

    PaymentResponse response = await BasisPaySDK.initiatePayment(paymentRequest);

    if (response.status == PaymentStatus.Success) {
      print('Payment successful: ${response.transactionId}');
    } else {
      print('Payment failed: ${response.errorMessage}');
    }
  } catch (e) {
    print('Error during payment: $e');
  }
}

5. 处理支付结果

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

6. 其他功能

BasisPaySDK 可能还提供其他功能,比如查询订单状态、退款等。你可以根据插件的文档来使用这些功能。

void checkOrderStatus(String orderId) async {
  try {
    OrderStatusResponse response = await BasisPaySDK.getOrderStatus(orderId);
    print('Order status: ${response.status}');
  } catch (e) {
    print('Error checking order status: $e');
  }
}

7. 错误处理

在使用 BasisPaySDK 的过程中,可能会遇到各种错误,比如网络错误、支付失败等。你需要确保你的应用能够妥善处理这些错误。

try {
  // 调用 BasisPaySDK 的方法
} catch (e) {
  print('An error occurred: $e');
  // 处理错误
}

8. 测试和上线

在开发过程中,建议使用 BasisPayEnvironment.Sandbox 环境进行测试。测试完成后,可以将环境切换为 BasisPayEnvironment.Production 以进行真实支付。

await BasisPaySDK.initialize(
  apiKey: 'YOUR_API_KEY',
  merchantId: 'YOUR_MERCHANT_ID',
  environment: BasisPayEnvironment.Production, // 切换到生产环境
);
回到顶部