我目前正在使用PayPal在线支付系统开发应用程序,而PayPal IPN消息系统在完成交易后无法正常工作。
我通过“智能付款按钮”(https://developer.paypal.com/docs/checkout/#)实施了“ PayPal Checkout”。我创建了一个PayPal沙箱业务帐户,通过我的应用程序登录时可以使用该帐户进行测试。使用此帐户进行测试时,我从贝宝(PayPal)获取所需的数据(订单ID,金额,帐户的用户名等),然后将其插入数据库中。到目前为止,一切正常,但是我需要确认一下(以确保网页由于某种原因冻结或关闭),当用户通过PayPal付款时,数据库中的数据已正确更新。
我决定实施PayPal IPN(即时付款通知),该系统是一个消息系统,用于通知您与PayPal交易(https://developer.paypal.com/docs/classic/ipn/integration-guide/IPNIntro/)有关的事件。我使用了提供的示例代码,并对其进行了修改以适合我的应用程序(https://github.com/paypal/ipn-code-samples/blob/master/C%23/paypal_ipn_mvc_core.cs)。我使用了Postman应用程序,并将示例IPN消息(https://developer.paypal.com/docs/classic/ipn/integration-guide/IPNIntro/#ipn-protocol-and-architecture)发送到了我的IPN侦听器,并且该IPN消息有效。对于最后一步,我使用本地代码在开发环境中进行了发布,并使用Postman对其进行了测试,并且可以正常工作。现在,问题就从这里开始了,我使用PayPal按钮用先前创建的沙箱帐户进行交易,但是我没有从PayPal接收IPN。我还使用IPN模拟器(https://developer.paypal.com/developer/ipnSimulator/)从PayPal发送消息,并且在PayPal网站上显示了“已发送IPN并且握手已验证”的信息,但是数据库中的数据未更新。当我在PayPal网站上查看IPN历史记录以检查某个时间是否发送过IPN时,它是空的(发送时没有IPN消息)。我的应用程序现在所在的开发环境位于Azure门户中。