中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

使用PHP怎么實現一個APP微信提現接口

發布時間:2021-03-09 16:50:59 來源:億速云 閱讀:183 作者:Leah 欄目:開發技術

今天就跟大家聊聊有關使用PHP怎么實現一個APP微信提現接口,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結了以下內容,希望大家根據這篇文章可以有所收獲。

<?php
namespace Home\Controller;
use Think\Controller;
class TixianController extends Controller{

  //高級功能-》開發者模式-》獲取
  private $app_id1 = '';   //appid
  private $app_secret1 = ''; //secreat
  private $apikey1 = ''; //支付秘鑰
  private $mchid1 = 's';    //商戶號
  
    private $app_id=null;
    private $app_secret=null;
    private $apikey=null;
    private $mchid=null;
   
   
  public $error=0;
  public $state = '';
  //金額,需在實例化時傳入
  public $amount = '0';
  //用戶訂單號,需在實例化時傳入
  public $order_sn = '';
  //用戶openid,需在實例化時傳入
  public $openid = '';
  
  

  //微信提現操作接口-------》
  public function actionAct_tixian()
  {
   
   $this->state=md5(uniqid(rand(), TRUE));
   $this->amount=I('amount');//設置POST過來錢數
   $this->order_sn=rand(100,999).date('YmdHis'); //隨機數可以作為單號
   $this->openid= I('openid'); //設置獲取POST過來用戶的OPENID
    $user_id = I('user_id');

   $this->app_id=$this->app_id1;
   $this->app_secret=$this->app_secret1;
   $this->apikey=$this->apikey1;
   $this->mchid=$this->mchid1;
   $xml=$this->tiXianAction();
   $result=simplexml_load_string($xml);
   
   if($result->return_code=='SUCCESS' && $result->result_code=='SUCCESS') {

        $cash = D('cash');
        $data['user_id'] = $user_id;
        $data['amount'] = $this->amount;
        $res = $cash->where('user_id="'.$user_id.'"')->find();
        if($res){
          $res2 = $cash->where('user_id="'.$user_id.'"')->setInc('amount',$this->amount);
          $res4 = D('member')->where('user_id="'.$user_id.'"')->setDec('user_balance',$this->amount);
        }else{
          $res3 = $cash->add($data);
        }

      $output = array('code' => 1, 'data' => $result->result_code, 'info' => '提現成功');
      exit(json_encode($output));
   }else{

      $output = array('code' => 2, 'data' => $xml, 'info' => '提現失敗');
      exit(json_encode($output));
   }
  }
  /**
  * 提現接口操作,控制器調用
  * @param $openid 用戶openid 唯一標示
  * @return
  */
  //提現接口操作
  public function tiXianAction(){
   //獲取xml數據
   $data=$this->getdataXml($this->openid);
   $ch = curl_init ();
   //接口地址
   $MENU_URL="https://api.mch.weixin.qq.com/mmpaymkttransfers/promotion/transfers";

   curl_setopt ( $ch, CURLOPT_URL, $MENU_URL );
   curl_setopt ( $ch, CURLOPT_CUSTOMREQUEST, "POST" );
   curl_setopt ( $ch, CURLOPT_SSL_VERIFYPEER, FALSE );
   curl_setopt ( $ch, CURLOPT_SSL_VERIFYHOST, FALSE );

   //證書地址,微信支付下面

    curl_setopt($ch,CURLOPT_SSLCERTTYPE,'PEM');
    curl_setopt($ch,CURLOPT_SSLCERT, 'C:\web\www\Home\wx_pay\apiclient_cert.pem'); //證書這塊大家把文件放到哪都行、
    curl_setopt($ch,CURLOPT_SSLKEYTYPE,'PEM');
    curl_setopt($ch,CURLOPT_SSLKEY, 'C:\web\www\Home\wx_pay\apiclient_key.pem');//注意證書名字千萬別寫錯、

   //$zs1=dirname(dirname(__FILE__)).'\wx_pay\apiclient_cert.pem';
   //$zs2=dirname(dirname(__FILE__)).'\wx_pay\apiclient_key.pem';
   //show_bug($zs1);

   //curl_setopt($ch,CURLOPT_SSLCERT,$zs1);
   //curl_setopt($ch,CURLOPT_SSLKEY,$zs2);
   // curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (compatible; MSIE 5.01;
   // Windows NT 5.0)');
   //curl_setopt ( $ch, CURLOPT_FOLLOWLOCATION, 1 );
   curl_setopt ( $ch, CURLOPT_AUTOREFERER, 1 );
   curl_setopt ( $ch, CURLOPT_POSTFIELDS, $data );
   curl_setopt ( $ch, CURLOPT_RETURNTRANSFER, true );
   $info = curl_exec ( $ch );
    //返回結果
    if($info){
      curl_close($ch);
      return $info;
    } else {
      $error = curl_errno($ch);
      curl_close($ch);
      return "curl出錯,錯誤碼:$error";
    }
  }
  /**
  * 獲取數據封裝為數組
  * @param $openid 用戶openid 唯一標示
  * @return xml
  */

