Создание подключенного пользователя с stripe Android firebase

#java #android #node.js #firebase #stripe-payments

#java #Android #node.js #firebase #stripe-платежи

Вопрос:

Я очень новичок в работе с серверными материалами и nodejs. Я пытаюсь настроить Stripe с помощью своего приложения и теперь пытаюсь создать подключенную учетную запись с stripe. Следил за этимhttps://stripe.com/docs/connect/collect-then-transfer-guide но я недостаточно понимаю, чтобы заставить это работать. Как мне получить информацию с сервера или отправить ее, чтобы создать учетную запись.

это то, что я получил до сих пор

 
        binding.connectWithStripe.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                String redirect = "https://www.example.com/connect-onboard-redirect";

                String url = "https://connect.stripe.com/express/oauth/authorize"  
                        "?client_id="   "ca_Hdth53g5sheh4w4hwhw5h4weh5"  
                        "amp;state="   1234  
                        "amp;redirect_uri="   redirect;
                CustomTabsIntent.Builder builder = new CustomTabsIntent.Builder();
                CustomTabsIntent customTabsIntent = builder.build();
                customTabsIntent.launchUrl(view.getContext(), Uri.parse(url));
            }
        });
  
 
const express = require('express');
const app = express();
app.use(express.json());
const { resolve } = require("path");

const stripe = require('stripe')('sk_test_xxxx');

app.get("/", (req, res) => {
  // Display landing page.
  const path = resolve("./index.html");
  res.sendFile(path);
});

app.get("/connect/oauth", async (req, res) => {
  const { code, state } = req.query;

  // Assert the state matches the state you provided in the OAuth link (optional).
  if(!stateMatches(state)) {
    return res.status(403).json({ error: 'Incorrect state parameter: '   state });
  }

  // Send the authorization code to Stripe's API.
  stripe.oauth.token({
    grant_type: 'authorization_code',
    code
  }).then(
    (response) => {
      var connected_account_id = response.stripe_user_id;
      saveAccountId(connected_account_id);

      // Render some HTML or redirect to a different page.
      return res.status(200).json({success: true});
    },
    (err) => {
      if (err.type === 'StripeInvalidGrantError') {
        return res.status(400).json({error: 'Invalid authorization code: '   code});
      } else {
        return res.status(500).json({error: 'An unknown error occurred.'});
      }
    }
  );
});

const stateMatches = (state_parameter) => {
  // Load the same state value that you randomly generated for your OAuth link.
  const saved_state = 'sv_53124';

  return saved_state == state_parameter;
}

const saveAccountId = (id) => {
  // Save the connected account ID from the response to your database.
  console.log('Connected account ID: '   id);
}

app.listen(4242, () => console.log(`Node server listening on port ${4242}!`));
  

Откроется страница регистрации, на которой можно ввести тестовую информацию, но после отправки она фактически не создает учетную запись в Stripe dashboard. Любая помощь была бы высоко оценена

введите описание изображения здесь

Ответ №1:

После завершения регистрации учетной записи Express Stripe перенаправляет вашего клиента на URI перенаправления, указанный вами в вашем URL-адресе Connect OAuth (похоже, что вашhttps://www.example.com/connect-onboard-redirect).

Вы должны перенаправить на свою реальную страницу здесь. URL-адрес перенаправления добавит параметры запроса, содержащие код авторизации, например https://www.example.com/connect-onboard-redirect?code=ac_1234

где ac_1234 — код авторизации OAuth.

Вам нужно проанализировать этот код авторизации и отправить его на свой сервер и завершить подключение OAuth, чтобы фактически подключить эту учетную запись Express к вашей платформе:https://stripe.com/docs/connect/oauth-express-accounts#token-request

Комментарии:

1. Я получил первую часть. Теперь, как бы я обработал этот OAuth с помощью node.js код, который у меня есть?

2. Хорошо, я понял, что мне нужно использовать Retrofit (или что-нибудь в этом роде, что может выполнять вызовы из серверной части) Теперь это просто не авторизация. Мне просто нужно прочитать обо всем этом и выяснить, как все это работает. Спасибо за ответ. Просто немного обучения с моей стороны, мне нужно сделать

3. используется * Volley sry

Ответ №2:

Получил последнюю часть моей головоломки. Не знал, как взаимодействовать с nodejs и использовать метод GET. Я использовал volley с этим фрагментом кода

 RequestQueue queue = Volley.newRequestQueue(getContext());

                StringRequest stringRequest = new StringRequest(Request.Method.GET, "http://10.0.2.2:4242"   "/connect/oauth",
                        new Response.Listener<String>() {
                            @Override
                            public void onResponse(String response) {
                                Log.d(">>>>>>>>CONNECTED?", ">>>CONNECTED!!!<<<");
                                // enjoy your response
                            }
                        }, new Response.ErrorListener() {
                    @Override
                    public void onErrorResponse(VolleyError error) {
                        Log.d(">>>>>>>>>>ERRRRRRROR", error.toString());
                        // enjoy your error status
                    }
                });

                queue.add(stringRequest);
  

Надеюсь, это поможет кому-нибудь еще начать изучать nodejs 🙂