53 lines
1.3 KiB
Dart
Executable File
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;
|
|
}
|
|
}
|