  private function getdataXml($openid){
   //封裝成數據
   $dataArr=array(
     'amount'=>$this->amount*100,//金額(以分為單位,必須大于100)
     'check_name'=>'NO_CHECK',//校驗用戶姓名選項,NO_CHECK:不校驗真實姓名 FORCE_CHECK:強校驗真實姓名(未實名認證的用戶會校驗失敗,無法轉賬)OPTION_CHECK:針對已實名認證的用戶才校驗真實姓名(未實名認證用戶不校驗,可以轉賬成功)
     'desc'=>'提現',//描述
     'mch_appid'=>$this->app_id,
     'mchid'=>$this->mchid,//商戶號
     'nonce_str'=>rand(100000, 999999),//不長于32位的隨機數
     'openid'=>$openid,//用戶唯一標識
     'partner_trade_no'=>$this->order_sn,//商戶訂單號
     're_user_name'=>'',//用戶姓名,check_name為NO_CHECK時為可選項
     'spbill_create_ip'=>$_SERVER["REMOTE_ADDR"],//服務器ip
   );
   //獲取簽名
   $sign=$this->getSign($dataArr);
   //xml數據
   $data="<xml>
     <mch_appid>".$dataArr['mch_appid']."</mch_appid>
     <mchid>".$dataArr['mchid']."</mchid>
     <nonce_str>".$dataArr['nonce_str']."</nonce_str>
     <partner_trade_no>".$dataArr['partner_trade_no']."</partner_trade_no>
     <openid>".$dataArr['openid']."</openid>
     <check_name>".$dataArr['check_name']."</check_name>
     <re_user_name>".$dataArr['re_user_name']."</re_user_name>
     <amount>".$dataArr['amount']."</amount>
     <desc>".$dataArr['desc']."</desc>
     <spbill_create_ip>".$dataArr['spbill_create_ip']."</spbill_create_ip>
     <sign>".$sign."</sign>
     </xml>";
   return $data;

  }
  /**
  *   作用:格式化參數,簽名過程需要使用
  */
  private function formatBizQueryParaMap($paraMap, $urlencode)
  {

   $buff = "";
   ksort($paraMap);
   foreach ($paraMap as $k => $v)
   {
     if($v){
      if($urlencode)
      {
        $v = urlencode($v);
      }

      $buff .= $k . "=" . $v . "&";
     }

   }
   $reqPar=NULL;
   if (strlen($buff) > 0)
   {
     $reqPar = substr($buff, 0, strlen($buff)-1);
   }

   return $reqPar;
  }

  /**
  *   作用:生成簽名
  */
  private function getSign($Obj)
  {

   foreach ($Obj as $k => $v)
   {
     $Parameters[$k] = $v;
   }
   //簽名步驟一:按字典序排序參數
   ksort($Parameters);
   $String = $this->formatBizQueryParaMap($Parameters, false);
   //echo '【string1】'.$String.'</br>';
   //簽名步驟二:在string后加入KEY
   $String = $String."&key=".$this->apikey;
   //echo "【string2】".$String."</br>";
   //簽名步驟三:MD5加密
   $String = md5($String);
   //echo "【string3】 ".$String."</br>";
   //簽名步驟四:所有字符轉為大寫
   $result_ = strtoupper($String);
   //echo "【result】 ".$result_."</br>";
   return $result_;
  }
  //-----------
  private function http($url, $method='POST', $postfields = null, $headers = array())
  {
   header("Content-Type:text/html;charset=utf-8");
   $ch = curl_init();
   /* Curl settings */
   curl_setopt($ch, CURLOPT_URL, $url);
   curl_setopt($ch, CURLOPT_POSTFIELDS, "");
   curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
   curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); // https請求 不驗證證書和hosts
   curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
   curl_setopt($ch, CURLOPT_TIMEOUT, 30);
   switch ($method){
     case 'POST':
      curl_setopt($ch,CURLOPT_POST, true);
      break;
   }
   curl_setopt($ch, CURLOPT_HTTPHEADER,$headers);
   curl_setopt($ch, CURLINFO_HEADER_OUT, true);
   $response = curl_exec($ch);
   $http_code = curl_getinfo($ch, CURLINFO_HTTP_CODE); //返回請求狀態碼
   curl_close($ch);
   return array($http_code, $response);
  }

}

看完上述內容,你們對使用PHP怎么實現一個APP微信提現接口有進一步的了解嗎?如果還想了解更多知識或者相關內容,請關注億速云行業資訊頻道,感謝大家的支持。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

php
AI

江城| 饶平县| 萨迦县| 平泉县| 微博| 神池县| 无极县| 新平| 湾仔区| 乌拉特中旗| 扎赉特旗| 安西县| 包头市| 龙州县| 晋州市| 舟曲县| 信阳市| 城固县| 临湘市| 广东省| 景德镇市| 北流市| 大丰市| 虎林市| 昆明市| 肃南| 揭西县| 阜宁县| 大邑县| 额敏县| 绵竹市| 洪雅县| 桓台县| 绥芬河市| 达拉特旗| 吉木萨尔县| 克拉玛依市| 鲁甸县| 定远县| 澄城县| 福清市|