首页 > 解决方案 > 我可以在本地主机(ASP.NET Web 窗体)下测试我的 IPN 侦听器 VB.NET 代码吗?

问题描述

PayPal 的IPN 测试页面的“本地开发测试”部分暗示可以通过 localhost 测试您的 IPN 侦听器代码,使用测试页面模拟来自 PayPal 的消息。

我的 TestIPN.aspx 页面包含以下标记,它似乎遵循 PayPal 提供的示例,但是当我在 Firefox 中在 localhost 下(通过 Visual Studio 2019)打开它并单击提交查询按钮时,我收到“找不到文件”错误对于 https://localhost:44390/PayPal/IPNHandler.aspx.vb。

不用说,IPNHandler.aspx.vb确实存在于我的 PayPal 文件夹中(在我的测试页面的表单标签中使用“PayPal/IPNHandler.aspx”没有区别)。当我在我的实时站点上运行它时,我也会遇到同样的错误。

任何有关如何调试此问题的指导将不胜感激。

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title>Test IPN message</title>
</head>
<body>
 <!--
 <form target="_new" method="post" action="https://www.YourDomain.com/Path/YourIPNHandler.php">    
 -->
    <form target="_new" method="post" action="PayPal/IPNHandler.aspx.vb">
      <input type="hidden" name="receiver_email" value="admin%40mysite.co.uk"/>
      <input type="hidden" name="business" value="admin%40mysite.co.uk"/>
      <input type="hidden" name="first_name" value="Fred"/>
      <input type="hidden" name="last_name" value="Bloggs"/>
      <input type="hidden" name="payer_email" value="fred.bloggs%40gmail.com"/>
      <input type="hidden" name="address_city" value="Southampton"/>
      <input type="hidden" name="payment_type" value="instant"/>
      <input type="hidden" name="payment_date" value="19:54:19 Apr 12, 2021 GMT"/>
      <input type="hidden" name="payment_status" value="Completed"/>
      <input type="hidden" name="mc_currency" value="GBP"/>
      <input type="hidden" name="mc_gross" value="5.00"/>
      <input type="hidden" name="custom" value="25"/>

      <input type="submit"/>

    </form>
</body>
</html>

标签: paypal-ipn

解决方案


我收到 https://localhost:44390/PayPal/IPNHandler.aspx.vb 的“找不到文件”错误

那是正确的端口吗?如果你 https://localhost:44390/PayPal/IPNHandler.aspx.vb输入 URL 栏会发生什么?使用适用于本地主机上的处理程序的 URL,它不会返回 404。action相应地设置。

考虑使用https://ngrok.com之类的东西进行测试。


你为什么还要集成IPN?它已经有 20 年左右的历史了,您应该使用的当前 PayPal Checkout 集成不需要它......

按照设置标准付款指南并在您的服务器上创建 2 条路线,一条用于“创建订单”,一条用于“捕获订单”,记录在此处。两个路由都应该只返回 JSON 数据(没有 HTML 或文本)。在第二条路线中,当捕获 API 成功时,您应该将其生成的付款详细信息存储在您的数据库中(特别是 PayPal 交易 ID)并在转发之前purchase_units[0].payments.captures[0].id立即执行任何必要的业务逻辑(例如发送确认电子邮件或预订产品)您将 JSON 返回给前端调用者。

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


推荐阅读