Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ssis/2.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/322.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的Apple网上支付商户会话_Ruby_Applepay - Fatal编程技术网

使用ruby的Apple网上支付商户会话

使用ruby的Apple网上支付商户会话,ruby,applepay,Ruby,Applepay,我似乎无法让商家会话验证与Ruby一起工作。尝试了HttpParty和RestClient,我得到: OpenSSL::SSL::SSLError(SSL\u connect返回=1 errno=0 state=SSLv3读取完成:SSLv3警报证书已过期): 我在这个节点服务器示例中尝试了相同的证书,它工作得很好,所以它一定是我的ruby代码中的内容 有人设法让它工作了吗?我也遇到了同样的问题。借助于您引用的示例和在的实现(另请参阅关于在的实现的讨论),我能够使其正常工作 对我来说,密钥是按照

我似乎无法让商家会话验证与Ruby一起工作。尝试了HttpParty和RestClient,我得到:

OpenSSL::SSL::SSLError(SSL\u connect返回=1 errno=0 state=SSLv3读取完成:SSLv3警报证书已过期):

我在这个节点服务器示例中尝试了相同的证书,它工作得很好,所以它一定是我的ruby代码中的内容


有人设法让它工作了吗?

我也遇到了同样的问题。借助于您引用的示例和在的实现(另请参阅关于在的实现的讨论),我能够使其正常工作

对我来说,密钥是按照苹果提供的方式传递正确的证书(Apple Pay商户身份证书),并获得证书密钥,如下所示:

一旦您从苹果获得商户ID(会话)证书,通过双击将其导入Mac上的keychain.app,右键单击keychain中的证书,并将组合的私钥和证书导出为.p12文件,然后在终端中:-

openssl pkcs12 -in your_merchant_identity_cert_name.p12 -out ApplePay.key.pem -nocerts -nodes
在将Apple的Apple Pay商户识别证书和
ApplePay.key.pem
文件的内容添加到环境变量后,我能够使用Ruby的Net::HTTP类构造以下请求

class YourControllerName < ApplicationController

  def apple_pay_validation
    respond_to do |format|
      format.json { render json: start_apple_session(params[:url]) } if params[:url].include?('apple.com')
    end
  end

  private

  def start_apple_session(url)
    uri = URI.parse(url) # the url from event.validationURL
    data = {'merchantIdentifier' => "merchant.com.your_site_name", 'domainName' => "your_doamin", 'displayName' => "your_company_name"}
    pem = File.read('path/to/your/merchant_id.cer')
    key = ENV['APPLE_PAY_MERCHANT_ID_ KEY']
    passphrase = 'passphrase set up when exporting certificate in keychain' # Should be an environment variable
    http = Net::HTTP.new(uri.host, uri.port)
    http.use_ssl = true
    http.ssl_version = :TLSv1_2
    http.ciphers = ['ECDHE-RSA-AES128-GCM-SHA256']
    http.cert = OpenSSL::X509::Certificate.new(pem)
    http.key = OpenSSL::PKey::RSA.new(key, passphrase)
    http.verify_mode = OpenSSL::SSL::VERIFY_PEER
    request = Net::HTTP::Post.new(uri.request_uri, 'Content-Type' => 'application/json')
    request.body = data.to_json
    response = http.request(request)
    response.body
  end

end

希望这有助于节省一些时间和白发

我也有同样的问题。借助于您引用的示例和在的实现(另请参阅关于在的实现的讨论),我能够使其正常工作

对我来说,密钥是按照苹果提供的方式传递正确的证书(Apple Pay商户身份证书),并获得证书密钥,如下所示:

一旦您从苹果获得商户ID(会话)证书,通过双击将其导入Mac上的keychain.app,右键单击keychain中的证书,并将组合的私钥和证书导出为.p12文件,然后在终端中:-

openssl pkcs12 -in your_merchant_identity_cert_name.p12 -out ApplePay.key.pem -nocerts -nodes
在将Apple的Apple Pay商户识别证书和
ApplePay.key.pem
文件的内容添加到环境变量后,我能够使用Ruby的Net::HTTP类构造以下请求

class YourControllerName < ApplicationController

  def apple_pay_validation
    respond_to do |format|
      format.json { render json: start_apple_session(params[:url]) } if params[:url].include?('apple.com')
    end
  end

  private

  def start_apple_session(url)
    uri = URI.parse(url) # the url from event.validationURL
    data = {'merchantIdentifier' => "merchant.com.your_site_name", 'domainName' => "your_doamin", 'displayName' => "your_company_name"}
    pem = File.read('path/to/your/merchant_id.cer')
    key = ENV['APPLE_PAY_MERCHANT_ID_ KEY']
    passphrase = 'passphrase set up when exporting certificate in keychain' # Should be an environment variable
    http = Net::HTTP.new(uri.host, uri.port)
    http.use_ssl = true
    http.ssl_version = :TLSv1_2
    http.ciphers = ['ECDHE-RSA-AES128-GCM-SHA256']
    http.cert = OpenSSL::X509::Certificate.new(pem)
    http.key = OpenSSL::PKey::RSA.new(key, passphrase)
    http.verify_mode = OpenSSL::SSL::VERIFY_PEER
    request = Net::HTTP::Post.new(uri.request_uri, 'Content-Type' => 'application/json')
    request.body = data.to_json
    response = http.request(request)
    response.body
  end

end
希望这有助于节省一些时间和白发