1

我正在一個市場(買家和賣家)工作,中間人得到每一次購買的削減。我想讓買家在購買按鈕被重定向到PayPal後立即購買商品。這很好,工作。貝寶自適應支付IPN回調:如何返回完整的未改變的ipn消息

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協議包括三個步驟:

  1. 貝寶向您的IPN監聽器發送一條消息,通知您該事件

  2. 您的監聽器發送完整的不變ed消息返回給PayPal;該消息必須包含相同順序的相同字段並以與原始消息相同的方式進行編碼

  3. PayPal發回一個單詞,如果消息始於PayPal,則返回驗證字,如果有,則返回INVALID什麼最初發送

我的問題的差異是如何返回完整不變的消息回到貝寶或者我丟失/錯誤被我流的理解?

回答

1

您是否重新發布到https://sandbox.paypal.com/https://www.sandbox.paypal.com/cgi-bin/webscr(包括「cmd = _notify-validate作爲POST數據的一部分,還是通過GET包含)?

前者返回HTTP 301,因爲您基本上直接指向主頁,而後者則直接指向承載IPN驗證邏輯的頁面。

+0

感謝Robert和周圍的SO和Paypal文檔挖掘應該指出並最終導致解決方案的幾個錯誤: 1.在我的情況下張貼正確的網址是https://www.sandbox.paypal。 com/cgi-bin/webscr 2.將cmd = _notify-validate添加到最終幫助我獲得了無效/已驗證 3.根據http://activemerchant.rubyforge.org/classes/ActiveMerchant/Billing/Integrations/ Paypal/Notification.html#M000064 notify.acknowledge實際上發佈到paypal – 2013-05-02 22:37:16