主頁 > 知識(shí)庫 > PHP實(shí)現(xiàn)微信提現(xiàn)(企業(yè)付款到零錢)

PHP實(shí)現(xiàn)微信提現(xiàn)(企業(yè)付款到零錢)

熱門標(biāo)簽:高德地圖標(biāo)注家 長春人工外呼系統(tǒng)服務(wù)商 江西手機(jī)自動(dòng)外呼防封系統(tǒng)是什么 哪里辦理400電話 廣東地市地圖標(biāo)注 仁和怎么申請(qǐng)400開頭的電話 廣州防封卡外呼系統(tǒng)多少錢一個(gè)月 怎么向銷售公司推銷外呼系統(tǒng) 外呼系統(tǒng)撥打暫時(shí)無法接通

怎么開通企業(yè)付款到零錢?

有的商戶號(hào)的產(chǎn)品中心是沒有這個(gè)功能的,不過,該功能的pid(product id)是5,只要隨便進(jìn)去某一個(gè)產(chǎn)品,在地址欄把pid改為5。

即可進(jìn)入該功能頁面,進(jìn)行開通,不過要滿足條件。

用戶提現(xiàn)代碼:

//用戶微信提現(xiàn)
 private function withdrawals_weixin($id){
    $falg = M('withdrawals')->where(['id'=>$id])->find();
    $openid = M('users')->where('user_id', $falg['user_id'])->value('openid');
    $data['openid'] = $openid;
    $data['pay_code'] = $falg['id'].$falg['user_id'];
    $data['desc'] = '提現(xiàn)ID'.$falg['id'];
    if($falg['taxfee'] >= $falg['money']){
      return array('status'=>1, 'msg'=>"提現(xiàn)額度必須大于手續(xù)費(fèi)!" );
    }else{
      $data['money'] = bcsub($falg['money'], $falg['taxfee'], 2);
    }
    include_once PLUGIN_PATH . "payment/weixin/weixin.class.php";
    $weixin_obj = new \weixin();
    $result = $weixin_obj->transfer($data);
   
    return $result;
 }

其中pay_code在商戶號(hào)的提現(xiàn)功能是唯一的,所以為了防重放攻擊,這個(gè)值千萬不能用隨機(jī)數(shù),最好用ID,具有提現(xiàn)記錄唯一。

提現(xiàn)邏輯代碼:

// 微信提現(xiàn)轉(zhuǎn)賬
  function transfer($data){
    
    header("Content-type: text/html; charset=utf-8");
    //CA證書及支付信息
   $wxchat['appid'] = WxPayConfig::$appid;
   $wxchat['mchid'] = WxPayConfig::$mchid;
 
   $wxchat['api_cert'] = PLUGIN_PATH.'/payment/weixin/cert/apiclient_cert.pem';
    $wxchat['api_key'] = PLUGIN_PATH.'/payment/weixin/cert/apiclient_key.pem';
    
    // $wxchat['api_ca'] = '/plugins/payment/weixin/cert/rootca.pem';
   $webdata = array(
    'mch_appid' => $wxchat['appid'],
    'mchid'   => $wxchat['mchid'],
    'nonce_str' => md5(time()),
    //'device_info' => '1000',
    'partner_trade_no'=> $data['pay_code'], //商戶訂單號(hào),需要唯一
    'openid' => $data['openid'],//轉(zhuǎn)賬用戶的openid
    'check_name'=> 'NO_CHECK', //OPTION_CHECK不強(qiáng)制校驗(yàn)真實(shí)姓名, FORCE_CHECK:強(qiáng)制 NO_CHECK:
    //'re_user_name' => 'jorsh', //收款人用戶姓名
    'amount' => $data['money'] * 100, //付款金額單位為分
    'desc'  => $data['desc'],
    'spbill_create_ip' => request()->ip(),
    );
  
   foreach ($webdata as $k => $v) {
   $tarr[] =$k.'='.$v;
    }
 
   sort($tarr);
   $sign = implode($tarr, '');
   $sign .= 'key='.WxPayConfig::$key;
    $webdata['sign']=strtoupper(md5($sign));
    
    $wget = $this->array2xml($webdata);
    
    $pay_url = 'https://api.mch.weixin.qq.com/mmpaymkttransfers/promotion/transfers';
 
    $res = $this->http_post($pay_url, $wget, $wxchat);
 
   if(!$res){
   return array('status'=>1, 'msg'=>"Can't connect the server" );
   }
    $content = simplexml_load_string($res, 'SimpleXMLElement', LIBXML_NOCDATA);
    
   if(strval($content->return_code) == 'FAIL'){
   return array('status'=>1, 'msg'=>strval($content->return_msg));
   }
   if(strval($content->result_code) == 'FAIL'){
   return array('status'=>1, 'msg'=>strval($content->err_code),':'.strval($content->err_code_des));
    }
 
   $rdata = array(
    'mch_appid'    => strval($content->mch_appid),
    'mchid'      => strval($content->mchid),
    'device_info'   => strval($content->device_info),
    'nonce_str'    => strval($content->nonce_str),
    'result_code'   => strval($content->result_code),
    'partner_trade_no' => strval($content->partner_trade_no),
    'payment_no'    => strval($content->payment_no),
    'payment_time'   => strval($content->payment_time),
   );
   return $rdata;
 
  }

