当前位置: 首页 > 后端技术 > Node.js

【一次尝试】anger-wechat封装了常用的微信api

时间:2023-04-03 14:00:14 Node.js

鍘熷洜鏄垜浠渶杩戝紑鍙戝井淇¢亣鍒颁簡鍚勭闂銆傛枃妗g湅浜嗗緢澶氶亶锛岃繕鏄寰椾笉濂界敤锛屼簬鏄皾璇曞皝瑁呬簡寰俊API锛岀壒姝ゅ垎浜紝鏈夐棶棰樿鎻愪氦Issues銆傞」鐩湴鍧€anger-wechatanger-wechat馃槖馃惙DirectoryGlobal鍏ㄥ眬鏂规硶isWechat鍒ゆ柇鏄惁涓哄井淇$幆澧冮€傜敤浜庡皬绋嬪簭寮€鍙慻etOpenidByCode浜ゆ崲openid绛塧ngerPay鏍规嵁code閫傜敤浜庢敮浠樻敮浠樻枃浠跺叆闂╪pminstallanger-wechat--saveUsevarAngerWechat=require('anger-wechat')varweixinApi=newAngerWechat({appId:'[浣犵殑appId]',//appId蹇呴』浼燼ppSecret:'[浣犵殑appSecret]',//appSecret蹇呴』浼燼uthUrl:'http://www.test.cc/get-weixin-code.html'})濡傛灉闇€瑕佷粯璐箆arAngerWechat=require('anger-wechat')varweixinApi=newAngerWechat({appId:'[浣犵殑appId]',//appIdmustpassappSecret:'[yourappSecret]',//appSecretmustpassauthUrl:'http://www.test.cc/get-weixin-code.html',//鍙€夊井淇uth2.0鎺堟潈鍏紬鍙烽〉闈㈡敮浠橈細{//濡傛灉闇€瑕佹敮浠樻ā鍧楀垯鍙€塵chId:'123456',partnerKey:'456789',pfx:path.join(__dirname,'apiclient_cert.p12'),//銆愬彲閫夈€戣瘉涔﹁矾寰勶紝濡傛灉涓嶄紶锛屽ぇ閮ㄥ垎鎺ュ彛涓嶈兘鎺夌嚎瀛樺叆鏁版嵁搴撹幏鍙朼ccess_token鎴虫垜鏌ョ湅瀹樻柟鏂囨。銆俛ccess_token鏄叕浼楀彿鐨勫叏灞€鍞竴鎺ュ彛璋冪敤鍑瘉銆傚叕浼楀彿璋冪敤鍚勪釜鎺ュ彛鏃讹紝闇€瑕乤ccess_token銆傚紑鍙戜汉鍛橀渶瑕佸Ε鍠勪繚绠°€俛ccess_token鐨勫瓨鍌ㄥ繀椤昏嚦灏戦鐣?12涓瓧绗︺€俛ccess_token鐨勬湁鏁堟湡鐩墠涓?灏忔椂锛岄渶瑕佸畾鏃跺埛鏂般€傞噸澶嶈幏鍙栦細浣夸笂娆¤幏鍙栫殑access_token澶辨晥銆俵etaccess_token=awaitweixinApi.getGlobalAccessToken(){"code":200,"msg":"璇锋眰鎴愬姛","data":{"access_token":"11_oTBrYVsT9wqa_-q3WDNEBOtfz1XKdM7YKIcNBEiu29Wfh5yTnlqaj5W0hMuxZ7C9FlY7CxD0RjR35V1ik1M3Nyi5QENcgFKhh0gYoBnAXEQ2oV93sVtO7IRqhh1kd9QLG8fwyA3vFRdifpJCOVLgAGAVCS","expires_in":7200}}isWechat鍒ゆ柇鏄惁鏄井淇$幆澧僱etua=request.headers["user-agent"]letisWeixin=weixinApi.isWechat(ua)//浼犲叆`UserAgent`瀛楃涓诧紝杩斿洖true|falseWeb[AngerWechat.Web]getJsTicket鏄叏灞€浣跨敤鐨勶紝寤鸿鍦ㄦ暟鎹簱涓繚瀛榞etjsapi_ticket銆傜偣鎴戞煡鐪嬪畼鏂规枃妗c€俵etjsTrickt=awaitweixinApi.Web.getJsTicket({access_token:'11_oTBrYVsT9wqa_-q3WDNEBOtfz1XKdM7YKIcNBEiu29Wfh5yTnlqaj5W0hMuxZ7C9FlY7CxD0RjR35V1ik1M3Nyi5QENcgFKhh0gYoBnAXEQ2oV93sVtO7IRqhh1kd9QLG8fwyA3vFRdifpJCOVLgAGAVCS'//浠ヤ笂涓€姝ヨ幏鍙栧埌鐨刟ccess_token鑾峰彇jsapi_ticket}){"code":200,"msg":"ok","data":{"errcode":0,"errmsg":"ok","ticket":"HoagFKDcsGMVCIY2vOjf9oKOmI5MRTBgKJJwCDQ2BnyLbfAJHCZXUIs992xQP246Nzp7LCNupv5Jablw8COZ_w","expires_in":7200}}getAuthUrl鑾峰彇Auth鍦板潃,閲嶅畾鍚戜箣鍚庣敤鏉ヨ幏鍙朿odeletauthURl=weixinApi.Web.getAuthUrl({redirect_uri:'http://www.baidu.com',scope:'snsapi_userinfo'//snsapi_base:silentauthorization,snsapi_userinfo:promptauthorization(youcanobtainuserinformationlater)})console.log(authURl)//http://www.toolos.cc/get-weixin-code.html?appid=wxf638c1f64239e786&redirect_uri=http://www.baidu.com&scope=snsapi_userinfo&state=STATEgetAuthAccessTokenByCodeGetopenidletaccordingtocodecodeInfo=awaitweixinApi.Web.getAuthAccessTokenByCode({code:'061729xv1BtSAa09g8yv1hr0xv1729xB'}){"code":200,"msg":"璇锋眰鎴愬姛","data":{"access_token":"11_Vc7D8AoYURWoECzJgD6Q1ccUOOHypO6mU0RQF7BnliKKCY5arfVvl0h3PWURwpK7QFgPLfDkHLX-9Dif6BTntw","expires_in":7200,"refresh_token":"11_ii3uONcMPA-04RjuLlckMMiwaDGF2MjW2SB5vOI3Sshz39PAVn7kOyC80_pPmmRJxqbfJ3Rdw07WG154AeP83Q","openid":"oI-Aa04T6FrpFFpTfyAaXR4SKacU","scope":"snsapi_userinfo"}}getUserInfo鏍规嵁getAuthAccessTokenByCode鑾峰彇鐨刟ccess_token鍜宱penid鑾峰彇鐢ㄦ埛淇℃伅锛屾敞鎰忚繖閲岀殑鑾峰彇鍥炶皟url鏂规硶getAuthUrl鐨剆cope闇€瑕佷紶snsapi_userinfoletuserInfo=awaitweixinApi.Web.getUserInfo({access_token:codeInfo.data.access_token,openid:codeInfo.data.openid}){"code":200,"msg":"Requestsuccessful","data":{"openid":"oI-Aa04T6FrpFFpTfyAaXR4SKacU","nickname":"FishEatingSail","sex":1,"language":"zh_CN","city":"**","province":"**","country":"China","headimgurl":"http://thirdwx.qlogo.cn/mmopen/vi_32/Q0j4TwGTfTIS3x9dFdptD1s2ZZMTDCriaiaXiaDPtyZw3vfMmJLyQ8PU8laBv4MNnJh5c9QWtTQey0m4FYUPVEvAQ/132","privilege":[]}}getJsSdkConfig鑾峰彇jssdkconfig閰嶇疆寰俊JS鎺ュ彛绛惧悕鏍¢獙宸ュ叿letjsTricktConfig=awaitweixinApi.Web.getJsSdkConfig({ticket:'HoagFKDcsGMVCIY2vOjf9oKOmI5MRTBgKJJwCDQ2Bnx34ua3MVs9zUZpV0wQPe8h83AwFSZQREHGgmuKpqvdsg',url:'http://www.toolos.cc'//璋冪敤jssdk椤甸潰鍦板潃}){"appId":"wxf638c1f64239e786","signature":"2c18eb8d6adaa5e02a9df517e776f5eef40ed402","noncestr":"04b21a6a-caea-4878-9fdb-8b2c1ff699b0","timestamp":1530636997,"jsapi_ticket":"HoagFKDcsGMVCIY2vOjf9oKOmI5MRTBgKJJwCDQ2Bnx34ua3MVs9zUZpV0wQPe8h83AwFSZQREHGgmuKpqvdsg"}Mini[AngerWechat.Mini]getOpenidByCode鏍规嵁灏忕▼搴忎紶鏉ョ殑code鑾峰彇openid绛変俊鎭复鏃剁櫥褰曞嚟璇乧ode鑾峰彇session_keyandopenidetc.letinfo=awaitweixinApi.Mini.getOpenidByCode({code:'xxxxxxxxxxxxxxx'}){"openid":"oynY34-0Err_YssQIFsK-Ht1eGs","session_key":"sPxOFsssssCP54n6cCfshw=="}鏀粯鎴虫垜鏌ョ湅鏂囨。鍦板潃闄勪欢鍏充簬authUrl鍙傛暟鍙傝€僄etWeixinCode楠岃瘉宸ュ叿寰俊JS鎺ュ彛绛惧悕楠岃瘉宸ュ叿寰俊鍏紬骞冲彴鎺ュ彛璋冭瘯宸ュ叿璇峰枬鏉挅鍟℃敮鎸佹洿澶氬紑婧?/p>