拿来。 Stripe 集成在本地主机上工作,并在上传到 Firebase 后停止工作

Posted

技术标签:

【中文标题】拿来。 Stripe 集成在本地主机上工作,并在上传到 Firebase 后停止工作【英文标题】:fetch. Stripe integration works on a localhost and stop working after uploaded to a firebase 【发布时间】:2020-03-21 01:59:29 【问题描述】:

尝试使用 firebase 平台集成 Stripe。在 lolalhost(firebase 模拟器)上测试使用卡付款。上传到服务器后,得到500

作为示例使用此代码(Web 上的客户端,使用 node.js 的服务器) https://github.com/stripe-samples/accept-a-card-payment/tree/master/using-webhooks

客户:

var orderData = 
  items: [ id: "photo-subscription" ],
  currency: "usd"
;

fetch("/create-payment-intent", 
  method: "POST",
  headers: 
  "Content-Type": "application/json"
,
  body: JSON.stringify(orderData)
)
.then(function(result) 
  console.log(result);
  return result.json();
)
.then(function(data) 
  console.log(data);
  return setupElements(data);
)
.then(function( stripe, card, clientSecret ) 
  // Handle form submission.
  var form = document.getElementById("payment-form");
  form.addEventListener("submit", function(event) 
    event.preventDefault();
    // Initiate payment when the submit button is clicked
    pay(stripe, card, clientSecret);
  );
);

服务器(云功能)

app.post("/create-payment-intent", async (req, res) => 

  const  items, currency  = req.body;
  // Create a PaymentIntent with the order amount and currency
  const paymentIntent = await stripe.paymentIntents.create(
    amount: 1400,
    currency: currency,
    payment_method_types: ['card'],
  );

  // Send publishable key and PaymentIntent details to client
  res.send(
    publishableKey: 'pk_test_...',
    clientSecret: paymentIntent.client_secret
  );
);

在本地主机上响应:

Response type: "basic", url: "http://localhost:5000/jobs/create-payment-intent", redirected: false, status: 200, ok: true, …

publishableKey: "pk_test_...", clientSecret: "pi_1Fij2FH..."

服务器上的响应:

POST https://pd...b.firebaseapp.com/create-payment-intent 500

Response type: "basic", url: "https://pd...b.firebaseapp.com/create-payment-intent", redirected: false, status: 500, ok: false, …

Uncaught (in promise) SyntaxError: Unexpected token E in JSON at position 0

云功能日志:

Error: An error occurred with our connection to Stripe.
at /srv/functions/node_modules/stripe/lib/StripeResource.js:212:9
at ClientRequest.req.on 
(/srv/functions/node_modules/stripe/lib/StripeResource.js:467:67)
at ClientRequest.emit (events.js:189:13)
at ClientRequest.EventEmitter.emit (domain.js:441:20)
at TLSSocket.socketErrorListener (_http_client.js:392:9)
at TLSSocket.emit (events.js:189:13)
at TLSSocket.EventEmitter.emit (domain.js:441:20)
at emitErrorNT (internal/streams/destroy.js:82:8)
at emitErrorAndCloseNT (internal/streams/destroy.js:50:3)
at process._tickCallback (internal/process/next_tick.js:63:19)
Function execution took 346 ms, finished with status: 'crash'

【问题讨论】:

【参考方案1】:

这已经晚了,但我相信您必须升级到 Firebase Blaze 计划。 Firebase 不允许在免费计划中向非 Google 服务发出 API 请求。

【讨论】:

以上是关于拿来。 Stripe 集成在本地主机上工作,并在上传到 Firebase 后停止工作的主要内容,如果未能解决你的问题,请参考以下文章

准备好的语句在本地主机上工作,但不能在实时服务器上工作,无法获得输出 [重复]

无法访问本地主机上的 Docker 容器 [重复]

Facebook登录按钮在本地主机上不起作用

.htaccess 无法使用 XAMPP 在本地主机上工作

图片上传可以在本地主机上工作,但不能在线

$("Iframe").contents() 在本地主机上工作但不能在线? [复制]