使用 activemerchant 和 ipn 的 Paypal 快速结帐

Posted

技术标签:

【中文标题】使用 activemerchant 和 ipn 的 Paypal 快速结帐【英文标题】:Paypal express checkout using activemerchant and ipn 【发布时间】:2013-10-14 08:39:08 【问题描述】:

我无法让 activemerchants paypal express ipn 通知正常工作。

我的工作流程如下所示:

# authorize the payment user gets redirected..
def auth
  ...
  gateway.setup_authorization(total_as_cents, setup_authorization_params)
  ...
end

# purchase the authorized sum
def purchase
  ...
  purchase_params = 
    token: @order.payment_params[:token],
    payer_id: @order.payment_params[:payer_id],
    currency: current_tenant.currency.unit,
    notify_url: paypal_ipn_callback_url
  
  response = gateway.purchase(total_as_cents, purchase_params)
  ...
end

在 paypal 文档中,它说 notify_url 已被弃用,他们使用 PAYMENTREQUEST_n_NOTIFYURL 代替。但我不知道如何告诉这个我的贝宝快递网关。

我的 ipn 回调没有被调用,所以我认为 notifyurl 参数不再起作用。 Paypal 处于沙盒模式,但这应该没什么区别吧?

有什么提示吗?

【问题讨论】:

【参考方案1】:

我相信,如果您使用的是 Paypal Express,这意味着您正在与您的系统进行深度集成,并且您不需要 IPN,您可以获得来自

的响应
response = gateway.purchase(total_as_cents, purchase_params)

并从中获取所有信息,该响应是一个对象

ActiveMerchant::Billing::PaypalExpressResponse

IPN 用于基本的 Paypal 集成,没有来自您的应用程序的 API 调用,只有带有参数的 Paypal URL 重定向。

【讨论】:

仅当您只接受即时付款时才适用。例如,如果响应是“待处理”,则只能使用 paypal ipn 接收完成时的通知或定期使用 paypal 检查。请注意,当有货币转换时,它可能会返回待处理。

以上是关于使用 activemerchant 和 ipn 的 Paypal 快速结帐的主要内容,如果未能解决你的问题,请参考以下文章

带有 ActiveMerchant 和 Rails 3 的信用卡表格

fields_for、formtastic、ActiveMerchant 和验证错误

ActiveMerchant 集成使用示例?

使用 ActiveMerchant 和 PayPal 在实时网站上接受虚拟信用卡

ActiveMerchant:买家账户余额不会减少

使用 activemerchant 保存付款以备后用