nnsdk 1.2.1 copy "nnsdk: ^1.2.1" to clipboard
nnsdk: ^1.2.1 copied to clipboard

retracted

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();
                          },
                        ),
                      ],
                    ),
        ),
      ),
    );
  }
}