一、別的系統(tǒng)安裝添加微信提現(xiàn)功能
第一步:使用composer安裝EasyWeChat
鏈接:https://www.easywechat.com/docs/3.x/installation
第二步:在前面我們已經(jīng)講過,初始化 SDK 的時(shí)候方法就是創(chuàng)建一個(gè)
EasyWeChat\Foundation\Application 實(shí)例:
use EasyWeChat\Foundation\Application;
$options = [
// ...];
$app = new Application($options);
/**
* 如果想要在Application實(shí)例化完成之后, 修改某一個(gè)options的值,
* 比如服務(wù)商+子商戶支付回調(diào)場(chǎng)景, 所有子商戶訂單支付信息都是通過同一個(gè)服務(wù)商的$option 配置進(jìn)來的,
* 當(dāng)oauth在微信端驗(yàn)證完成之后, 可以通過動(dòng)態(tài)設(shè)置merchant_id來區(qū)分具體是哪個(gè)子商戶
*/$app['config']->set('oauth.callback','wechat/oauthcallback/'. $sub_merchant_id->id);
那么配置的具體選項(xiàng)有哪些,下面是一個(gè)完整的列表:
<?php
return [
/**
* 賬號(hào)基本信息,請(qǐng)從微信公眾平臺(tái)/開放平臺(tái)獲取
*/
'app_id' => 'your-app-id', // AppID
'secret' => 'your-app-secret', // AppSecret
'token' => 'your-token', // Token
'aes_key' => '', // EncodingAESKey,安全模式與兼容模式下請(qǐng)一定要填寫?。?!
/**
* OAuth 配置
*
* scopes:公眾平臺(tái)(snsapi_userinfo / snsapi_base),開放平臺(tái):snsapi_login
* callback:OAuth授權(quán)完成后的回調(diào)頁(yè)地址
*/
'oauth' => [
'scopes' => ['snsapi_userinfo'],
'callback' => '/examples/oauth_callback.php',
],
/**
* 微信支付
*/
'payment' => [
'merchant_id' => 'your-mch-id',
'key' => 'key-for-signature',
'cert_path' => 'path/to/your/cert.pem', // XXX: 絕對(duì)路徑!?。。?/span>
'key_path' => 'path/to/your/key', // XXX: 絕對(duì)路徑?。。?!
],
* 更多請(qǐng)參考: http://docs.guzzlephp.org/en/latest/request-options.html
*/
'guzzle' => [
'timeout' => 3.0, // 超時(shí)時(shí)間(秒)
],];
第三步:使用EasyWeChat完成提現(xiàn)到零錢功能(企業(yè)付款到零錢)
你在閱讀本文之前確認(rèn)你已經(jīng)仔細(xì)閱讀了:微信支付 | 企業(yè)付款文檔 。
與其他支付接口一樣,企業(yè)支付接口也需要配置如下參數(shù),需要特別注意的是,企業(yè)支付相關(guān)的全部接口 都需要使用 SSL 證書,因此 cert_path 以及 cert_key 必須正確配置。
<?php
use EasyWeChat\Foundation\Application;
$options = [
'app_id' => 'your-app-id',
// payment
'payment' => [
'merchant_id' => 'your-mch-id',
'key' => 'key-for-signature',
'cert_path' => 'path/to/your/cert.pem',
'key_path' => 'path/to/your/key',
// ...
],];
$app = new Application($options);
$merchantPay = $app->merchant_pay;
企業(yè)付款
企業(yè)付款使用的余額跟微信支付的收款并非同一賬戶,請(qǐng)注意充值。
<?php
$merchantPayData = [
'partner_trade_no' => str_random(16), //隨機(jī)字符串作為訂單號(hào),跟紅包和支付一個(gè)概念。
'openid' => $openid, //收款人的openid
'check_name' => 'NO_CHECK', //文檔中有三種校驗(yàn)實(shí)名的方法 NO_CHECK OPTION_CHECK FORCE_CHECK
're_user_name'=>'張三', //OPTION_CHECK FORCE_CHECK 校驗(yàn)實(shí)名的時(shí)候必須提交
'amount' => 100, //單位為分
'desc' => '企業(yè)付款',
'spbill_create_ip' => '192.168.0.1', //發(fā)起交易的IP地址
];
$result = $merchantPay->send($merchantPayData);
查詢付款信息
用于商戶對(duì)已發(fā)放的企業(yè)支付進(jìn)行查詢企業(yè)支付的具體信息。
$partnerTradeNo = "商戶系統(tǒng)內(nèi)部的訂單號(hào)(partner_trade_no)";
$merchantPay->query($partnerTradeNo);
二、知識(shí)付費(fèi)添加微信提現(xiàn)
知識(shí)付費(fèi)系統(tǒng)的微信功能基本類extend\service\WechatService;按照文檔說明我們?cè)赪echatService類中添加企業(yè)付款的接口,接口名稱為merchantPayService,若是存在就不需要添加;
/**
* 企業(yè)付款
* @return \EasyWeChat\Material\Material
*/
public static function merchantPayService()
{
return self::application()->merchant_pay;
}
那么我們所需要的就是調(diào)用merchantPayService方法里的send方法,并且傳入我們轉(zhuǎn)賬的參數(shù)即可。
我們需要把功能加到提現(xiàn)審核通過之后執(zhí)行。admin\model\user\UserExtract;找到這個(gè)類中的changeSuccess方法,這個(gè)方法是審核通過后的相關(guān)操作。
(1)、 先引入WechatService;
use service\WechatService;
(2)、 changeSuccess方法里加下面代碼,并且根據(jù)最后的返回判斷企業(yè)付款是否成功。
$payData = [
'partner_trade_no' => str_random(16), //隨機(jī)字符串作為訂單號(hào),跟紅包和支付一個(gè)概念。
'openid' => $openid, //收款人的openid
'check_name' => 'NO_CHECK', //文檔中有三種校驗(yàn)實(shí)名的方法 NO_CHECK OPTION_CHECK FORCE_CHECK
're_user_name'=>'張三', //OPTION_CHECK FORCE_CHECK 校驗(yàn)實(shí)名的時(shí)候必須提交
'amount' => 100, //單位為分
'desc' => '企業(yè)付款',
'spbill_create_ip' => '192.168.0.1', //發(fā)起交易的IP地址
];
$result=WechatService::merchantPayService()->send($payData);