电竞比分网-中国电竞赛事及体育赛事平台

分享

[已解決] 微信支付不授權(quán)直接獲取 open id 的方法 · Ruby China

 quasiceo 2016-11-06

微信支付不授權(quán)直接獲取 open id 的方法

新手問(wèn)題 · Catherine · 發(fā)布于 2016年2月01日 · 最后由 catherine 回復(fù)于 2016年2月02日 · 3282 次閱讀
23196
  • 因?yàn)橹恍枰@取open id,不用去讓用戶授權(quán)一次。代碼和一些處理邏輯還參考了ruby china的另一個(gè)帖子,但忘記鏈接了 在公眾號(hào)里點(diǎn)了按鈕到check_openid的路由下,頁(yè)面空白,也沒(méi)有報(bào)錯(cuò)啥的,檢查了log里沒(méi)有我想要的openid出現(xiàn)...我把微信里的回調(diào)url改成了get_code的路由,依然日志里沒(méi)有我想要的東西..不知道到底哪一步有問(wèn)題。

參考的這個(gè)文檔:http://mp.weixin.qq.com/wiki/17/c0f37d5704f0b64713d5d2c37b468d75.html#.E7.AC.AC.E4.B8.80.E6.AD.A5.EF.BC.9A.E7.94.A8.E6.88.B7.E5.90.8C.E6.84.8F.E6.8E.88.E6.9D.83.EF.BC.8C.E8.8E.B7.E5.8F.96code

  • 公眾號(hào)花了300塊,是有這個(gè)接口權(quán)限的,安全域名我也添加了服務(wù)器的域名。 不知道若沒(méi)有花300塊是否就沒(méi)有這個(gè)接口的使用權(quán)限 沒(méi)有調(diào)試成功的原因是:在wx文檔里說(shuō)安全域名不能有前綴http或https,于是我誤以為回調(diào)redirect_uri也不能要,這個(gè)“我以為”就是調(diào)試不成功的原因,加上http或https就可以了?;卣{(diào)路由就是get_code或check_openid。
class Api::WxpaymentsController < ApplicationController
  # get_code function exists for testing, could be dumped
  respond_to :json
  def get_code
    code = params[:code]
    state = params[:state]
    Rails.logger.info("=====")
    Rails.logger.info(code)
    Rails.logger.info ("*****")
    Rails.logger.info (state)
    api_render_result(t, E_SUCCESS)
    return
  end

  def check_openid
    if session[:openid].blank?
      code = params[:code]
      if code.nil?
        # with state params
        # redirect_to "https://open.weixin.qq.com/connect/oauth2/authorize?appid=#{WXPAY_APPID}&redirect_uri=#{REDIRECT_URL}&response_type=code&scope=snsapi_base&state=#{REDIRECT_URL}#wechat_redirect"
        # without state
        redirect_to "https://open.weixin.qq.com/connect/oauth2/authorize?appid=#{WXPAY_APPID}&redirect_uri=#{REDIRECT_URL2}&response_type=code&scope=snsapi_base#wechat_redirect"
      end
      begin
        url    = "https://api.weixin.qq.com/sns/oauth2/access_token?appid=#{WXPAY_APPID}&secret=#{WXPAY_SECRET}&code=#{code}&grant_type=authorization_code"
        session[:openid] = JSON.parse(URI.parse(url).read)["openid"]
      rescue Exception => e
        #
      end
    end

    if session[:openid]
      Rails.logger.info("Get the openid ~!--->#{session[:openid]}")
      Rails.logger.info("Get the code ~!--->#{code}")
    end

    # api_render_result(t, E_SUCCESS)

    end
end
共收到 5 條回復(fù)
1樓 已刪除
2樓 已刪除
13650
imconfused · #3 · 2016年2月02日

check_openid 的 redirect_to 那里要 return 一下

24536
linyunjiang · #4 · 2016年2月02日

如三樓說(shuō)的 return一下應(yīng)該就沒(méi)問(wèn)題了

23196
Catherine · #5 · 2016年2月02日

#3樓 @imconfused
#4樓 @linyunjiang
謝謝,出錯(cuò)是在回調(diào)域名的格式上,需要加上前綴http or https

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多