继续上一篇,这章写网页jssdk验证,完成后,公众号开发,就基本结束了。 然而发过一篇文章后才发现并不能被百度搜到,不知道以后会不会被百度搜到,有点失落,不然发出来有什么意思

flask wechatpy jssdk验证

server.py要几个文件了,所以标下

#今天不行了,要自己动手了
#不能享受一步到位了
#只是个测试程序,后面把token和ticket取出来单独储存
from flask import Flask, request, redirect, jsonify, session, render_template
import functools
from wechatpy.oauth import WeChatOAuth
from wechatpy.enterprise import WeChatClient
import wechatpy
import time
import random

app = Flask(__name__)

CORP_ID = 'wx*****************'
SECRET = 'cdc**********************'

client2 = wechatpy.WeChatClient(
    CORP_ID,
    SECRET
)
app.secret_key = 'key'

client = WeChatClient(
    CORP_ID,
    SECRET
)
url=''
@app.route('/wx/')

def index():
    global url
    print('')
    #print()
    code = request.args.get('code', None)

    if code:
        oauthClient = WeChatOAuth(app_id=CORP_ID ,
                                  secret=SECRET,
                                  redirect_uri=url)
        try:
            user_info = oauthClient.fetch_access_token(code)
        except Exception as e:
            print ('发生错误')

        return render_template("html/网页应用.html")
    else:
        state = request.args.get('state', None)#stat自定义内容
        url=client.oauth.authorize_url(request.url,state=state)       
        return  redirect(url )
#因为百度搜不到,我也就不想怎注释了
#此处为微信jssdk的ajax请求
#需要在公众上设置该网址jssdk权限,别忘了
@app.route('/wx/jssdk',methods = ['POST'])
def wxjssdk():
    print('………………………………………',request.form)
    #print('-----------------',client2.jsapi.get_jsapi_card_params)
    url=request.form.get('url')
    ticket=client2.jsapi.get_jsapi_ticket()
    print(ticket)
    noncestr=''.join(random.sample(string.ascii_letters + string.digits, 8))
    timestamp=str(int(time.time()))
    signature=client2.jsapi.get_jsapi_signature(noncestr, ticket, timestamp, url)
    print(signature)
    return jsonify({'timestamp':timestamp,'nonceStr':noncestr,'signature':signature})

if __name__ == '__main__':
    app.run(
        host='0.0.0.0',port=443,debug = True,
        ssl_context=(
            './SSL/1_jinxinhp.cn_bundle.crt',
            './SSL/2_jinxinhp.cn.key'
            )
        )#4个0表示监听所有ip。默认只监听本地

前端文件 html文件路径为 \templates\html\网页应用.html 网页应用.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>回调页面</title>
</head>
<body>
<script src="https://cdn.bootcss.com/jquery/1.10.2/jquery.min.js"></script>
<script src="https://res.wx.qq.com/open/js/jweixin-1.6.0.js"></script>

<script>


  // 请求签名
  $.ajax({
    url: "jssdk",
    type: 'post',
    data: { url: location.href.split('#')[0]},
    success:function(res){
      //alert('res:  '+res.signature);
      wx.config({
        debug:  false,
        appId: 'wx-------------------',
        timestamp: res.timestamp,
        nonceStr: res.nonceStr,
        signature: res.signature,
        jsApiList: [
      'onMenuShareTimeline',
      'closeWindow',
      'hideAllNonBaseMenuItem',
      'showMenuItems',
      'onMenuShareTimeline',

      'getLocation','openLocation'
      ]
      }); 
      wx.ready(function () {//jssdk 初始化完成
         alert('成功');

        });

     //wx.closeWindow();//关闭窗口"menuItem:exposeArticle"
     wx.error(function (res) {
         alert('错误:'+res.errMsg);  // 正式环境记得关闭啊!!!!
     });

    }
  });

  ///返回关闭窗口
$(function(){
 pushHistory();//加入空的页面记录 
 window.addEventListener("popstate", function(e) { 
 wx.closeWindow();//关闭窗口
}, false); 
function pushHistory() { //加入空的页面记录
 var state = { 
              title: "title", 
              url: "#"
             }; 
window.history.pushState(state, "title", "#"); 
} 
})  ///返回关闭窗口

  </script>

</body>
</html>

好了,网页应用到处结束了。你可以任意构建自己的程序了。 看看我过几天写不写支付,支付也一样。 下次写了支付再传一次