使用步骤:
-
add ‘gem ’wxpay’, git: ‘github.com/sforce100/wxpay.git’‘ to your gemfile
-
跑初始化命令 ‘rails g wxpay:initializer wxpay`,之后会在创建config/initializers/wxpay_initializer.rb文件
“‘
Wxpay.configure do |config| 这里是当项目只用一个微信账号时的配置 # config.app_id = conf_wxpay.app_id # config.app_secret = conf_wxpay.app_secret # config.pay_sign_key = conf_wxpay.pay_sign_key # config.partner_id = conf_wxpay.partner_id # config.partner_key = conf_wxpay.partner_key #下面是使用多个微信账号时的配置,下面的block可以自定义当回调,根据自己的需要 config.is_multi = true config.custom_config = Proc.new do |conf_wxpay| config.app_id = conf_wxpay.app_id config.app_secret = conf_wxpay.app_secret config.pay_sign_key = conf_wxpay.pay_sign_key config.partner_id = conf_wxpay.partner_id config.partner_key = conf_wxpay.partner_key end end
“‘
-
生成支付url
“‘
Wxpay.config.setup_config(conf) #如果是单个微信账号可以忽略,如果是多个微信账号需要先设置账号配置,此方法会调用配置文件里面的custom_config block data = { 'body' => order.first_goods.synopsis, 'notify_url' => 'http://bestapp.ngrok.com/pays/wxpays/notify', 'out_trade_no' => order.order_no, 'spbill_create_ip' => request.remote_ip, 'time_expire' => order.expired_at.strftime('%Y%m%d%H%M%S'), 'total_fee' => '1'#order.price_to_fen } Wxpay::Api.wxpay_params(data)
“‘
-
回调controller
“‘
class Pay::WxpaysController < ApplicationController protect_from_forgery :except => [:notify] layout :false wechat_responder # 多账户时的配置,单账户忽略 config_block do |post_data, params, config| #下面时通过数据获取不同微信账号信息配置 conf_wxpay = Conf::Wxpay.find_by_app_id(post_data.app_id) Wxpay.config.setup_config(conf_wxpay) end # 这里写支付回调逻辑,其他回调同理('package', 'notify', 'payfeedback', 'warning') notify_block do |post_data, params, config| if params[:trade_state].to_i == 0 payment_notify({out_trade_no: params[:out_trade_no], trade_no: params[:transaction_id]}) end end end
“‘
- 其他其中发货处理和警告尚未测试
This project rocks and uses MIT-LICENSE.