【问题标题】:PayPal Checkout Smart Payment Button use Custom Payee贝宝结帐智能支付按钮使用自定义收款人
【发布时间】:2020-07-21 16:22:47
【问题描述】:

您好,我已成功集成 PayPal Checkout 智能支付按钮,我正在使用自定义收款人参考 https://developer.paypal.com/docs/checkout/integration-features/custom-payee/

我的意思是,如果自定义收款人电子邮件无效,付款仍会完成并且资金会转到 API 凭据所有者的帐户。但我不想那样。如果自定义收款人电子邮件错误,则付款不应该成功,它必须抛出一个带有正确消息的错误,以便我可以捕捉到错误。

我没有从 paypal 文档中得到任何解决方案。

【问题讨论】:

    标签: paypal


    【解决方案1】:

    如果自定义收款人电子邮件无效,付款仍会完成,资金会转到 API 凭证所有者的账户

    “无效”是什么意思?请具体说明你的意思。

    如果电子邮件未与现有 PayPal 帐户关联,则付款将处于待处理状态。所有者有 30 天的时间使用该电子邮件创建一个 PayPal 帐户(或将其添加到现有的 PayPal 帐户)并接受待处理的付款。如果他们没有在 30 天内这样做,付款将自动退还。在这种情况下,不是“资金进入 API 凭证所有者的账户”的情况。这不会发生。

    现在,如果您尝试在付款设置时使用空白/空字符串 email_address 传递 payee 对象,那么它将被忽略,并且付款将照常转到 API 凭据所有者没有自定义收款人的付款处理。

    因此,您需要自行验证以确保收款人字段不为空。您可以简单地检查它是否为非空字符串。

    或者,做一个更好的,并实际检查它是一个有效格式的电子邮件地址:

    function isEmail(y) {
        var re = /^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;
        return re.test(String(y).toLowerCase());
    }
    

    如果它无效,您不应允许使用该无效的自定义收款人继续创建订单,因为它显然不会创建您希望的交易。相反,您应该显示没有为该用户/收件人/收款人正确设置结帐的错误。

    【讨论】:

    • invalid 表示收款人电子邮件不是有效的贝宝电子邮件。没有与该电子邮件关联的贝宝帐户。在这种情况下,付款将交给 api 所有者。
    • 我无法将我的代码作为评论发布,所以我只是将我的代码添加为我的查询的答案,您可以检查一下吗?
    【解决方案2】:

    <script src="https://www.paypal.com/sdk/js?client-id=XXXXXXXXXX"></script>
    
    paypal.Buttons({
        createOrder: function(data, actions) {
          return actions.order.create({
            purchase_units: [{
              amount: {
                value: '1.00'
              },
              payee: {
                 email_address: 'someemail@somedomain.com'
              }
            }]
          });
        },
        onApprove: function(data, actions) {
          // This function captures the funds from the transaction.
          return actions.order.capture().then(function(details) {
          	//success
        },
        onCancel: function (data) {
          //cancel payment
        }
      }).render('#paypal-button-container'); 

    这里收款人电子邮件不存在,资金转到api所有者

    【讨论】:

    • 您的代码有问题,我不确定是什么。但是,当我将 payee 对象放入 developer.paypal.com/demo/checkout/#/pattern/client 时,使用 client-id=sb 或我自己的,它工作正常,并且付款被发送到指定的电子邮件,即使该电子邮件不存在于 PayPal 沙箱中.这是预期的行为。付款从未发送给 API 所有者。
    猜你喜欢
    • 2014-06-30
    • 2020-06-09
    • 1970-01-01
    • 2012-07-21
    • 2020-01-06
    • 2013-09-21
    • 2018-02-09
    • 2019-02-12
    • 2023-01-28
    相关资源
    最近更新 更多