【问题标题】:Rails listener Paypal IPN always return INVALIDRails 监听器 Paypal IPN 总是返回 INVALID
【发布时间】:2016-04-26 18:01:43
【问题描述】:

我已经为我的 IPN 构建了一个监听器。我可以通过 IPN Simulator 接收请求,并且所有参数都是正确的,但是当我将其发送回 link for sending my request to make validations 时,它总是会返回 INVALID。

我尝试将我的 PayPal 帐户的编码更改为 UTF-8,但没有成功。

我没有为此使用任何 gem,我对此并不期待。

class PaymentNotificationController [:create] #否则来自 PayPal 的请求不会发送到控制器 定义创建 响应 = validate_IPN_notification(request.raw_post) 个案回应 当“验证” P'工作' 当“无效” p'没用' 别的 结尾 渲染 :nothing => true, :status => 200, :content_type => 'text/html' 结尾 受保护 def validate_IPN_notification(原始) uri = URI.parse('https://www.sandbox.paypal.com/cgi-bin/webscr?cmd=_notify-validate') #uri = URI.parse('https://www.paypal.com/cgi-bin/webscr?cmd=_notify-validate') http = Net::HTTP.new(uri.host, uri.port) http.open_timeout = 60 http.read_timeout = 60 http.verify_mode = OpenSSL::SSL::VERIFY_NONE http.use_ssl = 真 响应 = http.post(uri.request_uri, raw, '内容长度' => "#{raw.size}", 'User-Agent' => "我的自定义用户代理" )。身体 结尾 结尾

请帮帮我,我整个下午都被它困住了,无法弄清楚。

【问题讨论】:

    标签: ruby-on-rails ruby paypal paypal-ipn paypal-sandbox


    【解决方案1】:

    我认为你的问题是not follow exactly what papal requires

    来自Paypal document

    您的侦听器 HTTP 将完整的、未更改的消息发送回 PayPal。

    注意此消息必须包含与来自 PayPal 的原始 IPN 相同的字段,以相同的顺序,都以 cmd=_notify-validate 开头。此外,此消息必须使用与原始消息相同的编码。

    所以你validate function 会是:

    def validate_IPN_notification(ipn_url)
      validate_url = "#{ipn_url}?cmd=_notify-validate"
      # Post validate_url
      ...
    end
    

    注意ipn_url是IPN的同一个url

    【讨论】:

    【解决方案2】:

    原来是 Windows 问题,我不知道如何解决。

    我在我的 Ubuntu 15 上尝试了同样的方法,它运行良好。

    【讨论】:

    • 您能解释一下问题所在吗?否则这对任何人都没有帮助
    猜你喜欢
    • 2016-03-12
    • 2016-10-10
    • 2012-07-29
    • 2016-06-29
    • 1970-01-01
    • 1970-01-01
    • 2013-08-07
    • 2015-12-21
    • 2016-09-27
    相关资源
    最近更新 更多