paypal - 坚持集成 Paypal Express Checkout(基本集成 checkout.js 版本 4.0.0)

标签 paypal express-checkout

我正在尝试将 Paypal Express Checkout 集成到简单的购物车中。有不同的方法可以做到这一点。 Paypal 建议在基本或高级集成和 checkout.js 4.0 版(使用 REST API)之间进行选择。到目前为止,一切都很好。 我在我的 Paypal 帐户中创建了 Paypal 应用程序以获取凭据并开始测试它。 测试还可以,但是这里有一些误区。 Checkout.js 通过 REST API(连同我的凭据)将金额 ( 1.00 ) 和货币 ( EUR ) 发送到 Paypal 服务器。并且如果支付完成 - 回调函数 onAuthorize 被触发并且有两个参数与响应(数据和 Action )。好吧,这里我调用我自己的AJAX函数在我的数据库中写入事务响应数据。但是......我只得到付费交易的PaymentID和PayerID?!如果我稍后想搜索 paypal.com 的 Web 界面 - 没有 PaymentID 这样的东西。只有 TransactionID ???如何在 onAutorize 回调函数的响应中获取其他交易详情?我怎样才能得到这里的 TransactionID 在我的数据库中写下来?可能在这里我必须调用 Paypal API,或者必须实现 Paypal IPN(即时付款通知)?但是如何调用 IPN API,如果我没有 TransactionID :)

<div style="width: 906px; text-align: right; height: 100px; 
     margin-top: 50px;">
<div id="paypal-button"></div> 
</div>

<script src="https://www.paypalobjects.com/api/checkout.js"></script>

<script>
    paypal.Button.render({

        env: 'production', // Optional: specify 'sandbox' environment

        style: {
            size: 'medium',
            shape: 'rect'
        },

        client: {
            sandbox:    'xxx-my-credentials-xxx',
            production: 'xxx-my-credentials-xxx'
        },

        payment: function() {

            var env    = this.props.env;
            var client = this.props.client;

            return paypal.rest.payment.create(env, client, {
                transactions: [
                    {
                        amount: { total: '1.00', currency: 'EUR' }
                    }
                ]
            });
        },

        commit: true, // Optional: show a 'Pay Now' button in the checkout flow

        onAuthorize: function(data, actions) {

            // Optional: display a confirmation page here   
            var EXECUTE_PAYMENT_URL = 'payment-process.php'; 

paypal.request.post(EXECUTE_PAYMENT_URL, { paymentID: data.paymentID, payerID: data.payerID, transactionID: data.transactionID, data: data }) .then(function(data) { }) .catch(function(err) { }); 


            return actions.payment.execute().then(function() {
                // Show a success page to the buyer
            });
        }

    }, '#paypal-button');
</script>

最佳答案

要从交易中读取信息,您需要调用 JSON 数据并将其保存在数据库中

    return actions.payment.execute().then(function() {
                actions.payment.get().then(function(data) {
                 if(data.state === 'approved'){
                   console.log(data);  
                   var transactionId = data.id;
                   alert("Transaction ID: "+ transactionId + " \n State: " +data.state);
                 }else{
                  console.log(data);
                 }
               });
          });

关于paypal - 坚持集成 Paypal Express Checkout(基本集成 checkout.js 版本 4.0.0),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41675423/

相关文章:

user-interface - PayPal Express - 删除 "PayPal Credit"选项?

Paypal payflow link setup no "PayPal Express Checkout"feildset

magento - 如何将订单详细信息传递给 magento 中的 paypal-express-checkout?

Drupal 商务 Paypal

php - Paypal IPN Sandbox - 交易完成前接收状态已完成

paypal - 使用 Paypal Payments Advanced(和 NVP API)在 paypal 快速结账上的订单项目

codeigniter - 在 ci-merchant 库 codeigniter 中接收更多响应数据

paypal通过单笔付款将钱汇到paypal中未注册的电子邮件

paypal - 使用 Braintree DropUI 将 PayPal 帐户链接到保险库的正确方法

paypal - 使用 Umbraco 进行在线销售