支付寶的企業用戶是很方便的,收款後可轉到我的支付寶,而後就進入我的卡了。微信支付默認都是須要對公帳號,T+x結算,那怎麼能像支付寶同樣提現到我的卡,知足咱們這些小老闆那?這就有了"企業付款到零錢"接口,它可能更可能是一個策略。php
看看下面的三個圖(好不容易讓一個草榴網友在國外找到的)web
2017年會更多....在小馬哥和小龍哥的帶領下,微信小夥伴充分發揚龍馬精神,尤爲支付市場,步步蠶食,好不痛快。編程
這也是工兵連在講支付的時候先說微信的緣由,好了,很少說廢話,畢竟我這是嚴肅的原創技術文章。api
先貼一個官網說明:「企業付款提供由商戶直接付錢至用戶微信零錢的能力,支持平臺操做及接口調用兩種方式,資金到帳速度快,使用及查詢方便。主要用來解決合理的商戶對用戶付款需求,好比:保險理賠、彩票兌換等等。」安全
對於上述定義,北哥用大白話作下詮釋服務器
這個接口能夠編程。微信
錢最後進入了會員的微信零錢包。yii2
基於公衆號配置,須要填寫appId和會員的openid。app
因而一個特別好的需求就誕生了,咱們如今就作一個後臺會員的打款功能。微信公衆平臺
首先你必須開通微信支付且擁有「企業付款到零錢」的權限,進入微信支付 ➭ 產品中心,看看有沒有企業付款到零錢,有就開通它,沒有那就歇菜了~
如今開通這個也愈來愈難了,之前企業帳號都是默認有,如今須要 一、商戶號已入駐90日 二、商戶號有30天連續正常交易。
因此說幹啥都要儘快,要不吃屎都趕不上熱乎的。
咱們須要3個參數和2個證書。
appId & mchid & key (參數能夠在公衆號後臺找到)
cert & key 證書 (微信支付平臺 ➭ 帳戶中心 ➭ API安全 ➭ 下載證書)
下載後證書目錄以下
咱們是PHP環境,因此須要使用其中的apiclient_cert.pem、apiclient_key.pem以及rootca.pem這3個,將這些證書文件保存到你服務器上,最好不要放到web下,放到@app下比較安全。
能夠如我所作。
// 配置文件conf/params.php return [ 'WECHAT'=>[ /** * Debug 模式,bool 值:true/false * * 當值爲 false 時,全部的日誌都不會記錄 */ 'debug' => true, /** * 帳號基本信息,請從微信公衆平臺/開放平臺獲取 */ 'app_id' => '必需要', // AppID 'secret' => '不是必須的', // AppSecret 'token' => '不是必須的', // Token 'aes_key' => '', ... 'payment' => [ 'merchant_id' => '必需要', 'key' => '必需要', 'cert_path' => 'path/to/your/cert.pem'//必須 'key_path' => 'path/to/your/key'//必須 ], ], ];
app_id、merchant_id、key、cert_path、key_path都是必須填寫的,其中cert_path和key_path須要有效的物理路徑。
我將證書放到了yii2程序根目錄 /cert文件夾。所以如上路徑配置。
咱們假設指定一個action來作打款的事情,使用EasyWeChat後代碼變的更加簡單。
// index.php?r=admin/user/send-money namespace app\modules\admin\controllers; use yii\web\Controller; use EasyWeChat\Foundation\Application; use Yii; class UserController extends Controller { .... /** * 給id會員微信打款 * $params $money */ public function actionSendMoney($id,$money){ $user = User::findOne($id); // 配置支付參數 $conf = Yii::$app->params['WECHAT']; $wxApp = new Application($config); // 初始化微信企業支付對象 $merchantPay = $wxApp->merchant_pay; // 初始化支付到零錢包訂單信息 $merchantPayData = [ //隨機字符串做爲訂單號,跟紅包和支付一個概念。 'partner_trade_no' => str_random(16), 'openid' => $user->open_id, 'check_name' => 'NO_CHECK', 'amount' => $money*100, //單位爲分 'desc' => "打款秒殺", 'spbill_create_ip' =>$_SERVER['REMOTE_ADDR'] ]; $result = $merchantPay->send($merchantPayData); //$result['result_code']是否爲SUCCESS 來判斷是否成功,若是失敗則信息再$result['err_code_des']內。 } ... }
咱們看到了,通過EasyWeChat封裝後的企業付款到零錢包變的很是簡潔,配置一些必填項,而後傳給 $merchantPay->send 便可。
返回的 $result 和官方文檔一致。開啓穿越
固然仍是要有些注意的地方
spbill_create_ip 不少時候你本地調試發現不成功都是由於這個致使的
amount 企業付款金額最少爲1元,就是說amount最少是100,微信支付裏金額的單位都是分。
desc 這個字段不要亂寫,在接收者微信零錢明細列表中會是 「企業付款:你的desc」
咱們還能夠經過EasyWechat來查詢到零錢包的記錄信息,留給你們本身思考,若是不會請留言。
最後爲什麼開篇說對戰支付寶那,這要追溯下「企業付款到零錢」的歷史了,最開始它是必須先充值才能使用,可是去年年底出了一個運營帳號的概念,你能夠把和客戶交易的錢直接轉到企業付款裏來。
這點改動也許對於微信是想讓你的錢不要出去,仍然在我微信裏玩。但是對於不少好比飯店、小企業而言,這個功能等價因而 公到私,和支付寶殊途同歸,大大的方便了。
阿北曾經給一個飯店老闆作自助訂餐,眼看他天天一、2萬的經過企業付款轉帳到我的微信上來,有機會也給你們講講YII2實現的訂餐系統以及20w數據表的優化技巧。
好了,就到這裏,有啥不懂的請留言。
(完)