Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/64.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails Railscast 143(贝宝安全)导致;我们无法解密证书id。”;_Ruby On Rails_Paypal_Railscasts - Fatal编程技术网

Ruby on rails Railscast 143(贝宝安全)导致;我们无法解密证书id。”;

Ruby on rails Railscast 143(贝宝安全)导致;我们无法解密证书id。”;,ruby-on-rails,paypal,railscasts,Ruby On Rails,Paypal,Railscasts,正在做铁路统计143。代码如下。当我添加安全性内容时,我在开发中得到“我们无法解密证书id”。当我把安全设备拿出来的时候,它又能正常工作了。我已经用新的证书等重复了几次整个过程。不走运 下一步该怎么做? 我遇到的问题与这篇帖子中的问题完全相同,这篇帖子在制作过程中体验到了这一点,它神奇地开始工作: 在“购买这些”页面: 由于我们在paypal_encrypted method中加密了许多值,因此当在同一过程中发生某些加密错误时,可能会出现此错误 要确保问题不是由于加密错误造成的,最好的方法是尝

正在做铁路统计143。代码如下。当我添加安全性内容时,我在开发中得到“我们无法解密证书id”。当我把安全设备拿出来的时候,它又能正常工作了。我已经用新的证书等重复了几次整个过程。不走运

下一步该怎么做?

我遇到的问题与这篇帖子中的问题完全相同,这篇帖子在制作过程中体验到了这一点,它神奇地开始工作:

在“购买这些”页面:


由于我们在paypal_encrypted method中加密了许多值,因此当在同一过程中发生某些加密错误时,可能会出现此错误


要确保问题不是由于加密错误造成的,最好的方法是尝试从上述给定值散列中逐个删除密钥-值对,然后发出付款请求。

我将整个过程重复了几次,然后开始工作。在与下一个答案类似的过程中,还审查了每个值。不幸的是,每当我切换部署平台时,似乎都会遇到同样的问题。最后,它又开始工作了。

我遇到了同样的问题,但问题与
paypal\u cert.pem
文件,即paypal的证书文件有关

Paypal对暂存和实时环境使用不同的证书。请检查
paypal\u cert.pem
文件,您会看到第一行提到它应该用于的环境

我使用以下代码

paypal_cert_file_name = ENV["paypal_cert_file_name"] || "paypal_cert_prod";

PAYPAL_CERT_PEM = File.read("#{Rails.root}/certs/#{paypal_cert_file_name}.pem")

有两个文件
paypal\u cert\u prod.pem
paypal\u cert\u sandbox.pem
每个环境一个文件。

Railscast已经快三年了。您是否将这些说明与PayPal当前的API文档进行了比较?您是否考虑过使用一种可用的方法?谢谢您的建议!结果证明我可以让它工作,只是不可靠。谢谢!这是答案的一部分。
PAYPAL_CERT_PEM = File.read("#{Rails.root}/certs/paypal_cert.pem")
APP_CERT_PEM = File.read("#{Rails.root}/certs/app_cert.pem")
APP_KEY_PEM = File.read("#{Rails.root}/certs/app_key.pem")

def encrypt_for_paypal(values)
    signed = OpenSSL::PKCS7::sign(OpenSSL::X509::Certificate.new(APP_CERT_PEM), OpenSSL::PKey::RSA.new(APP_KEY_PEM, ''), values.map { |k, v| "#{k}=#{v}" }.join("\n"), [], OpenSSL::PKCS7::BINARY)
    OpenSSL::PKCS7::encrypt([OpenSSL::X509::Certificate.new(PAYPAL_CERT_PEM)], signed.to_der, OpenSSL::Cipher::Cipher::new("DES3"), OpenSSL::PKCS7::BINARY).to_s.gsub("\n", "")
end

def paypal_encrypted(return_url, notify_url)
  values = {
    :business => 'seller_1316654707_biz@myurl.com',
    :cmd => '_cart',
    :upload => 1,
    :return => return_url,
    :invoice => id,
    :notify_url => notify_url,
    :cert_id => 'DVFY6JS476MR8'
  }
things.each_with_index do |item, index|
    values.merge!({
      "amount_#{index+1}" => item.price,
      "item_name_#{index+1}" => item.id,
      "item_number_#{index+1}" => item.id,
      "quantity_#{index+1}" => 1
    })
  end
  encrypt_for_paypal(values)
end
paypal_cert_file_name = ENV["paypal_cert_file_name"] || "paypal_cert_prod";

PAYPAL_CERT_PEM = File.read("#{Rails.root}/certs/#{paypal_cert_file_name}.pem")