【问题标题】:Can't get PayPal checkout errors when insufficient funds资金不足时无法收到 PayPal 结帐错误
【发布时间】:2013-12-30 06:19:10
【问题描述】:

我无法理解 PayPal 支付响应错误或至少是警告。我是澳大利亚开发者(至少我位于澳大利亚并使用澳元作为货币)。

您能否告诉我为什么如果沙盒用户资金不足,交易对付款请求有肯定(有效)响应?

所以我有一个 买家 的 user_A 和一个卖家用户。 user_A 有 0AUD 并进行了 20AUD 的定期付款交易,并且响应成功???为什么?

如何得知用户没有足够的资金进行交易?

 gem: paypal-recurring
 rails: 3.2.14
 location: Australia

====== 用于重定向到结帐 url 的控制器操作

ppl = PayPal::Recurring.new(
  return_url: paypal_confirm_url(:plan_id => params[:plan_id], :user_id => current_user.id),
  cancel_url: paypal_no_checkout_url,
  description: "Starter",
  amount: 15,
  currency: "AUD"
)
response = ppl.checkout
if response.valid?
  redirect_to response.checkout_url
else
  redirect_to :back
end    

==== 确认后控制器动作

ppr = PayPal::Recurring.new(
  token: params[:token],
  payer_id: params[:PayerID],
  description: plan.name,
  amount: plan.value,
  currency: "AUD",
  period: :monthly,
  start_at: Time.zone.now,
  frequency: 1
)
response = ppr.request_payment
if response.errors.any?
  flash.keep[:error] = "Something went wrong please contact paypal or ask our development team: team.grapple1@gmail.com"
  return false
end

response = ppr.create_recurring_profile

paypal_recurring_profile_token = response.profile_id # response.profile_id = nil????
save!

【问题讨论】:

    标签: ruby-on-rails-3 paypal


    【解决方案1】:

    所有 PayPal 沙盒账户都有一个虚拟银行账户,附带无限资金。因此,当 PayPal 帐户有 0 美元时,它只是从那个“银行”中提取。要发生资金不足错误,您需要以某种方式打开负面测试,尽管我认为这会根据触发 AMT 变量产生错误。对于经典 API,我建议只让您的代码查找包含 Success 的 ACK 响应并将其余部分视为异常(也许打印出 RESPMSG 作为客户通知,尽管有时您希望用自己的错误消息替换它)

    【讨论】:

    • ACK 无论如何都会返回成功
    • 显然,成功时总是如此。重点是编写代码来验证这一点并将任何其他条件作为异常处理。
    猜你喜欢
    • 2014-05-29
    • 2015-10-07
    • 2014-01-24
    • 2017-08-15
    • 2018-05-03
    • 2016-01-03
    • 1970-01-01
    • 2015-11-30
    • 2017-03-21
    相关资源
    最近更新 更多