app-starlock/lib/tools/wechat/pay/wx_pay_tool.dart

53 lines
1.3 KiB
Dart
Raw Normal View History

import 'package:fluwx/fluwx.dart';
2024-06-11 09:22:36 +08:00
import 'package:star_lock/tools/storage.dart';
///
/// 微信支付
///
///
class WxPayTool {
static Fluwx fluwx = Fluwx();
2024-06-07 11:12:45 +08:00
static bool isInit = false;
2024-06-11 09:22:36 +08:00
static void setAssociationUrl(String associationUrl) {
Storage.saveAssociationUrl(associationUrl);
}
2024-06-11 09:22:36 +08:00
static Future<void> init(String appId, String universalLink) async {
fluwx.registerApi(appId: appId, universalLink: universalLink);
}
2024-06-11 09:22:36 +08:00
static Future<void> pay(
Payment payment, WeChatResponseSubscriber listener) async {
if (!isInit) {
isInit = true;
2024-06-11 09:22:36 +08:00
final String _associationUrl = await Storage.getAssociationUrl();
await init(payment.appId, _associationUrl);
//回调
2024-06-11 09:22:36 +08:00
void responseListener(WeChatResponse response) {
if (response is WeChatPaymentResponse) {
//支付回调
listener.call(response);
}
}
2024-06-11 09:22:36 +08:00
//开启监听
fluwx.addSubscriber(responseListener);
}
fluwx.pay(which: payment);
}
static Payment mapToPayment(dynamic data) {
2024-06-07 11:12:45 +08:00
final Payment payment = Payment(
appId: data['appId'],
partnerId: data['partnerId'],
prepayId: data['prepayId'],
packageValue: data['packageValue'],
nonceStr: data['nonceStr'],
timestamp: int.tryParse(data['timeStamp']) ?? 0,
sign: data['sign'],
);
return payment;
}
}