Paypal 自适应支付 IPN 回调:如何返回完整未更改的 ipn 消息
Posted
技术标签:
【中文标题】Paypal 自适应支付 IPN 回调:如何返回完整未更改的 ipn 消息【英文标题】:Paypal adaptive payments IPN callback: how to return the complete unaltered ipn message 【发布时间】:2013-04-23 14:17:09 【问题描述】:我在市场(买家和卖家)工作,中间人从每次购买中分得一杯羹。我想让买家在购买按钮被重定向到 Paypal 后立即购买商品。这很好并且有效。
response = ADAPTIVE_GATEWAY.setup_purchase(
:return_url => 'return_url',
:cancel_url => 'cancel_url',
:ipn_notification_url => 'ipn_notification_url',
:receiver_list => recipients,
)
# ADAPTIVE_GATEWAY.set_payment_options(...)
redirect_to (ADAPTIVE_GATEWAY.redirect_url_for(response['payKey']))
下一步是使用 ipn 验证交易。我确实收到了 paypal 回调,但我不清楚应该返回什么?
def notify_cb
notify = ActiveMerchant::Billing::Integrations::PaypalAdaptivePayment::Notification.new(request.raw_post)
if notify.acknowledge
update_attributes(
:transaction_id => notify.transaction_id,
:status => notify.status
)
end
render :nothing => true # render nothing?!? RENDER_LINE
end
此处关于 SO 的大多数示例都没有渲染 (RENDER_LINE),而在 paypal 文档中,流程被描述为 (https://www.x.com/developers/paypal/documentation-tools/ipn/integration-guide/IPNIntro#protocol_and_arch):
IPN 协议由三个步骤组成:
PayPal 向您的 IPN 侦听器发送一条消息,通知您该事件
您的听众将完整的未更改消息发送回 PayPal;消息必须以相同的顺序包含相同的字段,并以与原始消息相同的方式进行编码
PayPal 回送一个字,如果消息来自 PayPal,则该字已验证;如果与最初发送的内容有任何差异,则该字为无效
我的问题是如何将完整的未更改消息返回给 PayPal,或者我对流程的理解缺失/错误?
【问题讨论】:
【参考方案1】:您是要回帖到https://sandbox.paypal.com/ 或https://www.sandbox.paypal.com/cgi-bin/webscr(或者包括“cmd=_notify-validate 作为 POST 数据的一部分,或者通过 GET 包括在内)?
前者返回 HTTP 301,因为您基本上是直接指向主页,而后者将直接指向托管 IPN 验证逻辑的页面。
【讨论】:
感谢 Robert 并深入研究 SO 和 Paypal 文档=_notify-validate 到最后帮助我得到了 INVALID/VERIFIED 3。根据activemerchant.rubyforge.org/classes/ActiveMerchant/Billing/…notify.acknowledge 实际上是向贝宝发帖以上是关于Paypal 自适应支付 IPN 回调:如何返回完整未更改的 ipn 消息的主要内容,如果未能解决你的问题,请参考以下文章