javascript - 在 React.js 中制作一个 Paypal 按钮来结帐项目?

标签 javascript reactjs paypal

因此,来 self 熟悉的 PayPal 按钮的 Angular 背景,我无法让它为 React.js 工作。为有效的 react.js 构建 PayPal 按钮组件的方法是什么?有什么建议会有很大帮助吗?

最佳答案

有同样问题的 friend :这个简洁step-by-step guide可用于编写您自己的使用 PayPal REST API 的 React 组件。

在下面的代码片段中,注意:

  1. API 异步加载和 isScriptLoad* Prop 检查加载状态
  2. showButton 保持状态(可以渲染也可以不渲染)
  3. 绑定(bind)到DOM
  4. componentDidMount 对比 componentWillReceiveProps 检查 API 的加载状态
  5. 要传递给组件以管理交易的 Prop :total、currency、env、commit、client、onSuccess、onError、onCancel
  6. paymentauthorize 方法实际实现交易

import React from 'react';
import ReactDOM from 'react-dom';
import scriptLoader from 'react-async-script-loader';

class PaypalButton extends React.Component {
  constructor(props) {
super(props);

this.state = {
  showButton: false,
};

window.React = React;
window.ReactDOM = ReactDOM;
  }

  componentDidMount() {
const {
  isScriptLoaded,
  isScriptLoadSucceed
} = this.props;

if (isScriptLoaded && isScriptLoadSucceed) {
  this.setState({ showButton: true });
}
  }

  componentWillReceiveProps(nextProps) {
const {
  isScriptLoaded,
  isScriptLoadSucceed,
} = nextProps;

const isLoadedButWasntLoadedBefore =
  !this.state.showButton &&
  !this.props.isScriptLoaded &&
  isScriptLoaded;

if (isLoadedButWasntLoadedBefore) {
  if (isScriptLoadSucceed) {
    this.setState({ showButton: true });
  }
}
  }

  render() {
const {
  total,
  currency,
  env,
  commit,
  client,
  onSuccess,
  onError,
  onCancel,
} = this.props;

const {
  showButton,
} = this.state;

const payment = () =>
  paypal.rest.payment.create(env, client, {
    transactions: [
      {
        amount: {
          total,
          currency,
        }
      },
    ],
  });

const onAuthorize = (data, actions) =>
  actions.payment.execute()
    .then(() => {
      const payment = {
        paid: true,
        cancelled: false,
        payerID: data.payerID,
        paymentID: data.paymentID,
        paymentToken: data.paymentToken,
        returnUrl: data.returnUrl,
      };

      onSuccess(payment);
    });

return (
  <div>
    {showButton && <paypal.Button.react
      env={env}
      client={client}
      commit={commit}
      payment={payment}
      onAuthorize={onAuthorize}
      onCancel={onCancel}
      onError={onError}
    />}
  </div>
);
  }
}

export default scriptLoader('https://www.paypalobjects.com/api/checkout.js')(PaypalButton);

关于javascript - 在 React.js 中制作一个 Paypal 按钮来结帐项目?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43482310/

相关文章:

javascript - 使用 React Router v4,如何根据现有浏览器位置但插入新参数导航到路径?

wordpress - Paypal 订阅的访客结帐

javascript - 绘制后淡出部分 HTML 5 Canvas

javascript - 用 10 个随机字符生成 3 个字符

javascript - 如何删除 xhr 请求中的默认 header ?

javascript - React js 中的动态列创建

javascript - 如何制作单击按钮时显示的加载动画?它应该占据全屏并且应该从右到左并消失

javascript - 在 AS3 和 HTML5 中创建 3D 条形图

paypal - 如何为移动网站的移动结账创建一个 Paypal 立即购买按钮?

php - 我如何将 Paypal 用于我网站的高级部分并处理高级用户与普通用户的关系?