
 
 
지금 바로 결제 페이지를 확인하세요!
        
        
둘 다 해야 한다
그리고 Firebase 홈페이지로 돌아갑니다.
        
 
 
 

 
 
아래에 요소를 만들고 Promise를 사용하십시오.
<Route path="/payment">
    <Header />
    <Elements stripe={promise}>
    <Payment/>
    </Elements>
</Route>
        
아래는 Payment.js입니다.
import React, {useState} from 'react';
import './Payment.css'
import {useStateValue} from "./StateProvider";
import {Link, useHistory} from "react-router-dom";
import CheckoutProduct from "./CheckoutProduct";
import CurrencyFormat from 'react-currency-format';
import {getBasketTotal} from "./Reducer";
import {CardElement, useElements, useStripe} from "@stripe/react-stripe-js";
function Payment() {
    const ({basket, user }, dispatch ) = useStateValue();
    const history = useHistory();
    //App.js 에 적어주고 ! subtotal.js 결제하기 onclick 실행 !
    const (disable,setDisable) =useState(true);
    const (error, setError) = useState(null);
    const stripe = useStripe();
    const elements = useElements(true);
    const (processing,setProcessing) = useState("");
    const (succeeded , setSucceeded) = useState(false);
    const (clientSecret, setClientSecret) =useState(true);
    //아래는 비동기 async
    const handleSubmit = async(event) =>{
    }
    const handleChange = (event) => {
        setDisable(event.empty);
        setError(event.error ? event.error.message:"");
    }
    return (
        <div className="payment">
            <div className="payment_container">
                <Link to='/checkout' className="checkoutlink">
                    <h1>장바구니로 돌아가기 </h1>
                </Link>
                   <h1>{ basket?.length} 개의 상품목록이 존재합니다.</h1>
                    <div className="payment_section">
                        <div className="payment_title">
                            <h3>배달 받을곳</h3>
                        </div>
                        <div className="payment_address">
                            <p>{user?.email}님의 주소</p>
                            <p>강원도</p>
                            <p>철원</p>
                        </div>
                    </div>
            </div>
            <div className="payment_section">
                <div className="payment_title">
                    <h3>상품 목록</h3>
                </div>
                <div className="payment_items">
                    {basket.map((item) => {
                        return (
                            <CheckoutProduct
                                key={item.id}
                                id={item.id}
                                title={item.title}
                                image={item.image}
                                price={item.price}
                                rating={item.rating}
                            />
                        );
                    })}
                </div>
            </div>
            <div className="payment_section">
                <div className="payment_title">
                    <h3> 결제 </h3>
                </div>
                <div className="payment_detail">
                    <form onSubmit={handleSubmit}>
                        <CardElement onChange={handleChange}/>
                        <div className="payment_priceContainer">
                            <CurrencyFormat
                                renderText={(value) => (
                                    <>
                                        <p>
                                            총액(상품갯수 : {basket.length} EA) : <strong>{ value }원</strong>
                                        </p>
                                        <small className="subtotal_gift">
                                            <input type="checkbox"/> 체크박스 입니다.
                                        </small>
                                    </>
                                )}
                                decimalScale={2}  //소수점 몇짜리 까지
                                value={getBasketTotal(basket)}
                                displayType={'text'}
                                thousandSeparator={true}
                                prefix={'₩'}
                            />
                            <button disabled={processing || disable || succeeded }><span>{processing?<p>결제중입니다</p> : "결제하기"}</span></button>
                        </div>
                        {error && <div>{error}</div>}
                    </form>
                </div>
            </div>
        </div>
    );
}
export default Payment;
그런 다음 터미널에 다음 명령을 입력하십시오.
npm i axios –force
액시오스란 무엇인가
브라우저용 비동기 통신 라이브(깜박임 없이 쓰기)
Cloud Functions가 있는 서버 측
서버리스 서버를 가장한 서버, 간단한 기능
        
 
 
