首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Paypal沙箱未返回数据

Paypal沙箱未返回数据
EN

Stack Overflow用户
提问于 2021-09-19 20:38:02
回答 1查看 118关注 0票数 0

我在大约3年前实现了一个paypal结账,目前运行良好。现在,我想为一组新项目创建一个新的结帐页面。我从我之前使用的页面复制了代码,并为新项目更新了它。我将新页面设置为使用沙箱进行初始测试。下面的代码是从实际页面中剪切出来的,以便在这里显示。

代码语言:javascript
复制
<!DOCTYPE HTML >
<html>

<head>
</head>

<body>
  <div>
  <form id='paypal_form' action="https://www.sandbox.paypal.com/cgi-bin/webscr" method="post">
  <input type="hidden" name="cmd" value="_xclick" />
  <input type="hidden" name="add" value="1" />
    <input type="hidden" name="business" value="buyer@test.com" />
  <input type="hidden" name="item_name" value="non-member RTV Renewal" />
  <input type="hidden" name="amount" value="75.00" />
  <input type="hidden" name="custom" value="Id=Joe;fixedName=Joe Smith;pw=1234;email=buyer@google.com;expdate=2024-02-14" />
  <input type="hidden" name="currency_code" value="USD" />
  <input type="hidden" name="lc" value="US" />

  <input type="hidden" name="cancel_return" value="https://www.roundalab.org/Figures_Subscriptions_All/test_renew.htm">
<input type="hidden" name="return" value="https://www.roundalab.org/Figures_Subscriptions_All/success_test.php">
<input type="hidden" name="rm" value="2">
  <center>
    <div id="add-cart" style="padding:30px;">
      <button onClick="document.getElementById('paypal_form').submit();">Click Here To Submit Order To Paypal</button>
    </div>
  </center>
  </form>
  </div>
  </div>
</body>

</html>

代码可以工作,并在paypal沙箱中创建订单。然后它应该去“返回”项目的网址,它确实。问题是贝宝应该返回一堆数据在$_POST中。当返回页面显示时,$_POST是空的。我还显示$_GET,它包含1个字段,这是payer_id。几个问题……

有人知道为什么$_POST中没有数据吗?

有没有一种方法可以让我得到任何类型的错误消息,显示为什么在转到返回项中的url时没有发送POST数据的信息?

我假设这个使用paypal的方法已经被弃用了。有没有什么地方我还能找到使用这个接口的文档?

EN

回答 1

Stack Overflow用户

发布于 2021-09-19 20:54:13

接收沙盒业务账号需要为要返回的任何数据启用Payment Data Transfer

使用这种从您的站点重定向的纯HTML型(无应用程序接口) PayPal集成,永远不能保证在完成事务后返回。PayPal可能有义务向付款人出示收据,或者他们可能永远不会单击返回,或者他们的浏览器可能会关闭或崩溃。因此,对于任何重要的事情,您都不应该依赖这些返回的数据。它仅用于额外的信息目的。

如果您试图对通过_GET/_POST返回的数据执行任何重要的操作,那么您的集成是有缺陷的。

有了这种仅限HTML的post集成,接收数据的唯一可靠方法就是实现IPN服务,这也是非常古老的。如果您需要对返回的数据做任何重要的事情,那么所有这些都是糟糕的选择。

相反,请使用当前的PayPal检出集成。按照Set up standard payments指南在您的服务器上创建两个路由,一个用于“创建订单”,另一个用于“捕获订单”,即documented here。两个路由都应该只返回JSON数据(不返回HTML或文本)。在第二条路径中,当采集接口成功时,您应该将生成的支付明细存储在您的数据库中(特别是purchase_units[0].payments.captures[0].id,这是PayPal交易ID),并在将返回的JSON转发给前端调用者之前立即执行任何必要的业务逻辑(例如发送确认邮件或预留产品)。

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

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

https://stackoverflow.com/questions/69246923

复制
相关文章

相似问题

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