Skip to content

Instantly share code, notes, and snippets.

mkdir certs
cd certs
openssl genrsa -out app_key.pem 1024
openssl req -new -key app_key.pem -x509 -days 365 -out app_cert.pem
<% payment_service_for @order_id, @seller_account_email,
:amount => @total_price,
:currency => @currency,
:service => 'paypal',
:html => { :id => 'my-form' } do |service| %>
<% service.customer :first_name => @customer.first_name,
:last_name => @customer.last_name,
:phone => @customer.phone,
:email => @customer.email %>
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
#Encrypt the transaction information
cert_id =YAML.load(File.open("#{RAILS_ROOT}/config/paypal.yml"))[ENV["RAILS_ENV"]]['paypal']['cert_id']
paypal_params = {:cert_id=&gt;cert_id}
service.form_fields.collect do |field, value|
paypal_params.merge!({field=&gt;value})
end
result << hidden_field_tag(:cmd, "_s-xclick")
result << "\n"
result << hidden_field_tag(:encrypted, encrypt_for_paypal(paypal_params))
# result << service.form_fields.collect do |field, value|
development:
paypal:
login:
password:
signature:
cert_id :
paypal_standard:
email:
password:
@aquajach
aquajach / gist:666017
Created November 7, 2010 09:24
database yaml
development:
adapter: mysql2
host: 192.168.00.01
database: project
username: project
password: xxxxxx
# socket: /var/mysql/mysql.sock
pool: 5
timeout: 5000
@aquajach
aquajach / gist:666021
Created November 7, 2010 09:33
REXML example
xml = File.read('timeline.xml')
puts Benchmark.measure {
doc, statuses = REXML::Document.new(xml), []
doc.elements.each('statuses/status') do |s|
h = {:user => {}}
%w[created_at id text source truncated in_reply_to_status_id in_reply_to_user_id favorited].each do |a|
h[a.intern] = s.elements[a].text
end
%w[id name screen_name location description profile_image_url url protected followers_count].each do |a|
h[:user][a.intern] = s.elements['user'].elements[a].text
XML:
<watchlist>
<id type="integer">287</id>
<last-updated type="datetime">2007-10-22T13:05:27-04:00</last-updated>
<name>macromedia</name>
</watchlist>
<watchlist>
<id type="integer">288</id>
<last-updated type="datetime">2007-10-22T13:05:29-04:00</last-updated>
@aquajach
aquajach / gist:716922
Created November 26, 2010 16:28
Parse YAML
DB_CONFIG = YAML.load_file(“#{RAILS_ROOT}/config/database.yml”)[RAILS_ENV]
p DB_CONFIG['host'] # 192.168.0.1
p DB_CONFIG['username'] # project
p DB_CONFIG['password'] # xxxxxx