- 微信提現又叫 微信企業付款 顧名思義:微信企業帳號向某一個用戶打款的流程。
- 官網文檔中說明,企業付款目前只支持向 商戶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); //發送請求 }
-
這裏主要說一下a 參數數組中openid
-
上面說到了appid 公衆平臺是獨立的,開放平臺也是獨立的,所以app微信提現就要選擇開放平臺的appid,公衆號微信提現就選擇公衆平臺的appid
-
用戶openid在開放平臺下 && 公衆平臺下是不一樣的,所以要選對主人,在app微信提現填寫的開放平臺下的appid,openid你就要填寫開放平臺下的,公衆號提現也是一樣的道理。
-
話說回來,開放平臺的openid是怎麼獲取的呢?開放平臺獲區用戶的openid有倆中方式,一個是用戶授權,一個是app微信支付,都是可以獲取到用戶的openid,存起來即可。
-
公衆平臺下的openid就很好解決了,用戶關注公衆號、用戶授權、jsp支付、獲取用戶信息接口等。。。都是可以拿到用戶的openid。
-
上述所說的開放平臺信息跟公衆平臺信息分開進行提現,是本人親自實現得出,並且已實施生成環境,如有不對歡迎指出。