eyflutter_pays 0.0.3 eyflutter_pays: ^0.0.3 copied to clipboard
in app purchase
import 'dart:convert';
import 'dart:convert' as convert;
import 'package:crypto/crypto.dart';
import 'package:dio/dio.dart';
import 'package:eyflutter_pays/eyflutter_pays.dart';
import 'package:flutter/material.dart';
import 'package:flutter_easyloading/flutter_easyloading.dart';
void main() {
runApp(const MyApp());
}
class MyApp extends StatefulWidget {
const MyApp({super.key});
@override
State<MyApp> createState() => _MyAppState();
}
class _MyAppState extends State<MyApp> {
final dio = Dio();
@override
void initState() {
super.initState();
/// 支付相关回调
InAppPurchase.instance.addListen(getProductError: (message) {
//获取产品失败
print(message);
dismissLoading();
}, verifyPurchaseResult: (arguments) {
//校验支付结果
showLoading();
_verifyPurchaseResult(arguments);
}, buyProductError: (arguments) {
dismissLoading();
print('购买失败$arguments');
});
}
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(
title: const Text('Plugin example app'),
),
body: Center(
child: ListView(
children: [
TextButton(
onPressed: () {
showLoading();
InAppPurchase.instance.buyProduct(productId: "399319940751949893", orderNo: '');
},
child: Text('产品1')),
TextButton(
onPressed: () {
showLoading();
InAppPurchase.instance.buyProduct(productId: "399319749353275461", orderNo: '');
},
child: Text('产品2')),
TextButton(
onPressed: () {
showLoading();
InAppPurchase.instance.buyProduct(productId: "399319650032156741", orderNo: '437209513930522693');
},
child: Text('产品3')),
],
),
),
),
builder: EasyLoading.init(builder: (context, widget) {
return MediaQuery(
data: MediaQuery.of(context).copyWith(textScaleFactor: 1.0),
child: widget!,
);
}),
);
}
/// 与后端交互, 校验支付结果
_verifyPurchaseResult(arguments) async {
print('校验支付$arguments');
var receiptData = arguments['receipt-data']; //获取苹果返回的receipt
var receipt = convert.jsonEncode({'receipt-data': "$receiptData"}); //组装json
var orderNo = arguments['orderNo'];
var transactionId = arguments['transactionId'];
var productId = arguments['productId'];
var userId = '307080167275102277';
var sign = MD5Utils.MD5('$receipt$orderNo$transactionId$productId$userId');
var prams = {
'receipt': receipt,
'orderNo': orderNo,
'transactionId': transactionId,
'productId': productId,
'sign': sign
};
print('提交参数$prams');
Response response = await dio.post('https://api.geease.com/api/nct/trading/apple/pay/verify',
data: prams, options: Options(headers: {'platform': 'ios', 'token': '006f38e6b34d424e8fab024a01e5a15d'}));
dismissLoading();
print(response);
/// 支付成功要移除本地存储的凭证
InAppPurchase.instance.deleteByPaymentVoucher(arguments);
}
// loading框
static showLoading() {
if (!EasyLoading.isShow) {
EasyLoading.show(dismissOnTap: true);
}
}
// 消失loading框
static dismissLoading() {
EasyLoading.dismiss();
}
}
///// md5 加密
class MD5Utils {
static String MD5(String data) {
var content = const Utf8Encoder().convert(data);
var digest = md5.convert(content);
return digest.toString();
}
}