国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > PHP > 正文

PHP實現微信提現功能

2024-05-04 21:50:19
字體:
來源:轉載
供稿:網友

本文實例為大家分享了PHP實現微信提現功能的具體代碼,供大家參考,具體內容如下

一、實現功能   

這幾天在小程序里要實現用戶從系統中提現到零錢的功能,查了一下文檔可以使用 企業付款到用戶零錢 來實現; 

官方文檔

注意事項:商戶打款時是從商戶可用余額中減錢,所以確保商戶可用余額充足,同時注意官方文檔中的付款規則;

  1. //封裝提現方法 
  2.  function tixian($money){ 
  3.     $appid = "################";//商戶賬號appid 
  4.     $secret = "##########";//api密碼 
  5.     $mch_id = "#######";//商戶號 
  6.     $mch_no = "#######"
  7.     $openid="123456789";//授權用戶openid 
  8.          
  9.     $arr = array(); 
  10.     $arr['mch_appid'] = $appid
  11.     $arr['mchid'] = $mch_id
  12.     $arr['nonce_str'] = ugv::randomid(20);//隨機字符串,不長于32位 
  13.     $arr['partner_trade_no'] = '1298016501' . date("Ymd") . rand(10000, 90000) . rand(10000, 90000);//商戶訂單號 
  14.     $arr['openid'] = $openid
  15.     $arr['check_name'] = 'NO_CHECK';//是否驗證用戶真實姓名,這里不驗證 
  16.     $arr['amount'] = $money;//付款金額,單位為分 
  17.     $desc = "###提現"
  18.     $arr['desc'] = $desc;//描述信息 
  19.     $arr['spbill_create_ip'] = '192.168.0.1';//獲取服務器的ip 
  20.     //封裝的關于簽名的算法 
  21.     $notify = new Notify_pub(); 
  22.     $notify->weixin_app_config = array(); 
  23.     $notify->weixin_app_config['KEY'] = $mch_no
  24.   
  25.     $arr['sign'] = $notify->getSign($arr);//簽名 
  26.   
  27.     $var = $notify->arrayToXml($arr); 
  28.     $xml = $this->curl_post_ssl('https://api.mch.weixin.qq.com/mmpaymkttransfers/promotion/transfers'$var, 30, array(), 1); 
  29.     $rdata = simplexml_load_string($xml'SimpleXMLElement', LIBXML_NOCDATA); 
  30.     $return_code = (string)$rdata->return_code; 
  31.     $result_code = (string)$rdata->result_code; 
  32.     $return_code = trim(strtoupper($return_code)); 
  33.     $result_code = trim(strtoupper($result_code)); 
  34.   
  35.     if ($return_code == 'SUCCESS' && $result_code == 'SUCCESS') { 
  36.       $isrr = array
  37.         'con'=>'ok'
  38.         'error' => 0, 
  39.       ); 
  40.     } else { 
  41.       $returnmsg = (string)$rdata->return_msg; 
  42.       $isrr = array
  43.         'error' => 1, 
  44.         'errmsg' => $returnmsg
  45.       ); 
  46.   
  47.     } 
  48.     return json_encode($isrr); 
  49. }  
  50. //上個方法中用到的curl_post_ssl() 
  51. function curl_post_ssl($url$vars$second = 30, $aHeader = array()) 
  52.   { 
  53.     $isdir = "/cert/";//證書位置 
  54.   
  55.     $ch = curl_init();//初始化curl 
  56.   
  57.     curl_setopt($ch, CURLOPT_TIMEOUT, $second);//設置執行最長秒數 
  58.     curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);//要求結果為字符串且輸出到屏幕上 
  59.     curl_setopt($ch, CURLOPT_URL, $url);//抓取指定網頁 
  60.     curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);// 終止從服務端進行驗證 
  61.     curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);// 
  62.     curl_setopt($ch, CURLOPT_SSLCERTTYPE, 'PEM');//證書類型 
  63.     curl_setopt($ch, CURLOPT_SSLCERT, $isdir . 'apiclient_cert.pem');//證書位置 
  64.     curl_setopt($ch, CURLOPT_SSLKEYTYPE, 'PEM');//CURLOPT_SSLKEY中規定的私鑰的加密類型 
  65.     curl_setopt($ch, CURLOPT_SSLKEY, $isdir . 'apiclient_key.pem');//證書位置 
  66.     curl_setopt($ch, CURLOPT_CAINFO, 'PEM'); 
  67.     curl_setopt($ch, CURLOPT_CAINFO, $isdir . 'rootca.pem'); 
  68.     if (count($aHeader) >= 1) { 
  69.       curl_setopt($ch, CURLOPT_HTTPHEADER, $aHeader);//設置頭部 
  70.     } 
  71.     curl_setopt($ch, CURLOPT_POST, 1);//post提交方式 
  72.     curl_setopt($ch, CURLOPT_POSTFIELDS, $vars);//全部數據使用HTTP協議中的"POST"操作來發送 
  73.   
  74.     $data = curl_exec($ch);//執行回話 
  75.     if ($data) { 
  76.       curl_close($ch); 
  77.       return $data
  78.     } else { 
  79.       $error = curl_errno($ch); 
  80.       echo "call faild, errorCode:$error/n"
  81.       curl_close($ch); 
  82.       return false; 
  83.     } 

三、補充

關于具體簽名算法,可參考微信官方文檔;

簡單示范簽名算法:

  1. //將要發送的數據整理為$data 
  2.   
  3. ksort($data);//排序 
  4. //使用URL鍵值對的格式(即key1=value1&key2=value2…)拼接成字符串 
  5. $str=''
  6. foreach($data as $k=>$v) { 
  7.   $str.=$k.'='.$v.'&'
  8. //拼接API密鑰 
  9. $str.='key='.$secrect
  10. $data['sign']=md5($str);//加密 

將數組轉換成xml格式(簡單方法):

  1. //遍歷數組方法 
  2. function arraytoxml($data){ 
  3.   $str='<xml>'
  4.   foreach($data as $k=>$v) { 
  5.     $str.='<'.$k.'>'.$v.'</'.$k.'>'
  6.   } 
  7.   $str.='</xml>'
  8.   return $str

將xml格式轉換為數組:

  1. function xmltoarray($xml) {  
  2.    //禁止引用外部xml實體  
  3.   libxml_disable_entity_loader(true);  
  4.   $xmlstring = simplexml_load_string($xml'SimpleXMLElement', LIBXML_NOCDATA);  
  5.   $val = json_decode(json_encode($xmlstring),true);  
  6.   return $val

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 宜章县| 儋州市| 盐池县| 温州市| 延吉市| 磐石市| 资中县| 龙江县| 寻甸| 刚察县| 德格县| 安塞县| 江安县| 车致| 卫辉市| 岐山县| 图木舒克市| 沁阳市| 库车县| 潞城市| 连南| 北安市| 泌阳县| 仁化县| 郸城县| 祁阳县| 清水县| 获嘉县| 合山市| 佛山市| 丹江口市| 兰西县| 林芝县| 白河县| 饶阳县| 炉霍县| 阿鲁科尔沁旗| 花垣县| 泸定县| 延边| 珠海市|