Flutter支付插件mpcheckout的使用
Flutter支付插件mpcheckout的使用
mpcheckout
mpcheckout 是一个非官方的 MercadoPago 移动支付插件。
要求
- Android 最低 SDK 版本为 19
- iOS 10.0
注意: 目前 iOS 不再受支持,因为 MercadoPago 将 px-ios SDK 仓库设置为了私有模式,我们无法继续使用该 SDK。
如何使用
首先,确保你的项目中已经添加了 mpcheckout
依赖。你可以在 pubspec.yaml
文件中添加以下内容:
dependencies:
mpcheckout: ^版本号
然后运行 flutter pub get
来安装依赖。
接下来,你可以参考以下完整的示例代码来了解如何使用 mpcheckout
插件。
示例代码
import 'dart:math';
import 'package:flutter/material.dart';
import 'package:mpcheckout/mpcheckout.dart';
import 'cart.dart';
/// [mp] 实例(全局)
late Mpcheckout mp;
void main() {
// 初始化凭证
mp = Mpcheckout.initialize(
clientID: const String.fromEnvironment("CLIENT_ID"),
publicKey: const String.fromEnvironment("PUBLIC_KEY"),
accesToken: const String.fromEnvironment("ACCESS_TOKEN"),
);
runApp(MaterialApp(home: MyApp()));
}
class MyApp extends StatefulWidget {
[@override](/user/override)
_MyAppState createState() => _MyAppState();
}
class _MyAppState extends State<MyApp> {
final List<Item> items = [
Item(
title: '测试商品 1',
quantity: 1,
unitPrice: 150,
),
];
[@override](/user/override)
void initState() {
super.initState();
}
[@override](/user/override)
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: const Text('MercadoPagoSDK'),
centerTitle: true,
actions: [
IconButton(
onPressed: () => Navigator.push(
context,
MaterialPageRoute(
builder: (_) => CartScreen(
items: items,
),
),
),
icon: Icon(
Icons.shopping_bag_outlined,
),
)
],
),
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.start,
children: [
...items
.map(
(item) => ListTile(
title: Text(item.title! + ' x${item.quantity}个'),
trailing: Text('\$${item.unitPrice}'),
),
)
.toList(),
],
),
),
floatingActionButton: FloatingActionButton(
onPressed: () {
setState(
() {
items.add(
Item(
title: '测试商品 ${items.length + 1}',
quantity: 1,
unitPrice: Random().nextInt(350),
),
);
},
);
},
child: Icon(Icons.add),
),
);
}
}
更多关于Flutter支付插件mpcheckout的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter支付插件mpcheckout的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
当然,下面是一个关于如何在Flutter项目中使用mpcheckout
插件进行支付的代码案例。mpcheckout
插件通常用于集成微信或支付宝支付功能。以下示例将展示如何集成和使用微信支付功能。
1. 添加依赖
首先,在你的pubspec.yaml
文件中添加mpcheckout
依赖:
dependencies:
flutter:
sdk: flutter
mpcheckout: ^最新版本号 # 请替换为最新版本号
然后运行flutter pub get
来获取依赖。
2. 配置Android和iOS支付信息
Android
在android/app/src/main/AndroidManifest.xml
中添加必要的权限:
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.yourapp">
<uses-permission android:name="android.permission.INTERNET"/>
<application
... >
<!-- 添加微信支付所需的Activity -->
<activity
android:name=".wxapi.WXPayEntryActivity"
android:exported="true"
android:launchMode="singleTop"
android:theme="@android:style/Theme.Translucent.NoTitleBar">
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<data android:scheme="yourappid" /> <!-- 替换为你的微信应用ID -->
</intent-filter>
</activity>
</application>
</manifest>
然后在android/app/build.gradle
中配置签名:
android {
...
signingConfigs {
release {
// 配置签名信息
keyAlias 'your-key-alias'
keyPassword 'your-key-password'
storeFile file('your-keystore-path.jks')
storePassword 'your-store-password'
}
}
buildTypes {
release {
signingConfig signingConfigs.release
...
}
}
}
iOS
在ios/Runner/Info.plist
中添加URL Types配置:
<key>CFBundleURLTypes</key>
<array>
<dict>
<key>CFBundleURLSchemes</key>
<array>
<string>yourappid</string> <!-- 替换为你的微信应用ID -->
</array>
</dict>
</array>
3. 初始化并调用支付
在你的Flutter代码中,初始化并调用支付功能:
import 'package:flutter/material.dart';
import 'package:mpcheckout/mpcheckout.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(
title: Text('Flutter MP Checkout Example'),
),
body: Center(
child: PaymentButton(),
),
),
);
}
}
class PaymentButton extends StatelessWidget {
@override
Widget build(BuildContext context) {
return ElevatedButton(
onPressed: _startPayment,
child: Text('Start Payment'),
);
}
void _startPayment() async {
try {
// 配置支付参数,这里以微信支付为例
final paymentConfig = WeChatPayConfig(
appId: 'your_wechat_app_id', // 替换为你的微信应用ID
partnerId: 'your_wechat_mch_id', // 替换为你的微信支付商户号
prepayId: 'your_prepay_id', // 替换为预支付交易会话标识
nonceStr: 'your_nonce_str', // 随机字符串
timeStamp: 'your_timestamp', // 时间戳
packageValue: 'Sign=WXPay', // 固定值
sign: 'your_sign', // 签名
);
// 调用支付方法
final result = await MPCheckout.startPayment(
context: context,
config: paymentConfig,
);
if (result.isSuccess) {
// 支付成功处理
print('Payment succeeded');
} else {
// 支付失败处理
print('Payment failed: ${result.message}');
}
} catch (e) {
// 异常处理
print('Error: $e');
}
}
}
注意事项
- 安全性:在实际项目中,不要在客户端硬编码敏感信息(如
partnerId
、prepayId
等)。这些信息应该通过安全的服务器端接口获取。 - 签名:确保生成的签名是正确的,否则支付会失败。
- 平台配置:确保在微信支付商户平台正确配置了应用的包名和支付目录等信息。
通过上述步骤,你应该能够在Flutter项目中成功集成并使用mpcheckout
插件进行微信支付。