Stripe Connect Express Webhook - Как запустить Stripe Webhook после того, как пользователь заполнил форму Stripe Connect Express и перенаправлен - PullRequest
0 голосов
/ 09 марта 2020

, поэтому я потратил немало времени (недель) на решение этой проблемы, однако до сих пор не смог понять, как ее решить. Я полагаю, что я сузил это до проблемы попытки запустить веб-крючок Stripe Connect после того, как пользователь заполнил форму регистрации через процесс Stripe Connect Express. Вот пример, который Stripe дает с демонстрацией RocketRides.io . Я отправил вопрос в полоску, но жду ответа. Я надеялся быстрее достичь этого с помощью сообщества SO.

Ранее я задавал другие вопросы, преследуя общеизвестных кроликов в их различных норах, пока я go проходил через процесс проб и ошибок. пытаясь сузить вопрос, так что терпите меня. Вы можете найти эти другие ссылки в нижней части этого поста с вопросом.

Фрагмент ниже показывает мой Stripe CLI Log, когда я "слушаю" с stripe listen.

stripe listen snippet

Этот фрагмент отображает stripe logs tail stripe logs tail snippet

customer.created срабатывает при пользователь подписывается на мое приложение, что должно происходить с использованием приведенного ниже кода. Я не уверен, должно ли это использоваться при попытке использовать учетную запись Stripe Connect, что является моим намерением. Я все еще разбираюсь в Stripe. Суть в том, что мне нужно иметь возможность выплаты и подписки, и из проведенного мною исследования Stripe Connect указывает направление на go.

exports.createStripeCustomerHTTPSCall = functions.firestore.document('Users/{userName}').onCreate((change, context) =>{

    console.log("Stripe Customer profile for " + context.params.userName + " created.");

    return stripeToken.customers.create(
        {
            description: 'My First Test Customer (created for API docs)',
            email: context.params.userName,
        },
        (err, customer) => {
        // asynchronously called
            console.log("Creating Stripe customer failed because: " + err.toString())
        }
    )

Как только пользователь зарегистрируется в приложении и зарегистрирован в FirebaseDatabase как пользователь, они будут перенаправлены в Stripe Connect Express форму .

Проблема, с которой я сейчас сталкиваюсь, заключается в том, чтобы получить полосу для запуска Connect Webhook , которая вызовет Шаг 4, версию cURL-запроса Cloud Functions к перенаправленному URL с Authentication code и, возможно, state code. Событие account.application.authorized происходит в моем слушателе только после того, как я отправил запрос cURL (я думаю, это называется запросом GET? Я не являюсь официально обученным программистом)

Я считаю, что проблема заключается в настройке запустить веб-крючок, как только пользователь заполнил форму и перенаправлен, как мне кажется, account.updated?

Вот мои настройки веб-крюка: enter image description here

enter image description here

Вот мой Node.js код. Я не уверен, что это уместно, так как я не могу даже запустить webhook, но на всякий случай:

exports.stripeCreateOathResponseToken = functions.https.onRequest((req, res) => {

console.log("rawbody: " + rawbody); // <-- usually comes back with req.rawbody
    console.log("request.body: " + req.body); // <-- returns undefined
    console.log("request.query.code: " + req.query.code); // <-- returns undefined
    console.log("request.query.body: " + req.query.body); // <-- returns undefined
    console.log("request.query.state: " + req.query.state); // <-- returns undefined

return stripeToken.oauth.token({
          grant_type: 'authorization_code',
          code: req.query.code,
    }).then(function(response) {
          // asynchronously called

        return res.send(response)

          // var connected_account_id = response.stripe_user_id;
        })
        .catch(error=> {
            res.send(error)
        })

    });

В случае, если это уместно, вот код android kotlin для пользователя решает подписаться на возможности выплат. AKA Stripe Connect Express

openURL.data = Uri.parse(
                            "https://connect.stripe.com/express/oauth/authorize?" +
                                    "redirect_uri=http://XXXXXXXXXXXXXX.com&" +
                                    "client_id=ca_XXXXXXXXXXXXXXXXXXXX" + // how to hide client id? maybe look at how to access from stripe CLI
                                    "state=" + mAuth.currentUser!!.uid +
                                    "&stripe_user[email]=" + userEmail +
                                    "&stripe_user[business_type]=individual" +
                                    "&stripe_user[phone_number]=" + userPhoneNumberStripped +
                                    "#/")

                    startActivity(openURL)

Предыдущие вопросы

Stripe Firebase Cloud Функции - res.send () не является функцией

Cloud Firebase Stripe Connect - получение кода авторизации / токена доступа, состояния и т. Д. c

Облачные функции Firebase - Stripe Connect Webhook не запускается

Android Stripe Connect WebView - Форма для создания учетной записи НЕ загружается

1 Ответ

0 голосов
/ 09 марта 2020

В этом случае webhook не будет работать; вместо этого вы захотите перенаправить пользователя - после того, как он завершит процесс OAuth - на URL-адрес Cloud Functions, который запускает указанный вами код Node.js (а затем перенаправляет его на любой ваш следующий шаг).

Вы также должны убедиться, что URL-адрес, на который вы перенаправляете, указан в качестве URL-адреса перенаправления в настройках платформы вашей панели мониторинга, здесь: https://stripe.com/docs/connect/express-accounts#integrating -oauth

С точки зрения перенаправления в GCF это может помочь: { ссылка }

...