一 開通條件,就是首先要在微信平臺設置好。php
如下微信文檔裏有的,我這裏大概掠幾項比較重要的。json
付款資金api
企業付款到零錢資金使用商戶號餘額資金。安全
根據商戶號的帳戶開通狀況,實際出款帳戶有作區別:微信
◆ 默認狀況下,企業付款到零錢使用商戶號基本戶(或餘額帳戶)餘額。如商戶號已開通運營帳戶,則企業付款到零錢使用運營帳戶內的資金。app
◆ 基本戶(或上述其餘出款帳戶)的資金來源,多是交易結算款項(僅基本戶),或給帳戶充值的資金。當出款帳戶餘額不足時,付款將因餘額不足而付款失敗。curl
付款規則post
付款方式測試
◆ 支持API接口或網頁操做,付款至目標用戶。url
收款用戶身份指定
◆ 經過APPID+OPENID指定收款用戶。
◆ APPID須要爲申請商戶號時的APPID,或者與商戶號有綁定關係。
◆ OPENID的獲取方式,可參照:https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421140839
付款額度
◆ 不支持給非實名用戶打款
◆ 給同一個實名用戶付款,單筆單日限額2W/2W
◆ 一個商戶同一日付款總額限額100W
注意:以上規則中的限額2w、100w因爲計算規則與風控策略的關係,不是徹底精確值,金額僅作參考,請不要依賴此金額作系統處理,應以接口實際返回和查詢結果爲準,請知曉。
收款用戶身份校驗
◆ 針對付款的目標用戶,提供可校驗真實姓名的功能
查詢付款狀況
◆ 已付款的記錄,企業可經過企業付款查詢查看相應數據,或者查詢商戶號資金流水。
付款頻次
◆ 默認天天最多可向同一個用戶付款10次,能夠在商戶平臺--API安全進行設置
其餘注意事項
◆ 付款金額必須小於或等於商戶當前可用餘額的金額;
請求參數:
具體參看官方企業付款開發文檔說明
PHP代碼示例調用,這裏是寫在一個文件裏,看每一個方法就知道是幹嗎用的咯。
<?php //企業付款到微信零錢,PHP接口調用方法 define("APPID", "wx875439864"); //商戶帳號appid define("MCHID", "190023450990"); // 商戶號 define("SECRECT_KEY", "145535866885"); //支付密鑰簽名 define("IP", "120.178.12.52"); //IP function createNoncestr($length =32) { $chars = "abcdefghijklmnopqrstuvwxyz0123456789"; $str =""; for ( $i = 0; $i < $length; $i++ ) { $str.= substr($chars, mt_rand(0, strlen($chars)-1), 1); } return $str; } function unicode() { $str = uniqid(mt_rand(),1); $str=sha1($str); return md5($str); } function arraytoxml($data){ $str='<xml>'; foreach($data as $k=>$v) { $str.='<'.$k.'>'.$v.'</'.$k.'>'; } $str.='</xml>'; return $str; } function xmltoarray($xml) { //禁止引用外部xml實體 libxml_disable_entity_loader(true); $xmlstring = simplexml_load_string($xml, 'SimpleXMLElement', LIBXML_NOCDATA); $val = json_decode(json_encode($xmlstring),true); return $val; } function curl($param="",$url) { $postUrl = $url; $curlPost = $param; $ch = curl_init(); //初始化curl curl_setopt($ch, CURLOPT_URL,$postUrl); //抓取指定網頁 curl_setopt($ch, CURLOPT_HEADER, 0); //設置header curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); //要求結果爲字符串且輸出到屏幕上 curl_setopt($ch, CURLOPT_POST, 1); //post提交方式 curl_setopt($ch, CURLOPT_POSTFIELDS, $curlPost); // 增長 HTTP Header(頭)裏的字段 curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); // 終止從服務端進行驗證 curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE); curl_setopt($ch,CURLOPT_SSLCERT,ROOT_PATH .'/wxpay/cacert/apiclient_cert.pem'); //這個是證書的位置絕對路徑 curl_setopt($ch,CURLOPT_SSLKEY,ROOT_PATH .'/wxpay/cacert/apiclient_key.pem'); //這個也是證書的位置絕對路徑 $data = curl_exec($ch); //運行curl curl_close($ch); return $data; } /* $amount 發送的金額(分)目前發送金額不能少於1元 $re_openid, 發送人的 openid $desc // 企業付款描述信息 (必填) $check_name 收款用戶姓名 (選填) */ function sendMoney($amount,$re_openid,$desc='測試',$check_name=''){ $total_amount = (100) * $amount; $data=array( 'mch_appid'=>APPID,//商戶帳號appid 'mchid'=> MCHID,//商戶號 'nonce_str'=>createNoncestr(),//隨機字符串 'partner_trade_no'=> date('YmdHis').rand(1000, 9999),//商戶訂單號 'openid'=> $re_openid,//用戶openid 'check_name'=>'NO_CHECK',//校驗用戶姓名選項, 're_user_name'=> $check_name,//收款用戶姓名 'amount'=>$total_amount,//金額 'desc'=> $desc,//企業付款描述信息 'spbill_create_ip'=> IP,//Ip地址 ); $secrect_key=SECRECT_KEY;///這個就是個API密碼。MD5 32位。 $data=array_filter($data); ksort($data); $str=''; foreach($data as $k=>$v) { $str.=$k.'='.$v.'&'; } $str.='key='.$secrect_key; $data['sign']=md5($str); $xml=arraytoxml($data); $url='https://api.mch.weixin.qq.com/mmpaymkttransfers/promotion/transfers'; //調用接口 $res=curl($xml,$url); $return=xmltoarray($res); print_r($return); //返回來的結果 // [return_code] => SUCCESS [return_msg] => Array ( ) [mch_appid] => wxd44b890e61f72c63 [mchid] => 1493475512 [nonce_str] => 616615516 [result_code] => SUCCESS [partner_trade_no] => 20186505080216815 // [payment_no] => 1000018361251805057502564679 [payment_time] => 2018-05-15 15:29:50 $responseObj = simplexml_load_string($res, 'SimpleXMLElement', LIBXML_NOCDATA); echo $res= $responseObj->return_code; //SUCCESS 若是返回來SUCCESS,則發生成功,處理本身的邏輯 return $res; } ?>
三 調用方法 :
直接在你寫的方法裏調用此方法就行了
sendMoney(1,'ewrwexe32423423423423423','xxxx測試');
返回的結果,成功的話就直接print出來,失敗的話也要拋出異常。若是你仍是不懂,請查看以前分享過的這篇文章。
微信企業付款到我的零錢功能,很簡單的就實現咯!
效果圖以下
轉自「php自學中心 - PHP微信商戶支付企業付款到零錢功能」