nnsdk 1.3.4 copy "nnsdk: ^1.3.4" to clipboard
nnsdk: ^1.3.4 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 {}

  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");
  }

  // 输出促销优惠的商品
  void printProductPromotion() {
    print("共商品${Nnsdk.instance.productList.length}");
    Nnsdk.instance.productList?.forEach((item) {
      print("遍历商品 ${item.storeEntity?.toJson()}");
      if (item.storeEntity?.isEligibleForIntroOffer == true) {
        // 有首次促销优惠资格(如:免费3天资格) introductoryRoundUnit = day |  month |  week |  year | none
        print(
          "===> 商品【${item.commodityName}】有首次促销资格, ${promotionTypeStr(item.storeEntity?.introductoryPaymentMode ?? "")} ${item.storeEntity?.introductoryRoundValue}${introTypeStr(item.storeEntity?.introductoryRoundUnit ?? "")}",
        );
      }
    });
  }

  String introTypeStr(String type) {
    switch (type) {
      case "day":
        return "天";
      case "month":
        return "个月";
      case "week":
        return "周";
      case "year":
        return "年";
      default:
        return "无";
    }
  }

  String promotionTypeStr(String type) {
    switch (type) {
      case "FreeTrial":
        return "免费试用";
      case "PayAsYouGo":
        return "随用随付";
      case "PayUpFront":
        return "先付后用";
      default:
        return "无";
    }
  }

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