package com.reactnativehdfcpaymentgateway;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.webkit.WebView;

import androidx.appcompat.app.AppCompatActivity;

import com.razorpay.PaymentData;
import com.razorpay.PaymentResultListener;
import com.razorpay.PaymentResultWithDataListener;
import com.razorpay.Razorpay;

import org.json.JSONException;
import org.json.JSONObject;

public class Payment extends AppCompatActivity {

  private final String Tag = getClass().getSimpleName();
  private Razorpay razorpay = null;
  private WebView webView;

  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_payment);

    webView = findViewById(R.id.webview);
    initRazorPay();
  }

  private void initRazorPay() {
    Intent bundle = getIntent();

    razorpay = new Razorpay(this, bundle.getStringExtra("razor_pay_key"));

    razorpay.setWebView(webView);


    JSONObject payload = new JSONObject();
    try {
      payload.put("order_id", bundle.getStringExtra("order_id")); //Created using Razorpay Orders API

      payload.put("amount", bundle.getIntExtra("amount",0)); //Amount in Paisa. 500 = Rs 5
      payload.put("name", bundle.getStringExtra("name"));
      payload.put("description", bundle.getStringExtra("description"));
      payload.put("prefill[email]", bundle.getStringExtra("cus_email"));
      payload.put("prefill[contact]", bundle.getStringExtra("cus_contact"));
      payload.put("notes[transaction_id]", bundle.getStringExtra("order_id"));
    } catch (JSONException jsonException) {
      jsonException.printStackTrace();
    }

      try {
      razorpay.openCheckout(payload, new PaymentResultListener() {

        @Override
        public void onPaymentSuccess(String razorpayPaymentId) {
          // Razorpay payment ID is passed here after a successful payment
          Intent intent = new Intent();
          intent.putExtra("razor_pay_payment_id",razorpayPaymentId);
          setResult(Activity.RESULT_OK, intent);
          finish();
        }
        @Override
        public void onPaymentError(int code, String description) {
          // Error code and description is passed here
          Intent intent = new Intent();
          setResult(Activity.RESULT_CANCELED, intent);
          finish();
        }
      });
    } catch (Exception exception) {
      exception.printStackTrace();
    }

  }

  @Override
  protected void onDestroy() {
    super.onDestroy();
  }


  @Override
  public void onBackPressed() {
    if(razorpay != null){
      razorpay.onBackPressed();
    }
    Intent intent = new Intent();
    setResult(Activity.RESULT_CANCELED, intent);
    super.onBackPressed();
  }
}
