无法获得PayPal checkout.js来创建成功的交易

时间:2017-03-11 23:08:12

标签: javascript paypal

以下是从

复制的checkout.js脚本

https://developer.paypal.com/docs/integration/direct/express-checkout/integration-jsv4/basic-integration/

将其修改为使用“production”而不是“sandbox”,并粘贴到我们通过登录创建的LiveAPI密钥中,转到Dashboard / Rest API应用程序。

此网站的设立是为了收取会议的注册费。用户在HTML表单上输入信息,然后将用户发送到显示欠款总额的另一页面。这是我插入结帐脚本的页面。

结果:页面上显示paypal按钮,点击后,将用户连接到paypal。显示我们组织的电子邮件地址(不是用户的电子邮件);用户必须更改此设置,然后可以登录其个人PayPal帐户或输入信用卡信息。

问题:当用户完成交易时,他们将返回到包含结账的页面,而不是传递到我们在PayPal注册的结果页面。此外,我们的帐户显示没有发生交易的记录(在Sandbox或Live中)。它在

的仪表板中报告为“失败的交易”

https://developer.paypal.com/developer/applications/

几天前将此问题发布到support@paypal-techsupport.com,但尚未收到回复。

任何帮助将不胜感激!

BEGIN CODE

<div id="paypal-button"></div>
<script src="https://www.paypalobjects.com/api/checkout.js"></script>
<script>
    paypal.Button.render({
        env: 'production', // Specify 'sandbox' for the test environment
//        env: 'sandbox', // Specify 'sandbox' for the test environment
   client: {
//           sandbox:    
           production: 'xxxxx'
       },
        payment: function() {
            var env    = this.props.env;
            var client = this.props.client;
            return paypal.rest.payment.create(env, client, {
                transactions: [
                    {
                        amount: { total: <?echo $Fees?>, currency: 'USD' }
                    }
                ]
            });
        },
            // Set up the payment here, when the buyer clicks on the button
        commit: true, // Optional: show a 'Pay Now' button in the checkout flow
        onAuthorize: function(data, actions) {
            // Execute the payment here, when the buyer approves the transaction
       }
    }, '#paypal-button');
</script>

结束代码

1 个答案:

答案 0 :(得分:0)

请参阅https://developer.paypal.com/docs/integration/direct/express-checkout/integration-jsv4/basic-integration/

上的完整示例

当用户完成在PayPal结账时,将调用您的onAuthorize功能。在这里,您可以选择做任何您想做的事情,包括:

  • 执行付款(转移资金)
  • 重定向页面

例如,如果您想执行付款然后显示成功页面,则可以执行以下操作:

    onAuthorize: function(data, actions) {

        return actions.payment.execute().then(function() {
            return actions.redirect(window, 'http://some-success-page');
        });
    }

execute()不会自动发生的原因是因为您可以在最终确定付款之前显示确认页面。