class Ralipay::ClientPayment
手机SDK客户端支付类,与wap流程不同,且只允许RSA验签
Public Class Methods
new(configs)
click to toggle source
# File lib/ralipay.rb, line 181 def initialize(configs) #@todo 入参合法性验证 $global_configs = $global_configs.merge configs end
Public Instance Methods
callback_verify?(posts)
click to toggle source
客户端callback回调之后POST请求服务器callback_url,传入hash symbol,该方法只返回bool 前端在验签通过就给客户端返回2,不通过就返回1
# File lib/ralipay.rb, line 239 def callback_verify? posts sign = CGI::unescape posts[:sign] content = CGI::unescape posts[:content] Ralipay::Common::verify?(content, sign) end
notify_verify(posts)
click to toggle source
异步回调验证,支付宝主动通知,前端POST xml方式获得参数,该方法返回支付状态,并安全的返回回调参数hash,失败返回false 成功请自行向支付宝打印纯文本success 如验签失败或未输出success支付宝会24小时根据策略重发总共7次,需考虑重复通知的情况
# File lib/ralipay.rb, line 210 def notify_verify posts notify_data = 'notify_data=' + posts[:notify_data].to_s sign = posts[:sign] #验签名 verify = Ralipay::Common::verify?(notify_data, sign) if verify #解密并解析返回参数的xml xml = posts[:notify_data] doc = Nokogiri::XML xml status = doc.xpath('/notify/trade_status').text #获得可信的交易状态 if status == 'TRADE_FINISHED' { :out_trade_no => doc.xpath('/notify/out_trade_no').text, :subject => doc.xpath('/notify/subject').text, :price => doc.xpath('/notify/price').text, :trade_no => doc.xpath('/notify/trade_no').text } else false end else false end end
notify_verify?(posts)
click to toggle source
异步回调验证,支付宝主动通知,前端POST xml方式获得参数,该方法只返回bool 成功请自行向支付宝打印纯文本success 如验签失败或未输出success支付宝会24小时根据策略重发总共7次,需考虑重复通知的情况
# File lib/ralipay.rb, line 189 def notify_verify? posts notify_data = 'notify_data=' + posts[:notify_data].to_s sign = posts[:sign] #验签名 verify = Ralipay::Common::verify?(notify_data, sign) if verify #解密并解析返回参数的xml xml = posts[:notify_data] doc = Nokogiri::XML xml status = doc.xpath('/notify/trade_status').text #获得可信的交易状态 status == 'TRADE_FINISHED' ? true : false else false end end