A sinatra example using Ralipay Gem
-
HomePage http://ledbk.com/ralipay/
Add this line to your application's Gemfile:
gem 'ralipay'
And then execute:
$ bundle
Or install it yourself as:
$ gem install ralipay
Ralipay::WapPayment.new
Ralipay::WapPayment.generate_pay_url
Ralipay::WapPayment.callback_verify?
Ralipay::WapPayment.callback_verify
Ralipay::WapPayment.notify_verify?
Ralipay::WapPayment.notify_verify
Ralipay::ClientPayment.notify_verify?
Ralipay::ClientPayment.notify_verify
Ralipay::ClientPayment.callback_verify?
Ralipay::Common::build_sign
Ralipay::Common::create_link_string
Ralipay::Common::rsa_sign
Ralipay::Common::md5_sign
Ralipay::Common::verify?
Ralipay::Common::para_filter
Ralipay::Common::decrypt
-
申请你的支付宝商户服务
-
取调用支付宝支付接口的账户信息
-
并使用openssl工具生成好公钥与私钥(建议使用RSA加密方式)
准备好参数:configs(hash symbol)
configs = {
:partner => '0000000000000', #商户id partner_id
:seller_email => '[email protected]', #商户email
:rsa_private_key_path => '/Users/ZhouYT/Desktop/rsa_private_key.pem', #私钥绝对路径
:rsa_public_key_path => '/Users/ZhouYT/Desktop/alipay_public_key.pem', #公钥绝对路径
:subject => '测试商品', #商品名称
:out_trade_no => '1222222233', #外部交易号,不能重复
:total_fee => '0.01', #交易价格
:notify_url => 'http://xx.xx.xx.xx/xx/xx', #服务器异步回调通知接口地址
:merchant_url => 'http://xx.xx.xx.xx/xx/xx', #商品展示地址
:call_back_url => 'http://xx.xx.xx.xx/xx/xx' #支付成功同步回调跳转地址
}
获取url
url = Ralipay::WapPayment.new(configs).generate_pay_url
将当前页面redirect到该url上
同样需要上面的configs(hash symbol),在new的时候只需要配置公钥和私钥就可以了
准备好当前页面获取到的get请求获取到的所有参数与值,用hash symbol形式传入
Ralipay::WapPayment.new(configs).callback_verify?(gets)
callback_verify? 方法只返回bool
callback_verify 方法返回支付状态,并安全的返回回调参数hash,失败返回false
返回的hash内容:
:trade_no
:out_trade_no
同样需要上面的configs(hash symbol),在new的时候只需要配置公钥和私钥就可以了
准备好当前页面获取到的post请求获取到的所有参数与值,用hash symbol形式传入
Ralipay::WapPayment.new(configs).notify_verify?(posts)
异步回调验证,支付宝主动通知,前端POST xml方式获得参数,该方法只返回bool
成功请自行向支付宝打印纯文本success
如验签失败或未输出success支付宝会24小时根据策略重发总共7次,需考虑重复通知的情况
notify_verify? 方法只返回bool
notify_verify 方法返回支付状态,并安全的返回回调参数hash,失败返回false
同样需要上面的configs(hash symbol),在new的时候只需要配置公钥和私钥就可以了
准备好当前页面获取到的post请求获取到的所有参数与值,用hash symbol形式传入
Ralipay::ClientPayment.new(configs).notify_verify?(posts)
此方法与wap支付一致,内部处理有所不同
客户端callback回调之后POST请求服务器callback_url
前端处理时在验签通过就给客户端返回2,不通过就返回1
Ralipay::ClientPayment.new(configs).callback_verify?(posts)
该方法可以不使用