第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

使用 react 和 stripe 創(chuàng)建測(cè)試支付網(wǎng)關(guān)

使用 react 和 stripe 創(chuàng)建測(cè)試支付網(wǎng)關(guān)

開滿天機(jī) 2023-05-19 14:32:36
嘿,我正在我的網(wǎng)站上使用 react 制作支付網(wǎng)關(guān),所以我正在使用 stripe js(用于測(cè)試)我已經(jīng)將我的支付組件包裝在 app.js 的 Elements 中const promise = loadStripe("my stipe publishable key")<Route path='/payment'>           <Header/>           <Elements stripe={promise}>           <Payment/>           </Elements>         </Route>我在支付組件中的代碼是我使用 firebase 托管作為后端,所以我的運(yùn)行命令 firebase init 創(chuàng)建了一個(gè)名為函數(shù)的文件夾(“因?yàn)槲以谶\(yùn)行 firebase init 后選擇了函數(shù)選項(xiàng)”)并且對(duì)于 axios 我已經(jīng)在我的 axios.js 文件中編寫了這段代碼import axios from "axios";const instance = axios.create({    baseURL: "http://localhost:5001/*****/******/api"});export default instance;和這里使用的 baseURL 我通過在運(yùn)行 firebase init 創(chuàng)建的函數(shù)文件夾中的 index.js 中編寫一些代碼來獲得我在 index.js 中編寫的代碼是const functions = require('firebase-functions');const express = require("express");const cors = require("cors");const stripe = require("stripe")('my stripe secret key here')//API//App configconst app = express();//Middlewaresapp.use(cors({origin: true}));app.use(express.json());//API routesapp.get('/', (request, response) => response.status(200).send('hello world'))app.post('/payment/create', async(request, response) => {    const total = request.query.total;    console.log('Payment Request Recieved BOOM!!! for this amount', total)    const paymentIntent = await stripe.paymentIntents.create({        amount: total,        currency: "usd",    });    //OK Created    response.status(201).send({        clientSecret: paymentIntent.client_secret,    })})//Listen commandexports.api = functions.https.onRequest(app)從這里我得到了我的 api,它在終端函數(shù) [api] 中用作基本 url :http 函數(shù)已初始化(http://localhost:5001/abcdabcdabcd/abcabcd/api)。
查看完整描述

1 回答

?
四季花海

TA貢獻(xiàn)1811條經(jīng)驗(yàn) 獲得超5個(gè)贊

這里需要考慮以下幾點(diǎn):

  1. /payment/create通過掛鉤調(diào)用useEffect,您將在每次組件更新時(shí)創(chuàng)建一個(gè)新的 PaymentIntent。這是非常低效的,并且會(huì)給您留下許多未使用的 PaymentIntents,使您的 Stripe 帳戶變得混亂。相反,您應(yīng)該只在用戶打算購(gòu)買某物時(shí)創(chuàng)建 PaymentIntent,例如當(dāng)他們單擊“購(gòu)買”按鈕時(shí)。

  2. 您正在傳遞要從客戶那里收取的總金額。這意味著惡意用戶將許多東西添加到他們的購(gòu)物車然后編輯該請(qǐng)求以確保他們被收取的費(fèi)用比您預(yù)期的少得多是微不足道的。所有與計(jì)算總金額有關(guān)的邏輯都應(yīng)該在服務(wù)器上完成,而不是客戶端。

  3. 您的服務(wù)器日志沒有顯示任何實(shí)際付款失敗。由于您是在客戶端進(jìn)行確認(rèn),因此您可能在那里遇到錯(cuò)誤,但在看到錯(cuò)誤之前進(jìn)行了重定向。您應(yīng)該監(jiān)聽錯(cuò)誤對(duì)象而不是立即重定向:

stripe.confirmCardPayment(clientSecret, {

  payment_method: {

    card: elements.getElement(CardElement)

  }

}).then((result) => {

  if (result.error) {

    // payment failed, do something with the error

    console.log(result.error.message);

  } else {

    setSucceeded(true);

    setError(null)

    setProcessing(false)

    history.replace('/order')

});

您還可以通過查看儀表板來檢查您的 Stripe 日志:https://dashboard.stripe.com/test/logs


查看完整回答
反對(duì) 回復(fù) 2023-05-19
  • 1 回答
  • 0 關(guān)注
  • 211 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)