【问题标题】:paypal is not defined in paypal.Buttons.driver("react", { React, ReactDOM });paypal 中没有定义 paypal.Buttons.driver("react", { React, ReactDOM });
【发布时间】:2021-08-24 20:35:21
【问题描述】:

我想开发一个 PayPal 按钮,按照 API 文档,我有以下代码:

import React, {useState}from 'react';
import {useDispatch} from 'react-redux';
import {useHistory} from 'react-router-dom';
import ReactDOM from 'react-dom';

import * as actionsReservations from '../../reservation/actions';
import {Errors} from '..';

const PayPalButton = paypal.Buttons.driver("react", { React, ReactDOM });

const PayPalReserve = ({deposit, menu, companyId, reservationDate, periodType, diners}) => {

    const dispatch = useDispatch();
    const history = useHistory();                                                                                                                                                                     
    const [backendErrors, setBackendErrors] = useState(null);

    const createOrder = (data,actions) => {
        return actions.order.create({
            purchase_units:[
                {
                    amount:{
                        value: deposit
                    },
                },
            ],
        });
    };

    const onApprove = (data, actions) => {
        return actions.order.capture().then(response => {
            dispatch(actionsReservations.reservation(
                menu.id,
                companyId,
                reservationDate,
                periodType,
                diners,
                response.id,
                () => history.push('/reservation/reservation-completed'),
                errors => setBackendErrors(errors)
            ));
            console.log(response);
        });
      }
};

export default PayPalReserve; 

但是给我抛出以下错误:

Line 9:22:  'paypal' is not defined  no-undef

但如果我从paypal-checkout 导入paypal 使用这一行:

import paypal from 'paypal-checkout';

React 抛出以下错误:

"TypeError: paypal_checkout__WEBPACK_IMPORTED_MODULE_4___default.a.Buttons is undefined"

我的 index.html 我在 head 标签中有这个:

<script defer src="https://www.paypal.com/sdk/js?client-id=MY_CLIENT_CODE"></script>

当我不导入 paypal-checkout 或导入它时,我不知道为什么会抛出这些错误。如果你知道如何解决它,我将不胜感激

谢谢。

【问题讨论】:

    标签: reactjs paypal


    【解决方案1】:

    如果你只使用官方的react-paypal-js 包,事情可能会变得更容易。

    Here is the storybook .. 复制它的例子:

    import { PayPalScriptProvider, PayPalButtons } from "@paypal/react-paypal-js";
    
    <PayPalScriptProvider options={{ "client-id": "test" }}>
       <PayPalButtons
           style={{ layout: "horizontal" }}
           createOrder={(data, actions) => {
               return actions.order.create({
                   purchase_units: [
                       {
                           amount: {
                               value: "2.00",
                           },
                       },
                   ],
               });
           }}
       />;
    </PayPalScriptProvider>
    

    【讨论】:

      【解决方案2】:

      这是一个eslint err,只是在开头添加window,因为PayPal是一个全局变量注入到window obj中

      console.log(window.paypal)

      【讨论】:

        猜你喜欢
        • 2023-03-27
        • 2021-02-24
        • 2016-03-10
        • 2018-03-26
        • 2016-11-12
        • 2017-10-30
        • 1970-01-01
        • 1970-01-01
        • 2019-03-12
        相关资源
        最近更新 更多