Flutter支付集成插件tiptoppay_sdk的使用

Flutter支付集成插件tiptoppay_sdk的使用

支持的功能

  • ✅ 检查卡号的有效性。
  • ✅ 生成卡加密数据包。
  • ✅ 显示3DS对话框。

开始使用

初始化Android环境

如果要在Android上显示3DS对话框,确保MainActivity实现FlutterFragmentActivity而不是FlutterActivity

import io.flutter.embedding.android.FlutterFragmentActivity

class MainActivity: FlutterFragmentActivity() {}

使用方法

检查卡号有效性

bool isValid = await TipTopPaySdk.isValidNumber(cardNumber);

检查卡有效期

bool isValid = await TipTopPaySdk.isValidExpireDate(cardNumber); // MM/yy

生成卡加密数据包

你需要从个人账户获取publicId,并且需要提供apiUrl(例如:https://api.tiptoppay.kz/)。

final cryptogram = await TipTopPaySdk.createHexPacketFromData(
  event.cardNumber,
  event.expiryDate,
  event.cvcCode,
  Constants.MERCHANT_PUBLIC_ID,
  Constants.API_URL 
);

显示3DS表单并获取3DS验证结果

final result = await TipTopPaySdk.show3ds(
  acsUrl,
  transactionId,
  paReq,
);

Apple Pay

创建TipTopPayApplePay实例

final applePay = TipTopPayApplePay();

检查Apple Pay是否可用

final isApplePayAvailable = await applePay.isApplePayAvailable();

请求支付

final paymentToken = await applePay.requestApplePayPayment(
    merchantId: 'merchant.com.YOURDOMAIN',
    currencyCode: 'KZT',
    countryCode: 'KAZ',
    products: [
        {"name": "Red apple", "price": "170"},
        {"name": "Mango", "price": "250.50"},
        {"name": "Delivery", "price": "100"},
        {"name": "Discount", "price": "-89.90"},
        {"name": "Total", "price": "430.60"},
    ],
);

现在你可以使用paymentToken通过加密数据进行支付。

Google Pay

创建TipTopPayGooglePay实例

在构造函数中传入Google Pay环境(测试或生产)。

final googlePay = TipTopPayGooglePay(GooglePayEnvironment.production);

检查Google Pay是否可用

final isGooglePayAvailable = await googlePay.isGooglePayAvailable();

请求支付

final result = await googlePay.requestGooglePayPayment(
    price: '123.45',
    currencyCode: 'KZT',
    countryCode: 'KAZ',
    merchantName: 'Example Merchant',
    publicId: 'test_api_00000000000000000000002',
);

if (result != null) {
    if (result.isSuccess) {
      final paymentToken = result.token;
    }
}

现在你可以使用paymentToken通过加密数据进行支付。


示例代码

example/lib/main.dart

import 'package:tiptoppay_sdk_example/screens/checkout_screen.dart';
import 'package:flutter/material.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();
  }

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

  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      debugShowCheckedModeBanner: false,
      home: CheckoutScreen(),
    );
  }
}

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

1 回复

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


tiptoppay_sdk 是一个用于 Flutter 的支付集成插件,允许开发者在 Flutter 应用中集成 Tiptop 支付功能。以下是如何在 Flutter 项目中使用 tiptoppay_sdk 插件的详细步骤:

1. 添加依赖

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

dependencies:
  flutter:
    sdk: flutter
  tiptoppay_sdk: ^1.0.0  # 请根据实际情况使用最新版本

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

2. 初始化 SDK

在你的 Flutter 应用中,首先需要初始化 tiptoppay_sdk。通常你可以在 main.dart 或某个初始化函数中进行初始化。

import 'package:tiptoppay_sdk/tiptoppay_sdk.dart';

void main() async {
  WidgetsFlutterBinding.ensureInitialized();
  
  // 初始化 TiptopPay SDK
  TiptopPay.initialize(
    apiKey: 'YOUR_API_KEY',  // 替换为你的 API Key
    environment: Environment.sandbox,  // 或者 Environment.production
  );
  
  runApp(MyApp());
}

3. 创建支付订单

在需要发起支付的地方,你可以创建一个支付订单并调用支付方法。

void initiatePayment() async {
  try {
    // 创建支付订单
    var paymentResponse = await TiptopPay.createPaymentOrder(
      amount: 100,  // 支付金额
      currency: 'USD',  // 货币类型
      orderId: 'ORDER_123',  // 你的订单ID
      description: 'Payment for order #123',  // 订单描述
    );

    // 处理支付响应
    if (paymentResponse.status == 'success') {
      // 支付成功
      print('Payment successful: ${paymentResponse.transactionId}');
    } else {
      // 支付失败
      print('Payment failed: ${paymentResponse.errorMessage}');
    }
  } catch (e) {
    // 处理异常
    print('Error during payment: $e');
  }
}

4. 处理支付回调

在某些情况下,你可能需要处理支付回调,例如支付成功或失败后的操作。你可以通过监听支付状态来实现这一点。

void handlePaymentCallback() {
  TiptopPay.onPaymentStatus.listen((status) {
    if (status == 'success') {
      // 支付成功
      print('Payment successful');
    } else if (status == 'failed') {
      // 支付失败
      print('Payment failed');
    }
  });
}

5. 处理支付结果

在支付完成后,你可能需要根据支付结果更新订单状态或显示相应的提示信息。

void checkPaymentStatus() async {
  try {
    var status = await TiptopPay.checkPaymentStatus(orderId: 'ORDER_123');
    
    if (status == 'success') {
      // 支付成功
      print('Payment was successful');
    } else if (status == 'pending') {
      // 支付待处理
      print('Payment is pending');
    } else if (status == 'failed') {
      // 支付失败
      print('Payment failed');
    }
  } catch (e) {
    // 处理异常
    print('Error checking payment status: $e');
  }
}
回到顶部