PayPal IPN 和 ASP.NET - 未正确处理包含 & 符号或版权符号的产品的 IPN 消息
Posted
技术标签:
【中文标题】PayPal IPN 和 ASP.NET - 未正确处理包含 & 符号或版权符号的产品的 IPN 消息【英文标题】:PayPal IPN and ASP.NET - IPN messages not properly processed for products containing ampersand or copyright symbols 【发布时间】:2011-08-09 20:34:53 【问题描述】:我们有几种 PDF 报告产品。我们为每个按钮创建 PayPal 立即购买按钮,并使用 PayPal IPN 在成功付款后通过电子邮件发送 PDF 报告。我们一直存在一些问题,即我们的 IPN Web 服务似乎无法处理某些订单,该服务只是一个 ASP.NET aspx 页面,并使用标准的 Request["paypal_key"] 参数处理。
我开始进行一些挖掘,似乎发现 IPN 网络服务无法处理在 PayPal 按钮中配置的产品名称包含 & 字符或版权符号的订单......可能还有其他,但仅此而已正是我到目前为止所观察到的。
PayPal 的商家服务会记录交易发生时发送的 IPN 消息。我今天查看了日志,寻找我们应该收到并处理的 IPN。这是 IPN,为保密而编辑:
mc_gross=99.00&protection_eligibility=不合格&payer_id=FZKLXR5FF6LMN&tax=0.00&payment_date=08:01:23 2011 年 4 月 20 日 PDT与PAYMENT_STATUS =完成和字符集=窗口1252&FIRST_NAME =山&mc_fee = 3.17&notify_version = 3.1&定制= payer_status =未经验证和业务=电子邮件@ email.com和数量= 1&verify_sign = AtiSwnZrh-0NXJaYKeFJ5mXp3NePA7jXOzMIt6S.rapcfeP2iL3He53H&PAYER_EMAIL =电子邮件@ email.com&CONTACT_PHONE = 555-555-5555与txn_id = 36P12783M6206263T&payment_type =即时与btn_id = 29294177&last_name=Plourde&receiver_email=email@email.com&payment_fee=3.17&shipping_discount=0.00&insurance_amount=0.00&receiver_id=STR4XMP3MUHLS&txn_type=web_accept&item_name=2010 产品名称与字符 报告©&discount=0.00&mc_currency=USD&item_number=85&residence_country=US&receipt_id=4921-6005-8542-0925&handling_amount=0.00&shipping_method=Default&transaction_subject=2010 产品名称与字符 报告©&payment_gross=99.00&shipping=0.00&ipn_track_id=b9bQ70Jiv82s3HRqBqLfpw
在进行一些测试后,如果创建的 PayPal 按钮没有与号或版权符号,我能够始终如一地重现 IPN 通知过程成功。我还打电话给 PayPal,他们确认他们不对产品名称进行编码,他们只是按原样通过电汇发送。
我们只是使用标准的 ASP.NET 请求处理来获取 IPN 值:
Request["receiver_email"]
Request["item_number"]
我想知道是否有其他人遇到过这个问题?我认为我们唯一的解决方案是重新创建所有 PayPal 按钮,并指定不包含与号或特殊字符的产品名称。我不确定是否可以正确解析 IPN 通知。但是很想知道其他人的经验,以及解析 IPN 消息的可能想法,以便我们可以继续允许 & 字符等。
谢谢 山
【问题讨论】:
【参考方案1】:UrlEncode 您的产品名称,或任何带有 & 符号/版权符号的内容。
【讨论】:
您是说在创建 PayPal 按钮时对产品名称进行 url 编码吗? PayPal 立即购买按钮是通过 PayPal 用户界面创建的。我想我们也许可以训练我们技术不那么熟练的最终用户来做到这一点。或者你是说在这个过程中还有一点可以对产品名称进行 url 编码?【参考方案2】:要跟进这个问题...我能想出的唯一解决方案是从我们的产品名称中删除 & 字符。版权符号似乎也导致了 IPN 处理问题。因此,我们现在在 PayPal 中保留我们的产品名称,而不使用特殊符号。
我希望我们不必这样做,即我们所有使用 PayPal 按钮指定的产品名称都可以有任何编码。但是,这是一个解决方案。
【讨论】:
【参考方案3】:尝试按照此处所述设置 IPN 编码(第 5 步):
http://support.getdpd.com/entries/167722-paypal-account-setup-troubleshooting
【讨论】:
能否列出链接中描述的步骤。以上是关于PayPal IPN 和 ASP.NET - 未正确处理包含 & 符号或版权符号的产品的 IPN 消息的主要内容,如果未能解决你的问题,请参考以下文章
PayPal 即时付款通知 (IPN) 无法正常工作 ASP.NET C#
PayPal IPN 通知验证正在返回 ASP.NET 的沙盒登录 HTML