我想将totalCartPrice传递给flutter应用程序中的openCheckout

如何解决我想将totalCartPrice传递给flutter应用程序中的openCheckout

我是新手,所以请帮助我。我想将这个值传递给用户provider.userModel.total购物车价格/ 100来作为未结帐checkout()中的金额

当用户单击结帐时,它将重定向到Razorpay付款网关。

代码:

import 'package:flutter_ecommerce/helpers/style.dart';
import 'package:flutter_ecommerce/models/cart_item.dart';
import 'package:flutter_ecommerce/provider/app_provider.dart';
import 'package:flutter_ecommerce/provider/user_provider.dart';
import 'package:flutter_ecommerce/services/order.dart';
import 'package:flutter_ecommerce/widgets/custom_text.dart';
import 'package:flutter_ecommerce/widgets/loading.dart';
import 'package:flutter/material.dart';
import 'package:fluttertoast/fluttertoast.dart';
import 'package:provider/provider.dart';
import 'package:uuid/uuid.dart';
import 'package:razorpay_flutter/razorpay_flutter.dart';

class CartScreen extends StatefulWidget {
  @override
  _CartScreenState createState() => _CartScreenState();
}

class _CartScreenState extends State<CartScreen> {
  final _key = GlobalKey<ScaffoldState>();
  OrderServices _orderServices = OrderServices();
  Razorpay razorpay;

  @override
  void initState() {
    // TODO: implement initState
    super.initState();

    razorpay = new Razorpay();
    razorpay.on(Razorpay.EVENT_PAYMENT_SUCCESS,handlePaymentSuccess);
    razorpay.on(Razorpay.EVENT_PAYMENT_ERROR,handleErrorFailure);
    razorpay.on(Razorpay.EVENT_EXTERNAL_WALLET,handleExternalWallet);
  }

  @override
  void dispose() {
    // TODO: implement dispose
    super.dispose();
    razorpay.clear();
  }

  UserProvider userProvider;
  void openCheckout() {
    var options = {
      "key": "rzp_test_UhHkdZJX3q5bRq","amount": userProvider.userModel.totalCartPrice,"name": "Payment","description": "Payment for the product","prefill": {
        "contact": "","email": "",},"external": {
        "wallets": ["paytm"]
      }
    };
    try {
      razorpay.open(options);
    } catch (e) {
      print(e.toString());
    }
  }

  void handlePaymentSuccess(PaymentSuccessResponse response) {
    Fluttertoast.showToast(msg: "SUCCESS: " + response.paymentId);
  }

  void handleErrorFailure(PaymentFailureResponse response) {
    Fluttertoast.showToast(
        msg: "ERROR: " + response.code.toString() + " - " + response.message);
  }

  void handleExternalWallet(ExternalWalletResponse response) {
    Fluttertoast.showToast(msg: "EXTERNAL_WALLET: " + response.walletName);
  }

