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

Posted

技术标签:

【中文标题】我可以在本地主机(ASP.NET Web 窗体)下测试我的 IPN 侦听器 VB.NET 代码吗?【英文标题】:Can I test my IPN listener VB.NET code under localhost (ASP.NET Web Forms)? 【发布时间】:2021-11-15 04:06:00 【问题描述】:

PayPal IPN Testing 页面的“本地开发测试”部分暗示可以通过 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>

【问题讨论】:

【参考方案1】:

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

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

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


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

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

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

【讨论】:

您好 Preston,感谢您抽出宝贵时间回答我的问题。我必须承认,我对表单操作显然需要访问不打算供用户查看的处理程序页面感到困惑。尝试使用 URL localhost:44390/PayPal/IPNHandler.aspx.vb 似乎永远不会奏效。使用 php(我对此一无所知)时可能情况有所不同,这是 PayPal 的原始示例 IPN 消息所假设的。 仅用于模拟/测试目的。通过提交测试表单,您正在模拟 PayPal 向您的 IPN 通知/侦听器 URL 发送的消息。 我最好的建议仍然是不要将 IPN 用于任何事情并切换到当前的 PayPal Checkout 集成(请参阅上面的设置标准付款指南) 我的目标是使用 IPN,因为这对我来说是 2008 年成功运行多年的网站。我最近的搜索还表明 IPN 仍然是推荐的解决方案。但是,我现在将仔细研究您提到的替代方案。 您的第二个 PayPal 链接似乎取决于我为 PayPal Commerce 平台付费。我正在为一个小型非营利组织开发一个网站,以便更容易支付会员费。我需要一个免费的解决方案。

以上是关于我可以在本地主机(ASP.NET Web 窗体)下测试我的 IPN 侦听器 VB.NET 代码吗?的主要内容,如果未能解决你的问题,请参考以下文章

如何在本地安装 ASP.NET Web 表单项目?

VS2019为啥asp. net里面没有web窗体?

ASP.NET Web 窗体:母版页和 CSS 文件 [关闭]

asp.net web应用程序和asp.net web窗体应用程序的区别?

如何在 ASP.NET Web 窗体环境中使用 DLL?

添加 FriendlyUrls 时,jQuery ajax 调用不适用于 ASP.Net Web 窗体