本文實例講述了php實現微信企業號支付個人的方法。分享給大家供大家參考,具體如下:
導語:分銷商,微商提現怎么提?
直接用微信支付。
實現如下:
微信支付配置
/*微信支付*/ PAY_WEIXIN = array( appid = XXXX , appsecret = XXXXXXX , mchid = 1283301801 , //商戶號 key = zhudianbaodiandodozhudianbao0527 , //商戶支付秘鑰 apiclient_cert = Conf/cert/apiclient_cert.pem , //商戶證書apiclient_cert.pem apiclient_key = Conf/cert/apiclient_key.pem , //商戶證書apiclient_key.pem )
arrayToXml
/*** array轉xmlfunction arrayToXml($arr) $xml = xml foreach ($arr as $key= $val) if (is_numeric($val)) $xml.= .$key. .$val. / .$key. else $xml.= .$key. ![CDATA[ .$val. ]] / .$key. $xml.= /xml return $xml;}
使用證書,以post方式提交xml到對應的接口url
/*** 作用:使用證書,以post方式提交xml到對應的接口urlfunction postXmlSSLCurl($xml, $url, $second, $cert, $key) $ch = curl_init(); //超時時間 curl_setopt($ch,CURLOPT_TIMEOUT,$second ? $second : $this- timeout); //這里設置代理,如果有的話 //curl_setopt($ch,CURLOPT_PROXY, 8.8.8.8 //curl_setopt($ch,CURLOPT_PROXYPORT, 8080); curl_setopt($ch,CURLOPT_URL, $url); curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,FALSE); curl_setopt($ch,CURLOPT_SSL_VERIFYHOST,FALSE); //設置header curl_setopt($ch,CURLOPT_HEADER,FALSE); //要求結果為字符串且輸出到屏幕上 curl_setopt($ch,CURLOPT_RETURNTRANSFER,TRUE); //設置證書 //使用證書:cert 與 key 分別屬于兩個.pem文件 //默認格式為PEM,可以注釋 curl_setopt($ch,CURLOPT_SSLCERTTYPE, PEM curl_setopt($ch,CURLOPT_SSLCERT,$cert); //默認格式為PEM,可以注釋 curl_setopt($ch,CURLOPT_SSLKEYTYPE, PEM curl_setopt($ch,CURLOPT_SSLKEY, $key); //post提交方式 curl_setopt($ch,CURLOPT_POST, true); curl_setopt($ch,CURLOPT_POSTFIELDS,$xml); $data = curl_exec($ch); //返回結果 if($data){ curl_close($ch); return $this- xmlToArray($data); else { $error = curl_errno($ch); echo curl出錯,錯誤碼:$error . br curl_close($ch); return false;}
企業向個人付款
//企業向個人付款html' target='_blank'>public function payToUser($params, $key, $apicent_cert, $apiclient_key) { $url = https://api.mch.weixin.qq.com/mmpaymkttransfers/promotion/transfers //檢測必填參數 if($params[ partner_trade_no ] == null) { // exit( 退款申請接口中,缺少必填參數partner_trade_no! . br }elseif($params[ openid ] == null){ exit( 退款申請接口中,缺少必填參數openid! . br }elseif($params[ check_name ] == null){ //NO_CHECK:不校驗真實姓名 FORCE_CHECK:強校驗真實姓名(未實名認證的用戶會校驗失敗,無法轉賬)OPTION_CHECK:針對已實名認證的用戶才校驗真實姓名(未實名認證用戶不校驗,可以轉賬成功) exit( 退款申請接口中,缺少必填參數check_name! . br }elseif(($params[ check_name ] == FORCE_CHECK or $params[ check_name ] == OPTION_CHECK ) ($params[ re_user_name ] == null)){ //收款用戶真實姓名。 exit( 退款申請接口中,缺少必填參數re_user_name! . br }elseif($params[ amount ] == null){ exit( 退款申請接口中,缺少必填參數amount! . br }elseif($params[ desc ] == null){ exit( 退款申請接口中,缺少必填參數desc! . br $params[ mch_appid ] = $this- appid;//公眾賬號ID $params[ mchid ] = $this- mchid;//商戶號 $params[ nonce_str ] = $this- createNoncestr();//隨機字符串 $params[ spbill_create_ip ] = $_SERVER[ REMOTE_ADDR ] == ::1 ? 192.127.1.1 : $_SERVER[ REMOTE_ADDR //獲取IP $params[ sign ] = $this- getSign($params, $key);//簽名 $xml = $this- arrayToXml($params); return $this- postXmlSSLCurl($xml, $url, false, $apicent_cert, $apiclient_key);}
企業付款
private function _enterprisePay($number, $member_id, $amount, $desc) // 獲取openid $wxuser_id = M( Member )- where(array( id = $member_id))- getField( wxuser_id $openid = M( Wxuser )- where(array( id = $wxuser_id))- getField( openid $pay = C( PAY_WEIXIN import( @.Action.WxDevelop $enterprise = new WxEnterprise($pay[ appid ], $pay[ appsecret ], $pay[ mchid $params = array( partner_trade_no = $number, openid = $openid, check_name = NO_CHECK , amount = $amount, // 總計 desc = $desc, $result = $enterprise- payToUser($params, $pay[ key ], $pay[ apiclient_cert ], $pay[ apiclient_key return $result;}
處理分銷商提現
private function _handle($truename, $price) { // 處理分銷商提現 $withdrawid = date( ymdHis ) . strval(rand(1000, 9999)); $data = array( withdrawid = $withdrawid, store_id = $this- store_id, member_id = $this- member_id, truename = $truename, price = $price, addtime = time()); //免審核 if ($price = C( withdraw_uncheck_value )) { $data[ need_check ] = 0; $data[ status ] = 1; if ($this- withdrawModel- add($data)) { $result = $this- _enterprisePay($withdrawid, $this- member_id, $price * 100, 分銷商( . $truename . )提現 //遇到支付信息出錯,轉為需審核提現 if ($result[ return_code ] != SUCCESS ) { $this- withdrawModel- where(array( withdrawid = $withdrawid))- save(array( need_check = 1, status = 0)); $this- assign( success , 2); else { //設置微信交易號 $this- withdrawModel- where(array( withdrawid = $withdrawid))- save(array( payment_no = $result[ payment_no ])); //增加傭金流水,待修復 $data = array( store_id = $this- store_id, user_type = 2, user_id = $this- shop_id, trade_type = 2, trade_no = $withdrawid, price = -$price, status = 1, message = $truename. 提現 , addtime = time()); M( Twitter_log )- add($data); //減少相應可提傭金 M( Member )- where(array( id = $this- member_id))- setInc( money , -$price); $this- assign( success , 1); //發送傭金變動消息 import( @.Action.Tmplmsg $tmplmsg = new Tmplmsg(); $tmplmsg- send(Tmplmsg::PRICE_CHANGE, $this- member_id, array( token = $this- token, intro = 分銷傭金提現轉出 , price = $price, business = BUSINESS)); else { $this- error( 提現信息錯誤! //需要審核 else { $this- withdrawModel- add($data); $this- assign( success , 2);}
提供企業向用戶付款的功能,支持企業通過API接口付款,或通過微信支付商戶平臺網頁功能操作付款。
溫馨提示:
◆ 給同一個實名用戶付款,單筆單日限額2W/2W
◆ 給同一個非實名用戶付款,單筆單日限額2000/2000
◆ 一個商戶同一日付款總額限額100W
◆ 僅支持商戶號已綁定的APPID;
◆ 針對付款的目標用戶,已微信支付實名認證的用戶可提供校驗真實姓名的功能,未實名認證的用戶無法校驗,企業可根據自身業務的安全級別選擇驗證類型;
◆ 付款金額必須小于或等于商戶當前可用余額的金額;
◆ 已付款的記錄,企業可通過企業付款查詢查看相應數據。
到賬
付款資金將進入目標用戶的零錢(微信-我-錢包-零錢)。微信支付將做零錢入賬消息通知,零錢收支明細會展示相應記錄。
溫馨提示:
針對無零錢賬戶的歷史客戶端版本,資金將進入用戶的紅包賬戶,微信支付無消息通知用戶,企業可選擇自行觸達用戶。
接口鏈接:https://api.mch.weixin.qq.com/mmpaymkttransfers/promotion/transfers
是否需要證書
請求需要雙向證書。
數據示例:
xml mch_appid wxe062425f740c30d8 /mch_appid mchid 10000098 /mchid nonce_str 3PG2J4ILTKCH16CQ2502SI8ZNMTM67VS /nonce_str partner_trade_no 100000982014120919616 /partner_trade_no openid ohO4Gt7wVPxIT1A9GjFaMYMiZY1s /openid check_name OPTION_CHECK /check_name re_user_name 張三 /re_user_name amount 100 /amount desc 節日快樂! /desc spbill_create_ip 10.2.3.10 /spbill_create_ip sign C97BDBACF37622775366F38B629F45E3 /sign /xml
成功示例:
xml return_code ![CDATA[SUCCESS]] /return_code return_msg ![CDATA[]] /return_msg mch_appid ![CDATA[wxec38b8ff840bd989]] /mch_appid mchid ![CDATA[10013274]] /mchid device_info ![CDATA[]] /device_info nonce_str ![CDATA[lxuDzMnRjpcXzxLx0q]] /nonce_str result_code ![CDATA[SUCCESS]] /result_code partner_trade_no ![CDATA[10013574201505191526582441]] /partner_trade_no payment_no ![CDATA[1000018301201505190181489473]] /payment_no payment_time ![CDATA[2015-05-19 15:26:59]] /payment_time /xml
錯誤示例:
xml return_code ![CDATA[FAIL]] /return_code return_msg ![CDATA[系統繁忙,請稍后再試.]] /return_msg result_code ![CDATA[FAIL]] /result_code err_code ![CDATA[SYSTEMERROR]] /err_code err_code_des ![CDATA[系統繁忙,請稍后再試.]] /err_code_des /xml
以上就是本文的全部內容,希望對大家的學習有所幫助,更多相關內容請關注PHP !
相關推薦:
PHP實現微信公眾平臺企業號驗證接口
如何使用PHP導出數據到淘寶助手CSV
以上就是php如何實現微信企業號支付個人的詳細內容,PHP教程
鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。
新聞熱點
疑難解答