laravel使用easy-WeChat搭建微信企業付款 ,以及微信app提現和微信公衆號提現的區別

  • 微信提現又叫 微信企業付款 顧名思義:微信企業帳號向某一個用戶打款的流程。
  • 官網文檔中說明,企業付款目前只支持向 商戶appid下,某用戶的openid 這就話的意思對於新手來說真的搞不明白是啥意思。是指公衆平臺下的用戶openid ?還是開放平臺下的用戶opendid ? 微信企業付款官方文檔
  • 上面提出的問題,如果知道的人,就沒必要向下看了,不知道的,咱們這就來說說看。
  • 微信開放平臺: 一般是用來建立APP移動端應用,只要是針對安卓、IOS開發的文檔,例如:app微信三方登錄、微信APP支付等。。。 開放平臺是有獨立的appid。
  • 微信公衆平臺:微信後端開發必須要懂裏面設置,來個圖大家看一下。這裏只要是微信公號的開發配置也就是H5頁面。公衆號也是有獨立的appid。
    微信公衆號開發配置
  • 微信商戶平臺:這裏只要集中於微信的各類支付業務,要做微信jsp支付還是H5支付或者微信app支付,都是在這裏。
  • 簡單的看一下微信商戶平臺、微信公衆平臺、微信開放平臺的關係
    微信關聯關係
  • 在這種圖中看出來微信公衆平臺跟開放平臺基本沒啥關係,大家都知道獲取用戶的openid必須有appid,所以開放平臺用戶的openid跟公衆平臺用戶的openid是不一樣的。
  • 上面叨叨這麼多,也是微信本人在做微信app提現和公衆號提現的時候,遇到的問題無人解答只能自己摸索。特此寫的囉嗦了,下面開始laravel下使用-laravel-easy-WeChat微信企業付款代碼。

邏輯開始

  • 首先下載插件composer require overtrue/laravel-wechat

  • 自定義laravel artisan控制檯命令,用戶crontab 定時執行。

  • 執行此命令php artisan command Wechat_server --command=wechat_server會在app\Console\Commands\ 生成Wechat_server.php文件,具體的註冊命令就不說了。想了解可以去看一下laravel 文檔。

  • 這段代碼是微信企業付款的配置項:

     use use EasyWeChat\Factory;   //引入
     
     public function handle()
     {
        $this->info("開始執行....");
        $config = [
            'app_id'             => config("wechat.wechat_app_appid"),    //微信開放平臺
            'mch_id'             => $payment['wxnative_mchid'],                //微信商戶號
            'key'                => $payment['wxnative_key'],                  // API密鑰
            'cert_path'          => ROOT_PATH.'mw_server/weixin_cert/apiclient_cert.pem', // XXX: 絕對路徑!!!!
            'key_path'           => ROOT_PATH.'mw_server/weixin_cert/apiclient_key.pem',      // XXX: 絕對路徑!!!!
        ];
        $app = Factory::payment($config);
        $this->get_user_account_list($app);
        $this->info("執行結束...");
    }
    //參數拼接,邏輯開始
    public function get_user_account_list($app){
    		    $a = [
                'partner_trade_no' =>‘123123123’, // 商戶訂單號,需保持唯一性(只能是字母或者數字,不能包含有符號)
                'openid' => “ ”,   用戶在平臺下的openid,取決於appid
                'check_name' => 'FORCE_CHECK', // NO_CHECK:不校驗真實姓名
                're_user_name' => "nickname", // 如果 check_name 設置爲FORCE_CHECK,則必填用戶真實姓名
                'amount' =>abs(1) * 100,// 企業付款金額,單位爲分
                'desc' =>"環球貓王提現轉賬"//企業付款操作說明信息。必填
    
            ];
            $result=$app->transfer->toBalance($a);         //發送請求
    }
    
  • 這裏主要說一下configappidconfig 配置數組中的appid和a 參數數組中openid

  • 上面說到了appid 公衆平臺是獨立的,開放平臺也是獨立的,所以app微信提現就要選擇開放平臺的appid,公衆號微信提現就選擇公衆平臺的appid

  • 用戶openid在開放平臺下 && 公衆平臺下是不一樣的,所以要選對主人,在app微信提現填寫的開放平臺下的appid,openid你就要填寫開放平臺下的,公衆號提現也是一樣的道理。

  • 話說回來,開放平臺的openid是怎麼獲取的呢?開放平臺獲區用戶的openid有倆中方式,一個是用戶授權,一個是app微信支付,都是可以獲取到用戶的openid,存起來即可。

  • 公衆平臺下的openid就很好解決了,用戶關注公衆號、用戶授權、jsp支付、獲取用戶信息接口等。。。都是可以拿到用戶的openid。

  • 上述所說的開放平臺信息跟公衆平臺信息分開進行提現,是本人親自實現得出,並且已實施生成環境,如有不對歡迎指出。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章