【问题标题】:Have issues to make paytm payment integration live in flutter有问题使 paytm 支付集成在 Flutter 中生效
【发布时间】:2020-03-18 06:02:08
【问题描述】:

对于测试 MID,我能够成功付款,但是当我尝试使用我的生产密钥和 paytm 的生产 MID 使其生效时,我收到“无效:此 MID 在我们的暂存环境中不可用”的错误,我是使用“https://securegw.paytm.in/theia/paytmCallback?ORDER_ID=”回调 url 进行生产作为 paytm 的指令,但我仍然无法在生产环境中付款。以下是我的颤振代码:

class _MyAppState extends State<MyApp> {
  String payment_response = '';
  final String M_ID = "";      //Production MID
  final String CHANNEL_ID = "WAP";// type here your channel id given by paytm
  final String INDUSTRY_TYPE_ID = "Retail";  // type here your industry type id given by paytm
  final String WEBSITE = "DEFAULT";    //for production

  TextEditingController amountController = new TextEditingController();

  @override
  void initState() {
    super.initState();
  }

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: const Text('Paytm example app'),
        ),
        body: Padding(
          padding: EdgeInsets.all(10.0),
          child: Column(
            crossAxisAlignment: CrossAxisAlignment.stretch,
            mainAxisAlignment: MainAxisAlignment.center,
            children: <Widget>[
              TextFormField(
                controller: amountController,
                decoration: InputDecoration(
                  hintText: 'Enter Amount',
                  prefix: Text('Rs. '),
                ),
                keyboardType: TextInputType.number,
              ),
              SizedBox(height: 5.0,),
              RaisedButton(
                onPressed: () {
                  //Firstly Generate CheckSum bcoz Paytm Require this
                  generateCheckSum();
                },
                color: Colors.blue,
                child: Text(
                  "Pay Now",
                  style: TextStyle(color: Colors.white),
                ),
              ),
              SizedBox(height: 20.0,),
              Text('Response: $payment_response\n'),

            ],
          ),
        ),
      ),
    );
  }

  void generateCheckSum() async {
    var url =
        'https://promiseacademy.co.in/flutterapp/paytm/generateChecksum.php';

    String orderId = DateTime
        .now()
        .millisecondsSinceEpoch
        .toString();

    String callBackUrl =
    'https://securegw.paytm.in/theia/paytmCallback?ORDER_ID=' +
        orderId;

    //Please use your parameters here
    //CHANNEL_ID etc provided to you by paytm

    final response = await http.post(url, headers: {
      "Content-Type": "application/x-www-form-urlencoded"
    }, body: {
      "M_ID": M_ID,
      "CHANNEL_ID": CHANNEL_ID,
      'INDUSTRY_TYPE_ID': INDUSTRY_TYPE_ID,
      'WEBSITE': WEBSITE,
      'TXN_AMOUNT': amountController.text,
      'CALLBACK_URL': callBackUrl,
      'ORDER_ID': orderId,
      'CUST_ID': '1',
    });

    //for Testing(Stagging) use this

    //https://securegw-stage.paytm.in/theia/paytmCallback?ORDER_ID=

    //https://securegw.paytm.in/theia/paytmCallback?ORDER_ID=


    if (response.statusCode == 200) {
      var result = json.decode(response.body);

      print("Response :" + response.body + "\nchecksumhash:" + result['CHECKSUMHASH']);

      var paytmResponse = Paytm.startPaytmPayment(
          true,
          M_ID,
         orderId,
          "1",
          CHANNEL_ID,
          amountController.text,
          WEBSITE,
          callBackUrl,
          INDUSTRY_TYPE_ID,
          result['CHECKSUMHASH']);

      paytmResponse.then((value) {
        setState(() {
          payment_response = value.toString();
        });
      });
    }
    else{
      print(response.statusCode);
    }
  }
}

【问题讨论】:

    标签: android flutter paytm


    【解决方案1】:
     var paytmResponse = Paytm.startPaytmPayment(
              true,
              M_ID,
             orderId,
              "1",
              CHANNEL_ID,
              amountController.text,
              WEBSITE,
              callBackUrl,
              INDUSTRY_TYPE_ID,
              result['CHECKSUMHASH']);
    

    请在 Paytm.startPaytmPayment() 中将第一个参数从 true 更改为 false。该参数表示 isTesting。如果您保持真实,它将获取暂存详细信息并为您提供未找到生产详细信息的错误。

    【讨论】:

      猜你喜欢
      • 2019-11-24
      • 2013-11-01
      • 1970-01-01
      • 2016-01-27
      • 2016-05-31
      • 2018-08-15
      • 2021-09-21
      • 2023-03-03
      • 2020-06-22
      相关资源
      最近更新 更多