猿问

如何在PayPal结账集成中将变量从js传递到php?

我正在用 HTML 和 PHP 创建一个购物网站。这是我第一次做 Web 开发。


我正在尝试将 PayPal Checkout 添加到我的网站。我从贝宝开发人员那里得到了代码,付款成功了。如果付款成功,我需要使用 php 将订单数据插入到我的数据库中。


如何将我定义的表示付款批准的 javascript 变量传递给 PHP?


我已经看到它用 ajax 完成,但我不知道如何实现它。


这是我的代码。我添加了 jquery CDN,因为它似乎是必要的,但我不知道是否还需要其他任何东西。


<!DOCTYPE html>


<head>

    <!-- Add meta tags for mobile and IE -->

    <meta name="viewport" content="width=device-width, initial-scale=1">

    <meta http-equiv="X-UA-Compatible" content="IE=edge" />

    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>

</head>


<body>

    <!-- Set up a container element for the button -->

    <div id="paypal-button-container"></div>


    <!-- Include the PayPal JavaScript SDK -->

    <script src="https://www.paypal.com/sdk/js?client-id=sb&currency=USD"></script>


    <script>

        // Render the PayPal button into #paypal-button-container

        paypal.Buttons({

            

            style: {

                layout: 'horizontal',

                color: 'blue',

                shape: 'rect'

            },

            // Set up the transaction

            createOrder: function(data, actions) {

                return actions.order.create({

                    purchase_units: [{

                        amount: {

                            value: '17'

                        }

                    }]

                });

            },


            // Finalize the transaction

            onApprove: function(data, actions) {

                

                return actions.order.capture().then(function(details) {

                    // Show a success message to the buyer

                    alert('Transaction completed by ' + details.payer.name.given_name + '!');

                    

                    //Variable to confirm successful payment on php

                    //?

                    //?

                });

            }

        }).render('#paypal-button-container');

    </script>

</body>


不负相思意
浏览 140回答 1
1回答

幕布斯6054654

PHP 只能在服务器上看到。因此,您应该使用fetch(推荐)或XMLHTTPRequest向服务器发送一个值。创建一个 PHP 文件,您可以在其中接收$_GET或$_POST变量并处理剩余的付款。在本例中,我将文件ajax_file.php命名为 ,但您可以随意命名它。添加fetch到您的onApprove方法中。我们将使用该POST方法发送,以便通过该body属性发送数据更容易一些。GET也可以这样做,但工作方式有点不同。// Finalize the transactiononApprove: function(data, actions) {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;&nbsp; &nbsp; return actions.order.capture().then(function(details) {&nbsp; &nbsp; &nbsp; &nbsp; // Show a success message to the buyer&nbsp; &nbsp; &nbsp; &nbsp; alert('Transaction completed by ' + details.payer.name.given_name + '!');&nbsp; &nbsp; &nbsp; &nbsp; // URL which to send the value to.&nbsp; &nbsp; &nbsp; &nbsp; const url = 'http://yoursite.com/ajax_file.php';&nbsp; &nbsp; &nbsp; &nbsp; // Message to send. In this example an object with a state property.&nbsp; &nbsp; &nbsp; &nbsp; // You can change the properties to whatever you want.&nbsp; &nbsp; &nbsp; &nbsp; const message = { status: 'success' };&nbsp; &nbsp; &nbsp; &nbsp; // Send it to the URL with the POST method&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; // and send the message in JSON format.&nbsp; &nbsp; &nbsp; &nbsp; fetch(url, {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; method: 'POST',&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; body: JSON.stringify(message)&nbsp; &nbsp; &nbsp; &nbsp; }).catch(function(error) {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; console.log(error); // Display error if there is one.&nbsp; &nbsp; &nbsp; &nbsp; });&nbsp; &nbsp; });}在您的 PHP 文件中,例如ajax_file.php.在那里你检查价值。查看它是否已发送以及它是否是正确的值,然后从那里继续流程。// Check if status send.$status = isset( $_POST[ 'status'] ) ? $_POST[ 'status' ] : false;// Check the value of statusif ( $status === 'succes' ) {&nbsp; &nbsp; // Status is a success.&nbsp; &nbsp; // Continue your form flow.}您的问题不清楚接下来会发生什么,但我希望您能从这里弄清楚。
随时随地看视频慕课网APP
我要回答