1. 程式人生 > >EasyWeChat微信開發平臺第三方接入(Laravel5+,EasyWeChat3.0)

EasyWeChat微信開發平臺第三方接入(Laravel5+,EasyWeChat3.0)

一、準備微信開發平臺賬號(需要認證¥300)

二、看程式碼

<?php
namespace App\Http\Controllers;

use Illuminate\Http\Request;
use EasyWeChat\Foundation\Application;

class OpenWeixinController extends Controller
{
    protected $options = [
                'open_platform' => [
                    'app_id'   => 'xx',
                    'secret'   => 'xx',
                    'token'    => 'xxx',
                    'aes_key'  => 'xxx'
                    ],
                ];

    public function index(Request $request) {

        $this->request = $request;

        try{
            $app = new Application($this->options);
            $openPlatform = $app->open_platform; 
            
            return $openPlatform->server->serve();
 
        }catch(\Exception $e){
            if(env('APP_DEBUG')){
                echo $e->getMessage();
            } else {
                 abort(404);
            }
        }


    }


     public function auth(Request $request) {
            
            $app = new Application($this->options);
            $openPlatform = $app->open_platform;

            $response = $openPlatform->pre_auth->redirect('http://xxx//index');
            
            //return $response;
            // 獲取跳轉的連結
            $url = $response->getTargetUrl();
            echo '<a href="'.$url.'">點選第三方授權</a>';
     }


}

呼叫auth函式進行第三方授權

三、問題

1、在授權URL測試的時候,如果報AesException: 簽名驗證錯誤,可能是程式碼你引數填寫有錯。一定要注意是填寫第三方平臺的資訊,不是公眾號的資訊。

2、在授權URL測試的時候,如果報Illegal key size,那麼就是指金鑰長度是受限制的,java執行時環境讀到的是受限的policy檔案。去掉這種限制需要下載Java Cryptography Extension (JCE) Unlimited Strength Jurisdiction Policy Files(https://yunpan.cn/cSrtk3Fk6WgAs  訪問密碼 244a)。替換${java_home}/jre/lib/security/ 下面的local_policy.jar和US_export_policy.jar(jdk,jre最好都替換。)。注意一定要重啟TOMCAT才能生效。

3、component ticket is exprie ticket過期,每10分鐘會微信伺服器會推送到授權事件的URL中。這裡可以不用處理設定過期時間(因為這裡的ticket是無介面呼叫許可權的,而且是微信伺服器自己推送的)

4、注意公眾號訊息處理的URL必須加上$APPID$

5、component_access_token過期時間為2個小時,和公眾號的Token一樣(我處理的是儲存過期時間,超過就請求。而不是定時重新整理)

6、可以選擇你自己需要第三方託管的許可權集,比如你其他訊息只走微信公眾號,只有客服訊息走第三方平臺。

7、異常:請確認授權入口頁所在域名,與授權後回撥頁所在域名相同,並且,此兩者都必須與申請第三方平臺時填寫的授權發起頁域名相同。授權入口頁所在域名:空

(改地址不能直接方法,需要<a href="授權地址"></a>標籤進行跳轉)

8、有可能會出現你每次啟動專案的時候,由於每10分鐘才會驗證一次Ticket,那麼直接呼叫介面,如果伺服器還沒推送,會出現ticket失效(不過在正式環境還好)(就算全網通過後也會推送component_verify_ticket協議)。

9、每次授權後,想要獲取最新的許可權必須重新掃碼授權。否則無法獲取最新的訊息。

10、獲取令牌的官網介面

11、第三方中的授權的URL一級接收公眾號訊息的URL都只能在同一個一級域名下

12、如果是併發量大,做叢集的話,一定要把所有伺服器的ip都加到白名單中