Я встроил PayPal в свою электронную коммерцию, используя ruby on rails, но он всегда перенаправлялся на старый интерфейс PayPal вместо последнего интерфейса.вот старый интерфейс, который я упомянул:
вот примерно мой код.Как только нажата кнопка создания заявки, мой контроллер заказов будет перенаправлен на зашифрованную ссылку PayPal.
order_controller.rb
def create
redirect_to @order.paypal_url(root_url, shipping_fees, payment_notification_url)
в моей модели заказа, зашифрованная ссылкакод как показано ниже:
order.rb
def paypal_url(return_url, shipping_fees, notify_url)
encrypted = {
:cmd => "_s-xclick",
:encrypted => self.encrypt_for_paypal(return_url, shipping_fees, notify_url),
}
"https://www.paypal.com/cgi-bin/webscr?" + encrypted.to_query
end
def encrypt_for_paypal(return_url, shipping_fees, notify_url)
#def paypal_url(return_url, shipping_fees, notify_url)
values = {
:business => 'cxxx@hotmail.com',
:cmd => '_cart',
:upload => 1,
:currency_code => 'MYR',
:return => return_url,
:invoice => self.number,
:notify_url => notify_url,
:cert_id => "XXX",
}
line_items.each_with_index do |item, index|
values.merge!({
"amount_#{index+1}" => item.final_price,
"item_name_#{index+1}" => Product.where(id: item.variant.product_id).pluck(:title),
"item_number_#{index+1}" => item.variant.SKU,
"quantity_#{index+1}" => item.quantity,
"shipping_1" => shipping_fees
})
end
encrypted_paypal(values)
end
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 encrypted_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
пожалуйста, сообщите, потому что я где-то читал, мне нужно вставить: method => POST к ссылке, но я не уверенкак.большое спасибо