Flutter支付功能插件pay_hyj的使用

Flutter支付功能插件pay_hyj的使用

相关文档

  • 蚂蚁金服开放平台
  • 支付宝支付
  • 支付宝登录
  • 应用签名工具

开始使用

Android

# 不需要做任何额外接入工作
# 混淆已打入 Library,随 Library 引用,自动添加到 apk 打包混淆

iOS

# 不需要做任何额外接入工作
# 配置已集成到脚本里

UTDID冲突的问题解决方案

alipay_kit:
  ios: noutdid # 默认 utdid

安装(仅iOS)

# step.1 安装必要依赖
sudo gem install plist
# step.2 切换工作目录,插件里为 example/ios/,普通项目为 ios/
cd example/ios/
# step.3 执行脚本
pod install

示例

示例

示例代码

import 'dart:async';
import 'dart:convert';

import 'package:alipay_kit/alipay_kit.dart';
import 'package:alipay_kit_example/unsafe_alipay_kit.dart';
import 'package:flutter/material.dart';

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

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

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

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

  [@override](/user/override)
  State<StatefulWidget> createState() {
    return _HomeState();
  }
}

/// pkcs1 -> '-----BEGIN RSA PRIVATE KEY-----\n${支付宝RSA签名工具生产的私钥}\n-----END RSA PRIVATE KEY-----'
/// pkcs8 -> '-----BEGIN PRIVATE KEY-----\n${支付宝RSA签名工具生产的私钥}\n-----END PRIVATE KEY-----'
class _HomeState extends State<Home> {
  static const bool _ALIPAY_USE_RSA2 = true;
  static const String _ALIPAY_APPID = 'your alipay appId'; // 支付/登录
  static const String _ALIPAY_PID = 'your alipay pid'; // 登录
  static const String _ALIPAY_TARGETID = 'your alipay targetId'; // 登录
  static const String _ALIPAY_PRIVATEKEY =
      'your alipay rsa private key(pkcs1/pkcs8)'; // 支付/登录

  late final StreamSubscription<AlipayResp> _paySubs;
  late final StreamSubscription<AlipayResp> _authSubs;

  [@override](/user/override)
  void initState() {
    super.initState();
    _paySubs = AlipayKitPlatform.instance.payResp().listen(_listenPay);
    _authSubs = AlipayKitPlatform.instance.authResp().listen(_listenAuth);
  }

  void _listenPay(AlipayResp resp) {
    final String content = 'pay: ${resp.resultStatus} - ${resp.result}';
    _showTips('支付', content);
  }

  void _listenAuth(AlipayResp resp) {
    final String content = 'pay: ${resp.resultStatus} - ${resp.result}';
    _showTips('授权登录', content);
  }

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

  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Alipay Kit Demo'),
      ),
      body: ListView(
        children: <Widget>[
          ListTile(
            title: Text('环境检查'),
            onTap: () async {
              final String content =
                  'alipay: ${await AlipayKitPlatform.instance.isInstalled()}';
              _showTips('环境检查', content);
            },
          ),
          ListTile(
            title: Text('支付'),
            onTap: () {
              final Map<String, dynamic> bizContent = <String, dynamic>{
                'timeout_express': '30m',
                'product_code': 'QUICK_MSECURITY_PAY',
                'total_amount': '0.01',
                'subject': '1',
                'body': '我是测试数据',
                'out_trade_no': '123456789',
              };
              final Map<String, dynamic> orderInfo = <String, dynamic>{
                'app_id': _ALIPAY_APPID,
                'biz_content': json.encode(bizContent),
                'charset': 'utf-8',
                'method': 'alipay.trade.app.pay',
                'timestamp': '2016-07-29 16:55:53',
                'version': '1.0',
              };
              AlipayKitPlatform.instance.unsafePay(
                orderInfo: orderInfo,
                signType: _ALIPAY_USE_RSA2
                    ? UnsafeAlipayKitPlatform.SIGNTYPE_RSA2
                    : UnsafeAlipayKitPlatform.SIGNTYPE_RSA,
                privateKey: _ALIPAY_PRIVATEKEY,
              );
            },
          ),
          ListTile(
            title: Text('授权'),
            onTap: () {
              AlipayKitPlatform.instance.unsafeAuth(
                appId: _ALIPAY_APPID,
                pid: _ALIPAY_PID,
                targetId: _ALIPAY_TARGETID,
                signType: _ALIPAY_USE_RSA2
                    ? UnsafeAlipayKitPlatform.SIGNTYPE_RSA2
                    : UnsafeAlipayKitPlatform.SIGNTYPE_RSA,
                privateKey: _ALIPAY_PRIVATEKEY,
              );
            },
          ),
        ],
      ),
    );
  }

  void _showTips(String title, String content) {
    showDialog<void>(
      context: context,
      builder: (BuildContext context) {
        return AlertDialog(
          title: Text(title),
          content: Text(content),
        );
      },
    );
  }
}

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

1 回复

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


pay_hyj 是一个用于 Flutter 应用的支付插件,支持多种支付方式,如支付宝、微信支付等。使用该插件可以方便地在 Flutter 应用中集成支付功能。以下是使用 pay_hyj 插件的基本步骤。

1. 添加依赖

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

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

然后运行 flutter pub get 来安装依赖。

2. 配置支付平台

根据你使用的支付平台(如支付宝、微信支付等),你可能需要在项目中添加相应的配置。

Android 配置

android/app/build.gradle 文件中,确保已经添加了必要的依赖和配置。例如,对于微信支付,你可能需要添加以下内容:

android {
    ...
    defaultConfig {
        ...
        manifestPlaceholders = [
            WX_APP_ID: "你的微信AppID"
        ]
    }
}

iOS 配置

ios/Runner/Info.plist 文件中,添加微信支付的配置:

<key>CFBundleURLTypes</key>
<array>
    <dict>
        <key>CFBundleTypeRole</key>
        <string>Editor</string>
        <key>CFBundleURLName</key>
        <string>weixin</string>
        <key>CFBundleURLSchemes</key>
        <array>
            <string>你的微信AppID</string>
        </array>
    </dict>
</array>

3. 初始化支付插件

在你的 Dart 代码中,初始化 pay_hyj 插件:

import 'package:pay_hyj/pay_hyj.dart';

void main() {
  PayHyj.initialize(
    wxAppId: "你的微信AppID",
    aliAppId: "你的支付宝AppID",
  );
  runApp(MyApp());
}

4. 发起支付请求

根据你选择的支付方式,发起支付请求。例如,使用微信支付:

void payWithWeChat() async {
  try {
    final result = await PayHyj.payWithWeChat(
      appId: "你的微信AppID",
      partnerId: "商户号",
      prepayId: "预支付交易会话ID",
      packageValue: "扩展字段",
      nonceStr: "随机字符串",
      timeStamp: "时间戳",
      sign: "签名",
    );

    if (result == PayResult.success) {
      print("支付成功");
    } else {
      print("支付失败");
    }
  } catch (e) {
    print("支付异常: $e");
  }
}
回到顶部