如何在 ReactJS 中使用 PayPal 的 Express In-Context Checkout?

IT技术 javascript reactjs paypal
2021-04-06 04:27:14

我正在关注有关如何生成 PayPal 按钮的PayPal 教程,但没有任何效果。它提供的使按钮神秘地出现的代码对我来说只工作了一次,但刷新后,它消失了,没有基督让它再次出现。

这是在 React 组件内执行的代码

  class Storefronts extends Component {
    render() {
      return (
        <div className="layout-wrapper">
          {this.props.location.pathname === '/shops' ? <Shops {...this.props}/> : <Basic {...this.props}/>}
          <script>
            window.paypalCheckoutReady = function() {
              paypal.checkout.setup('MERCHANTID', {
                environment: 'sandbox',
                container: 'test1',
              })
            }
          </script>
        </div>
      );
    }
  }

这是一个Storefront包含组件Shop,并且在这个Card组件内部有一个组件。基本上,它是一个展示其产品的商店,每个产品 ( Card) 都需要有一个按钮:

class Card extends Editor {
  render() {
    const {list} = this.props;
    let img = '/images/logo-v2-small.jpg';

    return (
      <Row>
      {list.map(item =>{
        return (
          <Col xs={6} md={3}>
            <Link to={{ pathname: '/shops/' + item.id }}>
              <Thumbnail src={img} alt={item.name}>
                <h3>{item.name}</h3>
                <p>{this.parseHtmlToReact(item.description)}</p>
                <p>{item.address}</p>
                <p>
                  <Button bsStyle="primary">Book</Button>
                  <a id="test1" href="/checkout"/> // The button should appear here.
                  <p className="pull-right">
                    {item.rating} 
                  </p>
                </p>
              </Thumbnail>
            </Link>
          </Col>
        )
      })}
      </Row>
    );
  }
}

关于它在 React 中的使用没有什么可说的,也没有最近的module。

1个回答

您可以创建自己的 PayPal 按钮组件。

class PayPalButton extends React.Component {
  constructor() {
    super();
    // you can take this value from a config.js module for example.
    this.merchantId = '6XF3MPZBZV6HU';
  }

  componentDidMount() {
    let container = this.props.id;
    let merchantId = this.merchantId;
    window.paypalCheckoutReady = function() {
      paypal.checkout.setup(merchantId, {
        locale: 'en_US',
        environment: 'sandbox',
        container: container,
      });
    }
  }

  render() {
    return(
      <a id={this.props.id} href="/checkout" />
    );
  }
}

ReactDOM.render(<PayPalButton id="button" />, document.getElementById('View'));

JSFiddle 上的工作示例

感谢您的建议和指导,我刚刚还创建了一个真正的 react-paypal-express-checkout 库,在这里发布只是为了给需要在 reactjs 中使用 Paypal 的任何人提供参考
2021-06-03 04:27:14
我认为那是因为我缺少asyncPayPalcheckout.js脚本标签上的标志。更新了我的代码。
2021-06-14 04:27:14
我一直有它,但它仍然发生,我的意思是在我的代码中。
2021-06-15 04:27:14
非常好,现在可以使用了,谢谢!只是一件事,该按钮仅在我刷新页面时显示,如果我保存了一个使其重新加载的文件,它就会消失。那可能是什么?
2021-06-21 04:27:14