nnsdk 1.2.0
nnsdk: ^1.2.0 copied to clipboard
nice sdk
example/lib/main.dart
import 'dart:async';
import 'package:flutter/material.dart';
import 'package:nnsdk/Entity/BridgingEntity.dart';
import 'package:nnsdk/Entity/CommodityItemEntity.dart';
import 'package:nnsdk/Entity/ConfigEntity.dart';
import 'package:nnsdk/Entity/InitResultEntity.dart';
import 'package:nnsdk/Entity/PayResultEntity.dart';
import 'package:nnsdk/nnsdk.dart';
void main() {
runApp(const MyApp());
}
class MyApp extends StatefulWidget {
const MyApp({super.key});
@override
State<MyApp> createState() => _MyAppState();
}
class _MyAppState extends State<MyApp> {
List<CommodityItemEntity> products = [];
bool? showNoNetworkWidget;
@override
void initState() {
super.initState();
initSDK();
}
/// 初始化SDK
Future<void> initSDK() async {
BridgingEntity bridgingEntity = BridgingEntity(
addOrder: "/innovate-bridging-service/api/commerce/commerceAddOrder",
userLogin: "/innovate-bridging-service/api/commerce/commerceUserLogin",
updateFields: "/innovate-bridging-service/api/commerce/commerceUpdateFields",
goodsList: "/innovate-bridging-service/api/commerce/commerceGoodsList",
verifyOrder: "/innovate-bridging-service/api/commerce/commerceVerifyOrder",
uploadShenceData: "/innovate-bridging-service/api/commerce/commerceUploadShenceData",
reportState: "/innovate-bridging-service/api/commerce/commerceReportState",
recoverOrder: "/innovate-bridging-service/api/commerce/commerceRecoverOrder",
verifyOrderV2: "/innovate-bridging-service/api/commerce/open/iosVerifyOrderV2",
appStartNew: "/innovate-bridging-service/api/commerce/commerceAppStartNew");
InitResultEntity entity = await Nnsdk.instance.initSdk(
config: ConfigEntity(
isDebug: true,
isLog: true,
host: "https://testinn.jidiandian.cn",
prdId: "3060230",
encryptedHeader: false,
gdtAppId: "1217523315",
gdtAppKey: "2711f1e67d97709bb368833b95164d4f"),
bridging: bridgingEntity);
if (entity.success == true) {
// 初始化成功,展示根视图
setState(() {
showNoNetworkWidget = false;
products = Nnsdk.instance.productList;
});
List<CommodityItemEntity> list = Nnsdk.instance.productList;
} else {
// 初始化失败,展示网络连接失败UI
setState(() {
showNoNetworkWidget = true;
});
}
}
void onOrder(String commodityId) async {
trackClick();
PayResultEntity resp = await Nnsdk.instance.createOrder(commodityId: commodityId);
if (resp?.status == true) {
print("支付成功 ${resp!.toJson()}");
} else {
print("支付失败 ${resp!.code} ${resp!.toJson()}");
}
}
void trackClick() {
Nnsdk.instance.track(eventName: "pay_click", params: {"action": "点击"});
}
void restore() {
Nnsdk.instance.restore(Nnsdk.instance.deviceId);
}
void finishOrder() async {
bool success = await Nnsdk.instance.finishUnVerifyOrders(false, Nnsdk.instance.deviceId);
print("完成未结束的订单 $success");
}
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(
title: const Text('Plugin example app'),
),
body: Center(
child: showNoNetworkWidget == null
? Container()
: showNoNetworkWidget == true
? GestureDetector(
onTap: () {
initSDK();
},
child: Container(
width: 300,
height: 50,
color: Colors.amber,
alignment: Alignment.center,
child: Text("网络无法连接,请重试"),
),
)
: Column(
children: [
...products
.map(
(e) => GestureDetector(
onTap: () {
onOrder(e.commodityId ?? "");
},
child: Container(
alignment: Alignment.center,
width: 300,
height: 50,
color: Colors.lightGreen,
margin: EdgeInsets.only(top: 20),
child: Text("${e.commodityName} 原价¥${e.unitPrice}"),
),
),
)
.toList(),
GestureDetector(
child: Container(
alignment: Alignment.center,
margin: EdgeInsets.only(top: 20),
width: 300,
height: 50,
child: Text("恢复购买"),
),
onTap: () {
restore();
},
),
GestureDetector(
child: Container(
alignment: Alignment.center,
margin: EdgeInsets.only(top: 20),
width: 300,
height: 50,
child: Text("处理未完成订单"),
),
onTap: () {
finishOrder();
},
),
],
),
),
),
);
}
}