其中 PLUGIN_PATH 是一個(gè)常量

define('PLUGIN_PATH', __DIR__ . '/plugins/');

定義插件目錄

/**
   * 將一個(gè)數(shù)組轉(zhuǎn)換為 XML 結(jié)構(gòu)的字符串
   * @param array $arr 要轉(zhuǎn)換的數(shù)組
   * @param int $level 節(jié)點(diǎn)層級(jí), 1 為 Root.
   * @return string XML 結(jié)構(gòu)的字符串
   */
  function array2xml($arr, $level = 1) {
   $s = $level == 1 ? "xml>" : '';
   foreach($arr as $tagname => $value) {
   if (is_numeric($tagname)) {
    $tagname = $value['TagName'];
    unset($value['TagName']);
   }
   if(!is_array($value)) {
    $s .= "{$tagname}>".(!is_numeric($value) ? '![CDATA[' : '').$value.(!is_numeric($value) ? ']]>' : '')."/{$tagname}>";
   } else {
    $s .= "{$tagname}>" . $this->array2xml($value, $level + 1)."/{$tagname}>";
   }
   }
   $s = preg_replace("/([\x01-\x08\x0b-\x0c\x0e-\x1f])+/", ' ', $s);
   return $level == 1 ? $s."/xml>" : $s;
  }
  
  function http_post($url, $param, $wxchat) {
   $oCurl = curl_init();
   if (stripos($url, "https://") !== FALSE) {
   curl_setopt($oCurl, CURLOPT_SSL_VERIFYPEER, FALSE);
   curl_setopt($oCurl, CURLOPT_SSL_VERIFYHOST, FALSE);
   }
   if (is_string($param)) {
   $strPOST = $param;
   } else {
   $aPOST = array();
   foreach ($param as $key => $val) {
    $aPOST[] = $key . "=" . urlencode($val);
   }
   $strPOST = join("", $aPOST);
   }
   curl_setopt($oCurl, CURLOPT_URL, $url);
   curl_setopt($oCurl, CURLOPT_RETURNTRANSFER, 1);
   curl_setopt($oCurl, CURLOPT_POST, true);
   curl_setopt($oCurl, CURLOPT_POSTFIELDS, $strPOST);
   if($wxchat){
   curl_setopt($oCurl,CURLOPT_SSLCERT,$wxchat['api_cert']);
   curl_setopt($oCurl,CURLOPT_SSLKEY,$wxchat['api_key']);
   curl_setopt($oCurl,CURLOPT_CAINFO,$wxchat['api_ca']);
   }
   $sContent = curl_exec($oCurl);
   $aStatus = curl_getinfo($oCurl);
    curl_close($oCurl);
    
   if (intval($aStatus["http_code"]) == 200) {
   return $sContent;
   } else {
   return false;
   }
 }

以上就是本文的全部內(nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

您可能感興趣的文章:
  • PHP APP微信提現(xiàn)接口代碼
  • PHP實(shí)現(xiàn)微信提現(xiàn)功能

標(biāo)簽:文山 廈門 湘西 黔東 海北 濮陽 梅河口 惠州

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《PHP實(shí)現(xiàn)微信提現(xiàn)(企業(yè)付款到零錢)》,本文關(guān)鍵詞  PHP,實(shí)現(xiàn),微信,提現(xiàn),企業(yè),;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《PHP實(shí)現(xiàn)微信提現(xiàn)(企業(yè)付款到零錢)》相關(guān)的同類信息!
  • 本頁收集關(guān)于PHP實(shí)現(xiàn)微信提現(xiàn)(企業(yè)付款到零錢)的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章