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

首頁 > 語言 > PHP > 正文

PHP實現微信提現(企業付款到零錢)

2024-05-05 00:10:40
字體:
來源:轉載
供稿:網友

怎么開通企業付款到零錢?

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

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

用戶提現代碼:

//用戶微信提現 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'] = '提現ID'.$falg['id'];    if($falg['taxfee'] >= $falg['money']){      return array('status'=>1, 'msg'=>"提現額度必須大于手續費!" );    }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在商戶號的提現功能是唯一的,所以為了防重放攻擊,這個值千萬不能用隨機數,最好用ID,具有提現記錄唯一。

提現邏輯代碼:

// 微信提現轉賬  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'], //商戶訂單號,需要唯一    'openid' => $data['openid'],//轉賬用戶的openid    'check_name'=> 'NO_CHECK', //OPTION_CHECK不強制校驗真實姓名, FORCE_CHECK:強制 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 是一個常量

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

定義插件目錄

/**   * 將一個數組轉換為 XML 結構的字符串   * @param array $arr 要轉換的數組   * @param int $level 節點層級, 1 為 Root.   * @return string XML 結構的字符串   */  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;   } }

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持VeVb武林網。


注:相關教程知識閱讀請移步到PHP教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 武山县| 嘉峪关市| 永嘉县| 若羌县| 德令哈市| 呼和浩特市| 颍上县| 遂溪县| 繁昌县| 延安市| 抚顺县| 惠来县| 陈巴尔虎旗| 花莲县| 正镶白旗| 炉霍县| 镇远县| 岐山县| 延吉市| 会昌县| 郓城县| 怀化市| 锦州市| 那坡县| 隆德县| 当涂县| 琼海市| 永善县| 宝兴县| 吉林省| 湘阴县| 疏附县| 新和县| 灌阳县| 宽甸| 栾川县| 孟村| 泊头市| 阳朔县| 韩城市| 渭源县|