module JdPay::Sign
Constants
- JDPAY_RSA_PUBLIC_KEY
Public Class Methods
md5_sign(order_id, options = {})
click to toggle source
params:
:orderId
# File lib/jd_pay/sign.rb, line 19 def md5_sign(order_id, options = {}) Digest::MD5.hexdigest( "merchant=#{options[:mch_id] || JdPay.mch_id}" + "&orderId=#{order_id}&key=#{options[:md5_key] || JdPay.md5_key}" ) end
rsa_decrypt(sign_str, options = {})
click to toggle source
# File lib/jd_pay/sign.rb, line 31 def rsa_decrypt(sign_str, options = {}) public_key = OpenSSL::PKey::RSA.new(options[:pub_key] || JdPay.public_key) public_key.public_decrypt(Base64.decode64(sign_str)) end
rsa_encrypt(str, options = {})
click to toggle source
# File lib/jd_pay/sign.rb, line 26 def rsa_encrypt(str, options = {}) private_key = OpenSSL::PKey::RSA.new(options[:pri_key] || JdPay.pri_key) Base64.strict_encode64(private_key.private_encrypt Digest::SHA256.hexdigest(str)) end
rsa_verify?(params, options = {})
click to toggle source
# File lib/jd_pay/sign.rb, line 36 def rsa_verify?(params, options = {}) params = params['jdpay'].dup sign_str = params.delete('sign') xml_without_sign = JdPay::Util.to_xml(params, root: 'jdpay') ori_datas = [xml_without_sign, xml_without_sign.gsub("?>", " ?>")].map do |xml| Digest::SHA256.hexdigest(xml) end ori_datas.include? rsa_decrypt(sign_str, options) end