首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在PayPal (onApprove)中完成采购时发送数据

在PayPal (onApprove)中完成采购时发送数据
EN

Stack Overflow用户
提问于 2022-03-23 00:42:51
回答 1查看 612关注 0票数 0

我试图将数据发送到另一个php文件,在onApprove完成后,我可以在该文件中检查数据并将数据保存到数据库中:

代码语言:javascript
运行
复制
 <script>
                                // Render the PayPal button into #paypal-button-container
                                function loadAsync(url, callback) {
                            var s = document.createElement('script');
                            s.setAttribute('src', url); s.onload = callback;
                            document.head.insertBefore(s, document.head.firstElementChild);
                            }


                            // Usage -- callback is inlined here, but could be a named function
                            loadAsync('https://www.paypal.com/sdk/js?client-id=test&currency=USD&disable-funding=card', function() {
                            paypal.Buttons({
                                // Set up the transaction
                                createOrder: function(data, actions) {
                                    return actions.order.create({
                                        purchase_units: [{
                                            amount: {
                                                value: <?echo $cart->getCartTotal(true)?>
                                             
                                            }
                                        }]
                                    });
                                },
                                // Finalize the transaction
                                      onApprove: function(data, actions) {
            // show loader on screen whilst wating to redirect
            $('.checkout-loader').addClass('active');
            
            // excute php script
            var EXECUTE_URL = 'https://example.com/TESTS.php?success='+success;
            // Authorize the transaction
            actions.order.capture().then(function(details) {
                // Call your server to validate and capture the transaction
                return fetch(EXECUTE_URL, {
                    method: 'post',
                    headers: {
                        'content-type': 'application/json'
                    },
                    body: JSON.stringify({
                        orderID     : data.orderID,
                        success : "okaysuc"
                    })
                }).then(function(response){
                    // redirect to the completed page if paid
                    window.location.href = '/success/' + data.orderID;
                });
            });
        }
    }).render('#paypal-button-container');
                            });
                            </script>

我的TESTS.php

代码语言:javascript
运行
复制
<?php  
$retour = $_POST['success']; //I have tried json_decode() also, didnt work....
$db->query("INSERT INTO mydbname(order_id) VALUES ('$retour')");   //empty data is added to databse  
$cart = new Cart();
if($retour == 'okaysuc'){
//my code goes here.. But not works because data is empty. it is not sent. 
}
?>

除了POST编辑变量之外,一切都正常工作。我不知道如何将数据发送到另一个php文件。有人知道哪里有错误吗?我几乎所有的尝试都尝试过,但没有成功。谢谢。

EN

回答 1

Stack Overflow用户

发布于 2022-03-23 00:51:19

不使用actions.order.create() / actions.order.capture()在客户端创建/捕获订单,只在客户端事件完成后才向服务器发送数据。

相反,切换到适当的客户机-服务器集成。遵循PayPal校验集成指南,在服务器上创建两条路线,一条用于“创建订单”,另一条用于“捕获顺序”(参见“添加和修改代码”中的可选步骤5)。这两条路线都应该只返回JSON数据(不返回HTML或文本)。在第二条路由中,当捕获API成功时,您应该将其结果的支付细节存储在数据库中(特别是purchase_units[0].payments.captures[0].id,即PayPal事务ID),并在将返回JSON转发给前端调用方之前执行任何必要的业务逻辑(例如发送确认电子邮件或保留产品)。

将这2条路由与前端审批流程配对:https://developer.paypal.com/demo/checkout/#/pattern/server

应该扩展到create或capture端点的fetch,以包含一个body param和您希望发送的任何其他数据,这些数据可以在该操作在服务器上继续运行之前得到验证,并且只有在捕获响应成功的情况下才能存储。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71580559

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档