为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

PHP
不负相思意 2022-01-02 19:43:58
我正在用 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>
查看完整描述

1 回答

?
幕布斯6054654

TA贡献1876条经验 获得超7个赞

PHP 只能在服务器上看到。因此,您应该使用fetch(推荐)或XMLHTTPRequest向服务器发送一个值。


创建一个 PHP 文件,您可以在其中接收$_GET或$_POST变量并处理剩余的付款。在本例中,我将文件ajax_file.php命名为 ,但您可以随意命名它。


添加fetch到您的onApprove方法中。我们将使用该POST方法发送,以便通过该body属性发送数据更容易一些。GET也可以这样做,但工作方式有点不同。


// 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 + '!');


        // URL which to send the value to.

        const url = 'http://yoursite.com/ajax_file.php';


        // Message to send. In this example an object with a state property.

        // You can change the properties to whatever you want.

        const message = { status: 'success' };


        // Send it to the URL with the POST method 

        // and send the message in JSON format.

        fetch(url, {

            method: 'POST',

            body: JSON.stringify(message)

        }).catch(function(error) {

            console.log(error); // Display error if there is one.

        });


    });

}

在您的 PHP 文件中,例如ajax_file.php.

在那里你检查价值。查看它是否已发送以及它是否是正确的值,然后从那里继续流程。


// Check if status send.

$status = isset( $_POST[ 'status'] ) ? $_POST[ 'status' ] : false;


// Check the value of status

if ( $status === 'succes' ) {


    // Status is a success.

    // Continue your form flow.


}

您的问题不清楚接下来会发生什么,但我希望您能从这里弄清楚。


查看完整回答
反对 回复 2022-01-02
  • 1 回答
  • 0 关注
  • 139 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信