Class: YlPay::Utils
- Inherits:
-
Object
- Object
- YlPay::Utils
- Defined in:
- lib/yl_pay/utils.rb
Constant Summary collapse
- PARAM_SIGN_FIELD =
%w(version merchant_id merch_order_id amount order_desc trade_time exp_time notify_url return_url ext_data misc_data notify_flag client_ip)
- NOTIFY_SIGN_FIELD =
%w(version merchant_id merch_order_id amount ext_data order_id status pay_time settle_date)
- BACK_SIGN_FIELD =
%w(version merchant_id merch_order_id amount trade_time order_id verify_time)
- PARAM_BASE64_FIELD =
[:order_desc, :ext_data, :misc_data]
Class Method Summary collapse
- .back_sign(params) ⇒ Object
- .notify_sign(params) ⇒ Object
- .param_base64_field(params) ⇒ Object
- .param_sign(params) ⇒ Object
-
.params_sign_to_hash(params, target_params) ⇒ Object
针对param_sign hash的键大写,里面获取值参数小写 params[:A: ‘b’].
-
.params_to_hash(params, target_params) ⇒ Object
hash的键需要大写, 里面获取值参数也是大写 params[‘A’: ‘b’].
- .sign_uri(hash) ⇒ Object
- .string_to_uri(params) ⇒ Object
- .stringify_keys(hash) ⇒ Object
-
.uri_params(params) ⇒ Object
提交参数中包含中文的需要做base64转码, 对url进行urlencode处理.
Class Method Details
.back_sign(params) ⇒ Object
17 18 19 20 |
# File 'lib/yl_pay/utils.rb', line 17 def self.back_sign(params) hash_params = params_to_hash(params, BACK_SIGN_FIELD) sign_uri hash_params end |
.notify_sign(params) ⇒ Object
22 23 24 25 |
# File 'lib/yl_pay/utils.rb', line 22 def self.notify_sign(params) hash_params = params_to_hash(params, NOTIFY_SIGN_FIELD) sign_uri hash_params end |
.param_base64_field(params) ⇒ Object
41 42 43 44 45 46 47 48 |
# File 'lib/yl_pay/utils.rb', line 41 def self.param_base64_field(params) params.collect do |param| if PARAM_BASE64_FIELD.include? param[0] param[1] = Base64.strict_encode64(param[1]) end param end end |
.param_sign(params) ⇒ Object
12 13 14 15 |
# File 'lib/yl_pay/utils.rb', line 12 def self.param_sign(params) hash_params = params_sign_to_hash(params, PARAM_SIGN_FIELD) sign_uri hash_params end |
.params_sign_to_hash(params, target_params) ⇒ Object
针对param_sign hash的键大写,里面获取值参数小写 params[:A: ‘b’]
61 62 63 64 65 66 67 68 |
# File 'lib/yl_pay/utils.rb', line 61 def self.params_sign_to_hash(params, target_params) hash = {} target_params.collect do |k| k1 = k.camelize hash.merge!("#{k1}": params[k.to_sym]) end hash end |
.params_to_hash(params, target_params) ⇒ Object
hash的键需要大写, 里面获取值参数也是大写 params[‘A’: ‘b’]
51 52 53 54 55 56 57 58 |
# File 'lib/yl_pay/utils.rb', line 51 def self.params_to_hash(params, target_params) target_params.collect!(&:camelize) hash = {} target_params.collect do |k| hash.merge!("#{k}": params[k]) end hash end |
.sign_uri(hash) ⇒ Object
27 28 29 |
# File 'lib/yl_pay/utils.rb', line 27 def self.sign_uri(hash) string_to_uri(stringify_keys(hash)) end |
.string_to_uri(params) ⇒ Object
70 71 72 |
# File 'lib/yl_pay/utils.rb', line 70 def self.string_to_uri(params) params.map{|entry| entry * '='} * '&' end |
.stringify_keys(hash) ⇒ Object
74 75 76 77 78 79 80 |
# File 'lib/yl_pay/utils.rb', line 74 def self.stringify_keys(hash) new_hash = {} hash.each do |key, value| new_hash[(key.to_s rescue key) || key] = value.to_s end new_hash end |
.uri_params(params) ⇒ Object
提交参数中包含中文的需要做base64转码, 对url进行urlencode处理
32 33 34 35 36 37 38 |
# File 'lib/yl_pay/utils.rb', line 32 def self.uri_params(params) new_params = param_base64_field(params) new_params = Hash[new_params] new_params[:notify_url] = CGI.escape(new_params[:notify_url]) if new_params.key?(:notify_url) new_params[:return_url] = CGI.escape(new_params[:return_url]) if new_params.key?(:return_url) param_sign new_params end |