ArunYogi / paytm-cordova-plugin

DEPRECATED Cordova plugin for Paytm application
6 stars 13 forks source link

Class object "this" is null in paytm successCallback function #41

Open manojbharti opened 4 years ago

manojbharti commented 4 years ago

@ArunYogi I have integrated this plugin in my ionic-5 App and it is working fine but after successful payment I need to save transaction detail into database by calling my backend API. Posting successCallback function below...

successCallback(response) { console.log("........", response) if (response.STATUS == "TXN_SUCCESS") { var txn_id = response.TXNID; var paymentmode = response.PAYMENTMODE; console.log("txn_id => ", txn_id); this.paytmTransaction(); } else { alert("Transaction Failed for reason " + response.RESPMSG); } }

I am calling this.paytmTransaction(); function after succesfull payment but I am getting error in console ==> TypeError: Cannot read property 'paytmTransaction' of null class object "this" is null in successCallback function, please let me know what i am missing here.

remorr25 commented 4 years ago

@manojbharti please check below code

declare var paytm: any;

@Component({
  selector: "app-home",
  templateUrl: "home.page.html",
  styleUrls: ["home.page.scss"]
})
export class HomePage {
  base_url =
    "http://DOMAIN.COM/paytm/paytmChecksum/generateChecksum.php";
   constructor(private http: HttpClient) {
  }

  txnRequest() {
    let txn = {
      MID: "PAYTM_MID", // PayTM Credentials
      //ORDER_ID: "ORDER0000000001", //Should be unique for every order.
      CUST_ID: "CUST0001",
      INDUSTRY_TYPE_ID: "Retail", // PayTM Credentials
      CHANNEL_ID: "WAP", // PayTM Credentials
      TXN_AMOUNT: "10", // Transaction Amount should be a String
      WEBSITE: "APPSTAGING" // PayTM Credentials
    };

     this.http.post(this.base_url, txn).subscribe((response: any) => {
       console.log("API -" + JSON.stringify(response));
       paytm.startPayment(response, this.successCallback, this.failureCallback);
     });

  }

   successCallback(response) {
      console.log("gateway response", JSON.stringify(response));
     if (response.STATUS == "TXN_SUCCESS") {

      var txn_id = response.TXNID;
      var paymentmode = response.PAYMENTMODE;
      console.log("txn_id => ", txn_id);
      alert("txn_id => " + txn_id);
    } else {
      alert("Transaction Failed for reason " + response.RESPMSG);
    }
  }

  failureCallback(error) {

    alert("Transaction Failed for reason " + error.RESPMSG);
  }

}
manojbharti commented 4 years ago

@remorr25 Thank you...

Dipak26 commented 3 years ago

@remorr25 I want to call my API from inside successCallback and errorCallback but I am not able to get my ionic 5 angular 10 component reference with in this plugin function how I get that reference. I am a beginner in angular 2 and above.

manojbharti commented 3 years ago

@Dipak26 paste your code here.

Dipak26 commented 3 years ago

@Dipak26 paste your code here.

Thanks, @manojbharti for the quick reply but I tried and solve the problem. I pass the component reference and use that.

manojbharti commented 3 years ago

@Dipak26 Great...