加入收藏 | 设为首页 | 会员中心 | 我要投稿 安卓应用网 (https://www.0791zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > PHP > 正文

PHP APP微信提现接口代码

发布时间:2020-05-25 02:36:02 所属栏目:PHP 来源:互联网
导读:这篇文章主要为大家详细介绍了PHP APP微信提现接口代码,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

本文实例为大家分享了APP微信提现接口的具体代码,供大家参考,具体内容如下

之前分享了微信支付接口、现在给大家分享一下APP提现的接口。

提现必须得用双向证书、所以大家一定要在微信的商户平台找到相应的地方去设置、因为我做这个提现已经有一段时间了、所以设置微信商户平台的那几个地方没有图的情况、也说不清楚、下次再做提现的时候、给大家分享如何设置商户平台那几个地方、不是很难、下面贴代码

namespace HomeController;

use ThinkController;

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:webwwwHomewx_payapiclient_cert.pem'); //证书这块大家把文件放到哪都行、

curl_setopt($ch,CURLOPT_SSLKEYTYPE,CURLOPT_SSLKEY,'C:webwwwHomewx_payapiclient_key.pem');//注意证书名字千万别写错、

//$zs1=dirname(dirname(__FILE__)).'wx_payapiclient_cert.pem';

//$zs2=dirname(dirname(__FILE__)).'wx_payapiclient_key.pem';

//show_bug($zs1);

//curl_setopt($ch,$zs1);

//curl_setopt($ch,$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,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="

".$dataArr['mch_appid']."

".$dataArr['mchid']."

".$dataArr['nonce_str']."

".$dataArr['partner_trade_no']."

".$dataArr['openid']."

".$dataArr['check_name']."

".$dataArr['re_user_name']."

".$dataArr['amount']."

".$dataArr['desc']."

".$dataArr['spbill_create_ip']."

".$sign."

";

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,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.'
';

//签名步骤二:在string后加入KEY

$String = $String."&key=".$this->apikey;

//echo "【string2】".$String."
";

//签名步骤三:MD5加密

$String = md5($String);

//echo "【string3】 ".$String."
";

//签名步骤四:所有字符转为大写

$result_ = strtoupper($String);

//echo "【result】 ".$result_."
";

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,$url);

curl_setopt($ch,"");

curl_setopt($ch,true);

curl_setopt($ch,FALSE); // https请求 不验证证书和hosts

curl_setopt($ch,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);

}

}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

(编辑:安卓应用网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读