  @override
  Widget build(BuildContext context) {
    final userProvider = Provider.of<UserProvider>(context);
    final appProvider = Provider.of<AppProvider>(context);

    return Scaffold(
      key: _key,appBar: AppBar(
        iconTheme: IconThemeData(color: black),backgroundColor: white,elevation: 0.0,title: CustomText(text: "Shopping Cart"),leading: IconButton(
            icon: Icon(Icons.close),onPressed: () {
              Navigator.pop(context);
            }),),body: appProvider.isLoading
          ? Loading()
          : ListView.builder(
              itemCount: userProvider.userModel.cart.length,itemBuilder: (_,index) {
                return Padding(
                  padding: const EdgeInsets.all(16),child: Container(
                    height: 120,decoration: BoxDecoration(
                        borderRadius: BorderRadius.circular(20),color: white,boxShadow: [
                          BoxShadow(
                              color: red.withOpacity(0.2),offset: Offset(3,2),blurRadius: 30)
                        ]),child: Row(
                      children: <Widget>[
                        ClipRRect(
                          borderRadius: BorderRadius.only(
                            bottomLeft: Radius.circular(20),topLeft: Radius.circular(20),child: Image.network(
                            userProvider.userModel.cart[index].image,height: 120,width: 140,fit: BoxFit.fill,SizedBox(
                          width: 10,Expanded(
                          child: Row(
                            mainAxisAlignment: MainAxisAlignment.spaceBetween,children: <Widget>[
                              RichText(
                                text: TextSpan(children: [
                                  TextSpan(
                                      text: userProvider
                                              .userModel.cart[index].name +
                                          "\n",style: TextStyle(
                                          color: black,fontSize: 20,fontWeight: FontWeight.bold)),TextSpan(
                                      text:
                                          "\$${userProvider.userModel.cart[index].price / 100} \n\n",fontSize: 18,fontWeight: FontWeight.w300)),TextSpan(
                                      text: "Quantity: ",style: TextStyle(
                                          color: grey,fontSize: 16,fontWeight: FontWeight.w400)),TextSpan(
                                      text: userProvider
                                          .userModel.cart[index].quantity
                                          .toString(),style: TextStyle(
                                          color: primary,]),IconButton(
                                  icon: Icon(
                                    Icons.delete,color: red,onPressed: () async {
                                    appProvider.changeIsLoading();
                                    bool success =
                                        await userProvider.removeFromCart(
                                            cartItem: userProvider
                                                .userModel.cart[index]);
                                    if (success) {
                                      userProvider.reloadUserModel();
                                      print("Item removed from cart");
                                      _key.currentState.showSnackBar(SnackBar(
                                          content: Text("Removed from Cart!")));
                                      appProvider.changeIsLoading();
                                      return;
                                    } else {
                                      appProvider.changeIsLoading();
                                    }
                                  })
                            ],)
                      ],);
              }),bottomNavigationBar: Container(
        height: 70,child: Padding(
          padding: const EdgeInsets.all(8.0),child: Row(
            mainAxisAlignment: MainAxisAlignment.spaceBetween,children: <Widget>[
              RichText(
                text: TextSpan(children: [
                  TextSpan(
                      text: "Total: ",style: TextStyle(
                          color: grey,fontSize: 22,TextSpan(
                      text: " \$${userProvider.userModel.totalCartPrice / 100}",style: TextStyle(
                          color: black,fontWeight: FontWeight.normal)),Container(
                decoration: BoxDecoration(
                    borderRadius: BorderRadius.circular(20),color: black),child: FlatButton(
                    onPressed: () {
                      if (userProvider.userModel.totalCartPrice == 0) {
                        showDialog(
                            context: context,builder: (BuildContext context) {
                              return Dialog(
                                shape: RoundedRectangleBorder(
                                    borderRadius: BorderRadius.circular(20.0)),//this right here
                                child: Container(
                                  height: 200,child: Padding(
                                    padding: const EdgeInsets.all(12.0),child: Column(
                                      mainAxisAlignment:
                                          MainAxisAlignment.center,crossAxisAlignment:
                                          CrossAxisAlignment.start,children: [
                                        Row(
                                          mainAxisAlignment:
                                              MainAxisAlignment.center,children: <Widget>[
                                            Text(
                                              'Your cart is empty',textAlign: TextAlign.center,],);
                            });
                        return;
                      }
                      showDialog(
                          context: context,builder: (BuildContext context) {
                            return Dialog(
                              shape: RoundedRectangleBorder(
                                  borderRadius: BorderRadius.circular(20.0)),//this right here
                              child: Container(
                                height: 200,child: Padding(
                                  padding: const EdgeInsets.all(12.0),child: Column(
                                    mainAxisAlignment: MainAxisAlignment.center,crossAxisAlignment:
                                        CrossAxisAlignment.start,children: [
                                      Text(
                                        'You will be charged \$${userProvider.userModel.totalCartPrice / 100} upon delivery!',SizedBox(
                                        width: 320.0,child: RaisedButton(
                                          onPressed: () {
                                            openCheckout();
                                            // var uuid = Uuid();
                                            // String id = uuid.v4();
                                            // _orderServices.createOrder(
                                            //     userId: userProvider.user.uid,//     id: id,//     description:
                                            //         "Some random description",//     status: "complete",//     totalPrice: userProvider
                                            //         .userModel.totalCartPrice,//     cart: userProvider
                                            //         .userModel.cart);
                                            // for (CartItemModel cartItem
                                            //     in userProvider
                                            //         .userModel.cart) {
                                            //   bool value = await userProvider
                                            //       .removeFromCart(
                                            //           cartItem: cartItem);
                                            //   if (value) {
                                            //     userProvider.reloadUserModel();
                                            //     print("Item added to cart");
                                            //     _key.currentState.showSnackBar(
                                            //         SnackBar(
                                            //             content: Text(
                                            //                 "Removed from Cart!")));
                                            //   } else {
                                            //     print("ITEM WAS NOT REMOVED");
                                            //   }
                                            // }
                                            // _key.currentState.showSnackBar(
                                            //     SnackBar(
                                            //         content: Text(
                                            //             "Order created!")));
                                            // Navigator.pop(context);
                                          },child: Text(
                                            "Accept",style:
                                                TextStyle(color: Colors.white),color: const Color(0xFF1BC0C5),child: RaisedButton(
                                            onPressed: () {
                                              Navigator.pop(context);
                                            },child: Text(
                                              "Reject",style: TextStyle(
                                                  color: Colors.white),color: red),)
                                    ],);
                          });
                    },child: CustomText(
                      text: "Check out",size: 20,weight: FontWeight.normal,)),)
            ],);
  }
}

但是,当我尝试这样做时,它将null值传递给amount。请帮我解决这些问题。

解决方法

剃须刀支付的金额为卢比,因此,如果您有100卢比,则在结帐时必须通过amount *100。 因此,以下结帐方法是:

void openCheckout() {
    var options = {
      "key": "rzp_test_UhHkdZJX3q5bRq","amount": userProvider.userModel.totalCartPrice * 100,"name": "Payment","description": "Payment for the product","prefill": {
        "contact": "","email": "",},"external": {
        "wallets": ["paytm"]
      }
    };
    try {
      razorpay.open(options);
    } catch (e) {
      print(e.toString());
    }
  }

检查以下链接:

https://razorpay.com/docs/payment-gateway/web-integration/standard/

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


依赖报错 idea导入项目后依赖报错,解决方案:https://blog.csdn.net/weixin_42420249/article/details/81191861 依赖版本报错:更换其他版本 无法下载依赖可参考:https://blog.csdn.net/weixin_42628809/a
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下 2021-12-03 13:33:33.927 ERROR 7228 [ main] o.s.b.d.LoggingFailureAnalysisReporter : *************************** APPL
错误1:gradle项目控制台输出为乱码 # 解决方案:https://blog.csdn.net/weixin_43501566/article/details/112482302 # 在gradle-wrapper.properties 添加以下内容 org.gradle.jvmargs=-Df
错误还原:在查询的过程中,传入的workType为0时,该条件不起作用 &lt;select id=&quot;xxx&quot;&gt; SELECT di.id, di.name, di.work_type, di.updated... &lt;where&gt; &lt;if test=&qu
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct redisServer’没有名为‘server_cpulist’的成员 redisSetCpuAffinity(server.server_cpulist); ^ server.c: 在函数‘hasActiveC
解决方案1 1、改项目中.idea/workspace.xml配置文件,增加dynamic.classpath参数 2、搜索PropertiesComponent,添加如下 &lt;property name=&quot;dynamic.classpath&quot; value=&quot;tru
删除根组件app.vue中的默认代码后报错:Module Error (from ./node_modules/eslint-loader/index.js): 解决方案:关闭ESlint代码检测,在项目根目录创建vue.config.js,在文件中添加 module.exports = { lin
查看spark默认的python版本 [root@master day27]# pyspark /home/software/spark-2.3.4-bin-hadoop2.7/conf/spark-env.sh: line 2: /usr/local/hadoop/bin/hadoop: No s
使用本地python环境可以成功执行 import pandas as pd import matplotlib.pyplot as plt # 设置字体 plt.rcParams[&#39;font.sans-serif&#39;] = [&#39;SimHei&#39;] # 能正确显示负号 p
错误1:Request method ‘DELETE‘ not supported 错误还原:controller层有一个接口,访问该接口时报错:Request method ‘DELETE‘ not supported 错误原因:没有接收到前端传入的参数,修改为如下 参考 错误2:cannot r
错误1:启动docker镜像时报错:Error response from daemon: driver failed programming external connectivity on endpoint quirky_allen 解决方法:重启docker -&gt; systemctl r
错误1:private field ‘xxx‘ is never assigned 按Altʾnter快捷键,选择第2项 参考:https://blog.csdn.net/shi_hong_fei_hei/article/details/88814070 错误2:启动时报错,不能找到主启动类 #
报错如下,通过源不能下载,最后警告pip需升级版本 Requirement already satisfied: pip in c:\users\ychen\appdata\local\programs\python\python310\lib\site-packages (22.0.4) Coll
错误1:maven打包报错 错误还原:使用maven打包项目时报错如下 [ERROR] Failed to execute goal org.apache.maven.plugins:maven-resources-plugin:3.2.0:resources (default-resources)
错误1:服务调用时报错 服务消费者模块assess通过openFeign调用服务提供者模块hires 如下为服务提供者模块hires的控制层接口 @RestController @RequestMapping(&quot;/hires&quot;) public class FeignControl
错误1:运行项目后报如下错误 解决方案 报错2:Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.8.1:compile (default-compile) on project sb 解决方案:在pom.
参考 错误原因 过滤器或拦截器在生效时,redisTemplate还没有注入 解决方案:在注入容器时就生效 @Component //项目运行时就注入Spring容器 public class RedisBean { @Resource private RedisTemplate&lt;String
使用vite构建项目报错 C:\Users\ychen\work&gt;npm init @vitejs/app @vitejs/create-app is deprecated, use npm init vite instead C:\Users\ychen\AppData\Local\npm-