Thinkphp 5.0 위 챗 기업 의 잔돈 지불 실현

본 논문 의 사례 는 Thinkphp 5.0 위 챗 기업 이 잔돈 으로 지불 하 는 구체 적 인 코드 를 공유 하여 여러분 께 참고 하 시기 바 랍 니 다.구체 적 인 내용 은 다음 과 같 습 니 다.
[위 챗 결제]기업 에서 잔돈 까지 지불:공식 문서
메모:1.인증서 경 로 는 절대 경 로 를 쓰 고 함수 getcwd()를 사용 해 야 합 니 다.

function transfer($data){
  //    
  $wxchat['appid'] = WxPayConfig::$appid;
  $wxchat['mchid'] = WxPayConfig::$mchid;
  $webdata = array(
  'mch_appid' => $wxchat['appid'],//    appid
    'mchid'  => $wxchat['mchid'],//   
  'nonce_str' => md5(time()),//     
    'partner_trade_no'=> date('YmdHis'), //     ,    
  'openid' => $data['openid'],//     openid
  'check_name'=> 'NO_CHECK', //OPTION_CHECK         , FORCE_CHECK:   NO_CHECK:
  'amount' => $data['money']*100, //        
  'desc' => '         ',//        
  'spbill_create_ip' => request()->ip(),//  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->ArrToXml($webdata);//   XML
  $pay_url = 'https://api.mch.weixin.qq.com/mmpaymkttransfers/promotion/transfers';//api  
  $res = $this->postData($pay_url,$wget);//    
  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;
}

//   XML
 function ArrToXml($arr)
 {
  if(!is_array($arr) || count($arr) == 0) return '';
  $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;
 }



//    
 function postData($url,$postfields){
  $ch = curl_init();
  $params[CURLOPT_URL] = $url; //  url  
  $params[CURLOPT_HEADER] = false; //         
  $params[CURLOPT_RETURNTRANSFER] = true; //       
  $params[CURLOPT_FOLLOWLOCATION] = true; //     
  $params[CURLOPT_POST] = true;
  $params[CURLOPT_POSTFIELDS] = $postfields;
  $params[CURLOPT_SSL_VERIFYPEER] = false;
  $params[CURLOPT_SSL_VERIFYHOST] = false;
  //         
  $params[CURLOPT_SSLCERTTYPE] = 'PEM';
  $params[CURLOPT_SSLCERT] = getcwd().'/plugins/payment/weixin/cert/apiclient_cert.pem';//    
  $params[CURLOPT_SSLKEYTYPE] = 'PEM';
  $params[CURLOPT_SSLKEY] = getcwd().'/plugins/payment/weixin/cert/apiclient_key.pem';//    
  curl_setopt_array($ch, $params); //  curl  
  $content = curl_exec($ch); //  
  curl_close($ch); //    
  return $content;
 }

이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.

좋은 웹페이지 즐겨찾기