app-starlock/lib/tools/pay/wx_pay_tool.dart
2024-06-11 09:22:36 +08:00

53 lines
1.3 KiB
Dart
Executable File

import 'package:fluwx/fluwx.dart';
import 'package:star_lock/tools/storage.dart';
///
/// 微信支付
///
///
class WxPayTool {
static Fluwx fluwx = Fluwx();
static bool isInit = false;
static void setAssociationUrl(String associationUrl) {
Storage.saveAssociationUrl(associationUrl);
}
static Future<void> init(String appId, String universalLink) async {
fluwx.registerApi(appId: appId, universalLink: universalLink);
}
static Future<void> pay(
Payment payment, WeChatResponseSubscriber listener) async {
if (!isInit) {
isInit = true;
final String _associationUrl = await Storage.getAssociationUrl();
await init(payment.appId, _associationUrl);
//回调
void responseListener(WeChatResponse response) {
if (response is WeChatPaymentResponse) {
//支付回调
listener.call(response);
}
}
//开启监听
fluwx.addSubscriber(responseListener);
}
fluwx.pay(which: payment);
}
static Payment mapToPayment(dynamic data) {
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;
}
}