支付寶的企業用戶是很方便的,收款後可轉到我的支付寶,而後就進入我的卡了。微信支付默認都是須要對公帳號,T+x結算,那怎麼能像支付寶同樣提現到我的卡,知足咱們這些小老闆那?這就有了"企業付款到零錢"接口,它可能更可能是一個策略。php
看看下面的三個圖(好不容易讓一個草榴網友在國外找到的)web
2017年會更多....在小馬哥和小龍哥的帶領下,微信小夥伴充分發揚龍馬精神,尤爲支付市場,步步蠶食,好不痛快。編程
這也是工兵連在講支付的時候先說微信的緣由,好了,很少說廢話,畢竟我這是嚴肅的原創技術文章。api
先貼一個官網說明:「企業付款提供由商戶直接付錢至用戶微信零錢的能力,支持平臺操做及接口調用兩種方式,資金到帳速度快,使用及查詢方便。主要用來解決合理的商戶對用戶付款需求,好比:保險理賠、彩票兌換等等。」安全
對於上述定義,北哥用大白話作下詮釋服務器
因而一個特別好的需求就誕生了,咱們如今就作一個後臺會員的打款功能。微信
首先你必須開通微信支付且擁有「企業付款到零錢」的權限,進入微信支付 ➭ 產品中心,看看有沒有企業付款到零錢,有就開通它,沒有那就歇菜了~yii2
如今開通這個也愈來愈難了,之前企業帳號都是默認有,如今須要 一、商戶號已入駐90日 二、商戶號有30天連續正常交易。app
因此說幹啥都要儘快,要不吃屎都趕不上熱乎的。微信公衆平臺
咱們須要3個參數和2個證書。
下載後證書目錄以下
咱們是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 和官方文檔一致。開啓穿越
固然仍是要有些注意的地方
咱們還能夠經過EasyWechat來查詢到零錢包的記錄信息,留給你們本身思考,若是不會請留言。
最後爲什麼開篇說對戰支付寶那,這要追溯下「企業付款到零錢」的歷史了,最開始它是必須先充值才能使用,可是去年年底出了一個運營帳號的概念,你能夠把和客戶交易的錢直接轉到企業付款裏來。
這點改動也許對於微信是想讓你的錢不要出去,仍然在我微信裏玩。但是對於不少好比飯店、小企業而言,這個功能等價因而 公到私,和支付寶殊途同歸,大大的方便了。
阿北曾經給一個飯店老闆作自助訂餐,眼看他天天一、2萬的經過企業付款轉帳到我的微信上來,有機會也給你們講講YII2實現的訂餐系統以及20w數據表的優化技巧。
好了,就到這裏,有啥不懂的請留言。
(完)