美文网首页
微信支付(公众号支付)

微信支付(公众号支付)

作者: hatch_win | 来源:发表于2017-06-09 17:14 被阅读0次

以下流程是以rails项目为准

Gem源添加

gem 'wx_pay'
gem 'weixin_authorize'
gem agent_orange

配置文件初始化
wx_pay.rb

$client = WeixinAuthorize::Client.new(WxPay.appid, WxPay.appsecret)
# required
# dunkhome config data
WxPay.appid = '此处配置微信公众号ID'
WxPay.key = '此处配置微信支付商户API密钥' # 微信支付商户平台--> API安全--> API密钥
WxPay.mch_id = '微信支付商户号'
WxPay.debug_mode = true # default is true

# cert, see https://pay.weixin.qq.com/wiki/doc/api/app/app.php?chapter=4_3
# using PCKS12
#WxPay.set_apiclient_by_pkcs12(File.read(pkcs12_filepath), pass)

# if you want to use "generate_authorize_req" and "authenticate"
WxPay.appsecret = '此处配置微信公众要密钥' # 目的:获取用户 授权信息

# optional - configurations for RestClient timeout, etc.
WxPay.extra_rest_client_options = {timeout: 2, open_timeout: 3}

Use
Helper Method
 def get_prepay_id(request_ip, open_id)
    wx_params = {  
    :out_trade_no => "test_no_01",
    :body => "test",
    :total_fee => 1, # 需要转换为分
    :spbill_create_ip => request_ip,
    :notify_url => "http://example.com/notify",
    :trade_type => "JSAPI",
    :nonce_str => "随机子串",
    :openid => open_id   # 用户公众号唯一id
    } 
    res = WxPay::Service.invoke_unifiedorder(wx_params)
    return res.success? ? res["prepay_id"] : nil 
end
Action
      #支付参数
      @wx_pay = {
      :appId => WxPay.appid,
      :timeStamp => Time.now.to_i.to_s,    
      :nonceStr => SecureRandom.hex,
      :package => "prepay_id=#{@order.get_prepay_id(request.ip, open_id)}",
      :signType => "MD5"
      }
      @pay_sign = WxPay::Sign.generate(@wx_pay)    # 签名生成
      @sign_package = Wechat.client.get_jssign_package(request.url)
View WeixinJS initialize
  wx.config({
  debug: false,
  appId: "<%= @sign_package['appId'] %>",
  timestamp: "<%= @sign_package['timestamp'] %>",
  nonceStr: "<%= @sign_package['nonceStr'] %>",
  signature: "<%= @sign_package['signature'] %>",
  jsApiList: ['chooseWXPay' ]
});
$pay.click(function(){
  wx.chooseWXPay({
    "timestamp": "<%= @wx_pay[:timeStamp] %>",
    "nonceStr": "<%= @wx_pay[:nonceStr] %>",
    "package": "<%= @wx_pay[:package] %>",
    "signType": "<%= @wx_pay[:signType] %>",
    "paySign": "<%= @pay_sign %>", // 支付签名
    success: function (res) {
      // 支付成功回调;
    }
  });
  return false;
});

流程到这里就ok了,按照开发者自己的设计,点击支付时,就能唤起微信的支付了。
PS:转载记得注明出处哦!

相关文章

  • 2019-08-19

    blog在线点单备案图标微信公众号微信支付微信赞赏支付宝出行红包支付宝支付支付宝红包

  • 微信公众号配置

    微信支付 - 商户平台 商户号 支付证书 微信公众号 appid & appscret 开发 > 基本配置 > ...

  • 【微信】支付

    公众号支付 调用微信js支付接口的页面,必须接口域名授权。在公众平台中设置,最多可以授权3个。 使用微信公众号支付...

  • 微信支付

    公众号支付是指在微信app中访问的页面通过js直接调起微信支付; 一:设置域名 登录微信公众平台; 微信支付中设置...

  • PHP微信公众号支付开发总结

    微信公众号开发是很常见的开发,其中微信支付占有很大的比重。微信公众号分为服务号和订阅号,服务号支持微信支付。 前期...

  • 关注公众号领红包常见问题解答

    一、关注领红包对公众号的要求: 公众号必须开通“微信支付”和“现金红包”功能权限 登录微信公众平台 – 微信支付(...

  • 微信公众号支付

    微信公众号支付使用的是JSAPI支付,后端调用微信支付demo中统一下单的接口获取支付参数返回给前端,在公众号中直...

  • 微信公众号开发之现金红包

    欢迎留言、转发 微信极速开发系列文章:点击这里 前几篇文章介绍了微信支付。 公众号支付、微信扫码支付、刷卡支付、微...

  • 微信支付

    微信公众号支付分为三类 以下主要介绍公众号H5授权支付 首先看一下微信支付的业务逻辑 大部分微信支付逻辑在于服务器...

  • 微信支付

    微信支付包括微信H5支付和微信公众号支付 微信H5支付 官方api:https://pay.weixin.qq.c...

网友评论

      本文标题:微信支付(公众号支付)

      本文链接:https://www.haomeiwen.com/subject/cadfqxtx.html