1

我在一个市场(买家和卖家)工作,中间人从每次购买中分一杯羹。我想让买家在购买按钮被重定向到 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 验证交易。我确实收到了贝宝回调,但我不清楚应该返回什么?

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),而在贝宝文档中,流程被描述为(https://www.x.com/developers/paypal/documentation-tools/ipn/integration-guide/IPNIntro#protocol_and_arch ):

IPN 协议由三个步骤组成:

  1. PayPal 向您的 IPN 侦听器发送一条消息,通知您该事件

  2. 您的听众将完整的未更改消息发送回 PayPal;消息必须以相同的顺序包含相同的字段,并以与原始消息相同的方式进行编码

  3. PayPal 会返回一个单词,如果消息来自 PayPal,则为 VERIFIED,如果与最初发送的消息有任何差异,则为 INVALID

我的问题是如何将完整的未更改消息返回给 PayPal,或者我对流程的理解缺失/错误?

4

1 回答 1

1

您是在发回https://sandbox.paypal.com/还是https://www.sandbox.paypal.com/cgi-bin/webscr(或者包括“cmd=_notify-validate 作为 POST 数据的一部分,或者包括通过 GET)?

前者返回 HTTP 301,因为您基本上直接指向主页,而后者将直接指向托管 IPN 验证逻辑的页面。

于 2013-05-01T10:27:10.000 回答