Module: JdPay::Sign
- Defined in:
- lib/jd_pay/sign.rb
Constant Summary collapse
- JDPAY_RSA_PUBLIC_KEY =
<<EOF -----BEGIN PUBLIC KEY----- MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCKE5N2xm3NIrXON8Zj19GNtLZ8 xwEQ6uDIyrS3S03UhgBJMkGl4msfq4Xuxv6XUAN7oU1XhV3/xtabr9rXto4Ke3d6 WwNbxwXnK5LSgsQc1BhT5NcXHXpGBdt7P8NMez5qGieOKqHGvT0qvjyYnYA29a8Z 4wzNR7vAVHp36uD5RwIDAQAB -----END PUBLIC KEY----- EOF
Class Method Summary collapse
-
.md5_sign(order_id, options = {}) ⇒ Object
params: :orderId.
- .rsa_decrypt(sign_str, options = {}) ⇒ Object
- .rsa_encrypt(str, options = {}) ⇒ Object
- .rsa_verify?(params, options = {}) ⇒ Boolean
Class Method Details
.md5_sign(order_id, options = {}) ⇒ Object
params:
:orderId
19 20 21 22 23 24 |
# File 'lib/jd_pay/sign.rb', line 19 def md5_sign(order_id, = {}) Digest::MD5.hexdigest( "merchant=#{[:mch_id] || JdPay.mch_id}" + "&orderId=#{order_id}&key=#{[:md5_key] || JdPay.md5_key}" ) end |
.rsa_decrypt(sign_str, options = {}) ⇒ Object
31 32 33 34 |
# File 'lib/jd_pay/sign.rb', line 31 def rsa_decrypt(sign_str, = {}) public_key = OpenSSL::PKey::RSA.new([:pub_key] || JdPay.public_key) public_key.public_decrypt(Base64.decode64(sign_str)) end |
.rsa_encrypt(str, options = {}) ⇒ Object
26 27 28 29 |
# File 'lib/jd_pay/sign.rb', line 26 def rsa_encrypt(str, = {}) private_key = OpenSSL::PKey::RSA.new([:pri_key] || JdPay.pri_key) Base64.strict_encode64(private_key.private_encrypt Digest::SHA256.hexdigest(str)) end |
.rsa_verify?(params, options = {}) ⇒ Boolean
36 37 38 39 40 41 42 43 44 |
# File 'lib/jd_pay/sign.rb', line 36 def rsa_verify?(params, = {}) 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, ) end |