Firebase Trigger Razorpay для интеграции Android - PullRequest
1 голос
/ 02 апреля 2020

Я создаю приложение, в котором пользователь может покупать монеты, и для этого я уже давно пытаюсь интегрировать Razorpay в мое приложение Android. Razorpay можно напрямую использовать в Android. Он отправляет результаты Успеха или Неудачи для оплаты, и я могу действовать соответственно (добавляя точки в базу данных в этом случае). Но проблема с этим подходом состоит в том, что я должен записывать точки (после успеха) в базу данных из приложения. Это означает, что я должен предоставить доступ на запись для узла точек пользовательскому приложению, что не очень хорошая идея. Поэтому я хотел использовать Razorpay с Firebase Cloud Functions и долго искал, наткнулся на этот учебник , предназначенный для Интернета. Я совершенно новичок в облачных функциях и поэтому хотел немного помочь с Android.

Вот код Index. js, но для Web

const functions = require("firebase-functions");
var express = require("express");
var cors = require("cors");
var request = require("request");
const crypto = require("crypto");
const key = "----insert yout key here----";
const key_secret = "----- insert key secret here ----";

var app = express();

app.use(cors({ origin: true }));

app.post("/", (req, res) => {
  const amount = req.body.amount;

  //Allow Api Calls from local server
  const allowedOrigins = [
    "http://127.0.0.1:8080",
    "http://localhost:8080",
    "https://-------YourFirebaseApp-----.firebaseapp.com/"
  ];
  const origin = req.headers.origin;
  if (allowedOrigins.indexOf(origin) > -1) {
    res.setHeader("Access-Control-Allow-Origin", origin);
  }

  var options = {
    method: "POST",
    url: "https://api.razorpay.com/v1/orders",
    headers: {
      //There should be space after Basic else you get a BAD REQUEST error
      Authorization:
        "Basic " + new Buffer(key + ":" + key_secret).toString("base64")
    },
    form: {
      amount: amount,
      currency: "INR",
      receipt:
        "----- create a order in firestore and pass order_unique id here ---",
      payment_capture: 1
    }
  };

  request(options, function(error, response, body) {
    if (error) throw new Error(error);

    res.send(body);
  });
});

app.post("/confirmPayment", (req, res) => {
  const order = req.body;
  const text = order.razorpay_order_id + "|" + order.razorpay_payment_id;
  var signature = crypto
    .createHmac("sha256", key_secret)
    .update(text)
    .digest("hex");

  if (signature === order.razorpay_signature) {
    console.log("PAYMENT SUCCESSFULL");

    res.send("PAYMENT SUCCESSFULL");
  } else {
    res.send("something went wrong!");
    res.end();
  }
});

exports.paymentApi = functions.https.onRequest(app);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...