PayPal Express结帐集成未完全完成交易

PayPal Express结帐集成未完全完成交易,paypal,paypal-sandbox,express-checkout,Paypal,Paypal Sandbox,Express Checkout,我正在实施v2 Express Checkout Paypal集成;它工作正常,但未完全完成交易(业务账户未收到付款) 我正在沙盒上运行测试 将生成令牌和订单ID 我将给定的链接复制并粘贴到URL栏中,然后按enter键继续完成事务https://www.sandbox.paypal.com/checkoutnow?token=2463323E24235WQ 事务完成并重定向到新的URLhttps://example.com/return?token=2463323E24235WQ&PayerI

我正在实施v2 Express Checkout Paypal集成;它工作正常,但未完全完成交易(业务账户未收到付款)

  • 我正在沙盒上运行测试

  • 将生成令牌和订单ID

  • 我将给定的链接复制并粘贴到URL栏中,然后按enter键继续完成事务<代码>https://www.sandbox.paypal.com/checkoutnow?token=2463323E24235WQ

  • 事务完成并重定向到新的URL
    https://example.com/return?token=2463323E24235WQ&PayerID=UEJ2NE9233DS5W

  • 一切似乎都很好,但是当我来检查沙箱业务帐户的通知(付款应该在其中进行)时,它没有显示任何付款

    一切似乎都相应地安排好了,但付款并没有进入我的账户

    交易完成

    不,错了;买方同意付款。没有交易

    在买方返回时创建交易,例如
    https://example.com/return?token=2463323E24235WQ&PayerID=UEJ2NE9233DS5W
    ,您必须显示订单审核页面,并使用适当的API调用捕获订单


    如果您想立即捕获订单(跳过订单审查页面的显示),您可以在初始订单设置中指定这一点,以便买家点击“继续”按钮返回您的站点,而不是显示“立即付款”。

    谢谢,但让我看看我是否理解。假设我已经显示了一个订单审查页面,用户点击“继续付款”按钮,然后,将生成付款订单,并将其信息保存在数据库中;用户将被重定向到此示例URL
    https://example.com/return?token=2463323E24235WQ&PayerID=UEJ2NE9233DS5W
    之后(交易完成的地方),对吗?您需要告诉PayPal将最后一个按钮改为“立即付款”,而不是继续。当用户到达该URL时,您需要立即执行API调用以捕获订单。如果失败,您需要告诉用户这一点。但实际上,还有一个更好的问题——为什么要使用重定向?不要使用重定向。根本不要使用任何重定向。重定向对于现代网站来说是一种可怕的体验。相反,在后台加载站点并在上下文窗口中显示。这里是您需要的前端代码:嗯,老实说,我以前从未做过集成(与我无关),所以我从基础开始。我正在使用文件
    OrdersCreateTest.php
    直接创建付款订单(用于测试目的)。此订单为我提供订单ID和结帐URL,例如:
    https://www.sandbox.paypal.com/checkoutnow?token=02H52232KS42123
    ,等等。当我访问结帐URL时,它会显示付款方式、总额和项目说明,然后我选择付款方式并单击“付款”它将我重定向到
    https://example.com/return?token=02H52232KS42123&PayerID=R2F3233233DS5W
    。好吧,默认情况下,它可能会说Pay vs.Continue,但无论哪种方式,在重定向回您的站点后,您都需要通过API捕获它。这就是所有PayPal checkout API的工作方式。更重要的是,使用JSSDK获取订单ID并显示一个窗口,这样就不必重定向。