tp5微信提现


namespace app\common\controller;
use app\index\controller\Base;
use think\Db;
use think\facade\Env;
class Wxtuikuan extends Base
{/**** 商户号需注册满90天* 30天流水* 微信支付-产品中心-商家转账到零钱-开通*/private $SSLCERT_PATH;							// api证书路径private $SSLKEY_PATH;							// 密钥证书路径protected $mchid;protected $appid;// 调用方法public function __construct(){$config=Db::name('setting')->find(1);$this->SSLCERT_PATH = 'public'.$config['apiclient_cert'];$this->SSLKEY_PATH = 'public'.$config['apiclient_key'];$this->mchid = $config['MCHID']; //https://pay.weixin.qq.com 产品中心-开发配置-商户号$this->appid = $config['APPID']; //微信支付申请对应的公众号的APPID}public function myTixian(){$info['amount']=1;//金额$info['orderno']=generateOrderNumber(6);//订单号$info['openid']='o7nYL5QN7eaAYw1HyxCEBzWbwa_k';//openid$this->tixian($info);}//提现 企业付款到零钱public function tixian($info = []){if (empty($info)){return false;}$url = 'https://api.mch.weixin.qq.com/v3/transfer/batches';$batch_name = '用户提现';$pars = [];$pars['appid'] = $this->appid;//直连商户的appid$pars['out_batch_no'] = 'sjzz'.date('Ymd').mt_rand(1000, 9999);//商户系统内部的商家批次单号,要求此参数只能由数字、大小写字母组成,在商户系统内部唯一$pars['batch_name']   = $batch_name;//该笔批量转账的名称$pars['batch_remark'] = $batch_name;//转账说明,UTF8编码,最多允许32个字符$pars['total_amount'] = intval(strval($info['amount'] * 100));//转账总金额 单位为“分”$pars['total_num']    = 1;//转账总笔数$pars['transfer_detail_list'][0]  = ['out_detail_no'=> $info['orderno'],'transfer_amount'=>intval(strval($info['amount'] * 100)),'transfer_remark'=>$batch_name,'openid'=>$info['openid'],];//转账明细列表// dump($pars);$token  = $this->getToken($pars,$this->mchid);//获取token$res    = $this->https_request($url,json_encode($pars),$token);//发送请求$resArr = json_decode($res,true);return $resArr;}public function getToken($pars,$merchant_id){$url = 'https://api.mch.weixin.qq.com/v3/transfer/batches';$http_method = 'POST';//请求方法(GET,POST,PUT)$timestamp   = time();//请求时间戳$url_parts   = parse_url($url);//获取请求的绝对URL$nonce       = $timestamp.rand('10000','99999');//请求随机串$body        = json_encode((object)$pars);//请求报文主体$stream_opts = ["ssl" => ["verify_peer"=>false,"verify_peer_name"=>false,]];//证书$apiclient_cert_path = Env::get('root_path').$this->SSLCERT_PATH;$apiclient_key_path  = Env::get('root_path').$this->SSLKEY_PATH;$apiclient_cert_arr = openssl_x509_parse(file_get_contents($apiclient_cert_path,false, stream_context_create($stream_opts)));$serial_no          = $apiclient_cert_arr['serialNumberHex'];//证书序列号$mch_private_key    = file_get_contents($apiclient_key_path,false, stream_context_create($stream_opts));//密钥// $merchant_id = '';//商户id$canonical_url = ($url_parts['path'] . (!empty($url_parts['query']) ? "?${url_parts['query']}" : ""));$message = $http_method."\n".$canonical_url."\n".$timestamp."\n".$nonce."\n".$body."\n";openssl_sign($message, $raw_sign, $mch_private_key, 'sha256WithRSAEncryption');$sign = base64_encode($raw_sign);//签名$schema = 'WECHATPAY2-SHA256-RSA2048';$token = sprintf('mchid="%s",nonce_str="%s",timestamp="%d",serial_no="%s",signature="%s"',$merchant_id, $nonce, $timestamp, $serial_no, $sign);//微信返回tokenreturn $token;}function https_request($url,$data = null,$token){$curl = curl_init();curl_setopt($curl, CURLOPT_URL, (string)$url);curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE);curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, FALSE);if (!empty($data)){curl_setopt($curl, CURLOPT_POST, 1);curl_setopt($curl, CURLOPT_POSTFIELDS, $data);}curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);//添加请求头$headers = ['Authorization:WECHATPAY2-SHA256-RSA2048 '.$token,'Accept: application/json','Content-Type: application/json; charset=utf-8','User-Agent:Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36',];if(!empty($headers)){curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);}$output = curl_exec($curl);curl_close($curl);return $output;}}


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部