class Midpay::Strategies::Alipay
Constants
- GATEWAY
- NOTIFY_VERIFY_GATEWAY
Public Instance Methods
ali_request_params()
click to toggle source
# File lib/midpay/strategies/alipay.rb, line 32 def ali_request_params params = request_data params.merge_if!(arguments.merge(partner: options.app_key, seller_id: options.app_key, notify_url: callback_url, return_url: callback_url)) params.sign!(:sign, :sign_type) do |hsh| ali_sign_str(hsh) end end
ali_request_url()
click to toggle source
# File lib/midpay/strategies/alipay.rb, line 28 def ali_request_url GATEWAY + "?" + ali_request_params.to_query end
ali_sign_str(hash)
click to toggle source
# File lib/midpay/strategies/alipay.rb, line 40 def ali_sign_str hash hash.reject{|k,v| [:sign_type, :sign].include?(k.to_sym) || v.to_s.empty? }.collect{|k,v| "#{k}=#{v}" }.sort.join("&") + options.app_secret end
callback_phase(pi)
click to toggle source
# File lib/midpay/strategies/alipay.rb, line 21 def callback_phase pi raise Midpay::Errors::InvalidSignature.new unless request_params[:sign] == request_params.sign(:sign_type){|hsh| ali_sign_str(hsh) } pi.extra = { :notify_verified => notify_verified?(request_params[:notify_id]) } pi.raw_data = request_params.symbolize_keys pi.success = (pi.raw_data['is_success'] == 'T' || pi.raw_data['trade_status'] == "TRADE_FINISHED") end
notify_verified?(id)
click to toggle source
# File lib/midpay/strategies/alipay.rb, line 44 def notify_verified? id url = NOTIFY_VERIFY_GATEWAY + "?service=notify_verify&partner=#{options.app_key}¬ify_id=#{id}" body = Net::HTTP.get_response(URI.parse(url)).body.gsub(/\s+/,'').downcase rescue nil body == 'true' end
request_phase(response)
click to toggle source
# File lib/midpay/strategies/alipay.rb, line 16 def request_phase response response.write("You are being redirected to Alipay......") response.redirect ali_request_url end