#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 🙂