【发布时间】:2020-06-21 00:36:10
【问题描述】:
所以我花了相当多的时间(几周)来解决这个问题,但仍然无法弄清楚如何解决它。我相信我已经将其范围缩小到一旦用户通过 Stripe Connect Express 流程完成了注册表单,尝试让 Stripe Connect webhook 触发的问题。这是 Stripe 提供的 RocketRides.io demo 示例。我已经向 Stripe 提交了一个问题,但正在等待回复。我希望在 SO 社区的帮助下更快地到达那里。
我之前已经创建了其他问题,因为我在尝试缩小问题范围的反复试验过程中追逐众所周知的兔子的各种漏洞,所以请耐心等待。您可以在此问题帖子的底部找到这些其他链接。
当我使用stripe listen“收听”时,下面的 sn-p 会显示我的 Stripe CLI 日志。
customer.created 在用户注册我的应用程序时被触发,这应该使用下面的代码来实现。我不确定在尝试使用 Stripe Connect 帐户时是否应该使用这是我的意图。我还在弄清楚条纹。底线是我需要有支付和订阅能力,根据我所做的研究,Stripe Connect 是前进的方向。
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 form。
我现在遇到的问题是让条带触发Connect Webhook,这将触发第 4 步,即使用Authentication code 对重定向 URL 的 cURL 请求的 Cloud Functions 版本,可能还有state code . account.application.authorized 事件仅在我发送 cURL 请求后才会在我的侦听器中发生(我认为这称为 GET 请求?我不是经过正式培训的程序员)
我认为问题在于设置 webhook 以在用户完成表单并被重定向后触发,我认为应该是 account.updated?
这是我的 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 代码。又名 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 Functions - res.send() is not a function
Cloud Firebase Stripe Connect - Retrieve Authorization Code / Access Token, State, etc
Firebase Cloud Functions - Stripe Connect Webhook not firing
Android Stripe Connect WebView - Create Account Form NOT loading
【问题讨论】:
标签: node.js firebase stripe-payments webhooks