php 微信支付宝提现,微信支付对接提现功能(php)
参考:https://blog.51cto.com/14210437/2353576?source=dra
http://kf.qq.com/faq/161222NneAJf161222U7fARv.html
首先要登录微信支付商户平台下载证书
注意点:最好使用QQ浏览器(兼容模式),在下载安全控件时,使用其他浏览器可能会失败。
获取API证书需要商户号的超级管理员才能操作,详细步骤如下:
登录微信支付商户平台,进入【账户中心】->【账户设置】->【API安全】
1、若页面效果如下图,表示你的证书类型为“微信支付颁发的API证书”,可点击“下载证书”按钮,并按页面指引操作即可。
2、若页面效果如下图,表示你的证书类型为“权威CA颁发的API证书”,请点击“申请证书”按钮,并按以下指引完成证书申请。
2.1在【商户平台】打开【生成API证书】弹窗,点击“允许访问”,同意网页访问剪切板;
2.2 ①在【商户平台】-“提交请求串”环节,点击“下载证书工具”按钮;
② 下载并打开文件“WXCertUtil.exe”后;
③ 在【证书工具】,点击“申请证书”按钮,如下图:
2.3在【证书工具】-“填写商户信息”环节,填写商户号和商户名称后,点击“下一步”按钮,可在【商户平台】查看商户号和商户名称;
2.6 在【证书工具】-“生成证书”环节,已完成申请证书流程,点击“查看证书文件夹”,查看已生成的证书文件。
2.7 请将生成的证书文件转交给技术人员,由技术人员将证书部署到服务器上。
下载API证书
运营账户充值
保证运营账户有一定的余额,才能够提现成功。
封装提现脚本
将证书文件(3个)放在需要运行脚本的位置。代码如下
class Cash{
public function wxcash($openId,$money) {
$pub = ['app_id'=>'######','mch_id'=>'######','key'=>'######'];//config('keys.payConfig');
$appid = $pub['app_id'];//商户账号appid
$mch_id = $pub['mch_id'];//商户号
$key = $pub['key'];
$openid = $openId;//授权用户openid
$arr = array();
$arr['mch_appid'] = $appid;
$arr['mchid'] = $mch_id;
$arr['nonce_str'] = md5(uniqid(microtime(true),true));//随机字符串,不长于32位
$arr['partner_trade_no'] = '123456789' . date("Ymd") . rand(10000, 90000) . rand(10000, 90000);//商户订单号
$arr['openid'] = $openid;
$arr['check_name'] = 'NO_CHECK';//是否验证用户真实姓名,这里不验证
$arr['amount'] = $money * 100;//付款金额,单位为分
$arr['desc'] = "零钱提现";//描述信息
$arr['spbill_create_ip'] = 'xx.xx.xx.xx';//获取服务器的ip
//封装的关于签名的算法
$arr['sign'] = $this->makeSign($arr,$key);//签名
$var = $this->arrayToXml($arr);
// dump($arr['sign'] );exit;
$xml = $this->curl_post_ssl('https://api.mch.weixin.qq.com/mmpaymkttransfers/promotion/transfers',$var,30, array(), 1);
libxml_disable_entity_loader(true);
//echo $xml; die;
$obj1=simplexml_load_string($xml,'SimpleXMLElement');
//var_dump($obj1); die;
$rdata = json_decode(json_encode(simplexml_load_string($xml, 'SimpleXMLElement', LIBXML_NOCDATA)),true);
var_dump('cash_xmldata',$rdata);//eblog('cash_xmldata',$rdata);
// dump($rdata);exit;
$return_code = trim(strtoupper($rdata['return_code']));
$result_code = trim(strtoupper($rdata['result_code']));
if ($return_code == 'SUCCESS' && $result_code == 'SUCCESS') {
$isrr = array(
'status'=>1,
'msg' => '',
);
} else {
// $returnmsg = $rdata['return_msg'];
$err_code_des = $rdata['err_code_des'];
$isrr = array(
'status' => 0,
'msg' => $err_code_des,
);
}
return $isrr;
}
protected function makesign($data,$key)
{
//获取微信支付秘钥
$data = array_filter($data);
//签名步骤一:按字典序排序参数
ksort($data);
$string_a = http_build_query($data);
$string_a = urldecode($string_a);
//签名步骤二:在string后加入KEY
//$config=$this->config;
$string_sign_temp = $string_a."&key=".$key;
//签名步骤三:MD5加密
$sign = md5($string_sign_temp);
// 签名步骤四:所有字符转为大写
$result = strtoupper($sign);
// $result = strtoupper(hash_hmac("sha256",$string_sign_temp,$key));
return $result;
}
protected function arraytoxml($data){
$str='';
foreach($data as $k=>$v) {
$str.=''.$v.''.$k.'>';
}
$str.='';
return $str;
}
protected function curl_post_ssl($url, $vars, $second = 30, $aHeader = array())
{
$isdir = "cert/";//APP_PATH."/common/library/php_sdk/lib/";//证书位置
$ch = curl_init();//初始化curl
curl_setopt($ch, CURLOPT_TIMEOUT, $second);//设置执行最长秒数
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);//要求结果为字符串且输出到屏幕上
curl_setopt($ch, CURLOPT_URL, $url);//抓取指定网页
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, $isdir . 'apiclient_cert.pem');//证书位置
curl_setopt($ch, CURLOPT_SSLKEYTYPE, 'PEM');//CURLOPT_SSLKEY中规定的私钥的加密类型
curl_setopt($ch, CURLOPT_SSLKEY, $isdir . 'apiclient_key.pem');//证书位置
curl_setopt($ch, CURLOPT_CAINFO, 'PEM');
curl_setopt($ch, CURLOPT_CAINFO, $isdir . 'rootca.pem');
if (count($aHeader) >= 1) {
curl_setopt($ch, CURLOPT_HTTPHEADER, $aHeader);//设置头部
}
curl_setopt($ch, CURLOPT_POST, 1);//post提交方式
curl_setopt($ch, CURLOPT_POSTFIELDS, $vars);//全部数据使用HTTP协议中的"POST"操作来发送
$data = curl_exec($ch);//执行回话
if ($data) {
curl_close($ch);
return $data;
} else {
$error = curl_errno($ch);
echo "call faild, errorCode:$error\n";
curl_close($ch);
return false;
}
}
}
$cash=new Cash();
$cash->wxcash({openid},0.01);
php 微信支付宝提现,微信支付对接提现功能(php)相关推荐
- 微信支付宝扫码支付聚合系统
一.简介 微信支付宝扫码支付聚合系统,聚合了微信支付和支付宝的所有扫码支付模式.并支持微信支付服务商子商户模式.支持五种扫码技术. 二.主要功能 1. 微信扫码支付:包括扫码支付模式一.扫码支付模式二 ...
- 支付宝扫码付代理微信支付宝二合一支付收银系统
聚合支付它是一种支付形式.也就是聚合支付平台集成了多家支付通道,使得这个聚合支付平台的收款码能同时支持被集成通道的支付工具扫码付款,例如领客来聚合支付平台,它生成的收款码就可以同时支持支付宝,微信,百 ...
- 微信支付宝手机网站支付(WAP)
$.ajax({type: 'POST',url: api + '/pay/generateOrderInfo', //支付接口data: obj,dataType:"json", ...
- 2023全网最新微信支付宝QQ三合一支付生成PHP源码
源码简介: PHP版单文件index.php直接生成QQ微信支付宝三合一收款二维码完整源码,非调用三方接口的聚合收款码生成系统. 源码截图:
- 海关179对接微信/支付宝/通联支付及报关
海关179查询时,需要上报四个参数 initalRequest:原始请求,跨境电商平台企业向支付企业发送的原始信息 initalResponse:原始响应,支付企业向跨境电商平台企业反馈的原始信息 p ...
- 站长付个人微信支付宝收款系统如何对接?
对接方式如下 统一下单(必用接口) 统一下单接口地址: https://admin.zhanzhangfu.com/order/createOrder 传参方式:Post Header头信息:Paym ...
- 微信支付宝扫码支付简介
微信平台 支付模式 付款码支付 Native支付 JSAPI支付 APP支付 H5支付 小程序支付 各种模式的定义可以查看微信官方文档 这里应用Native支付,它是商户系统按微信支付协议生成支付二维 ...
- 第三方微信+支付宝个人免签支付源码
集成微信支付 支付宝支付 QQ钱包支付的第三方接口 免手续费 免签约 即时到账的第三方支付平台,支持语言有php,java,asp.本源码不是平台源码,是第三方源码,该个人免签支付不要第三方企业,适合 ...
- 微信支付宝免签约支付方案
还支持qq...... 等,功能强大...,前提是安卓手机 原理,解析通知栏信息,转发到服务器,后面就不用说了懂的都懂 部分代码
- 支付宝扫码支付对接技巧笔记
针对回调来详细讲解的 一.回调的调试方法 本机械的程序,前提是需要通向外网的网络 方案一:路由器设置开放本地到外网(不推荐,麻烦喜欢折腾的人可以研究一下,百度有方法) 方案二:外网的远程debug 部 ...
最新文章
- 华为认证物联网开发利器:小熊派IoT开发板
- dedecms--数据库
- 第四章之Hadoop I/O
- alpine linux安装ftp,如何在Alpine Linux上安装GLPK?
- 光伏产业的发展推动太阳能组件技术进步
- python3.8使用方法_python3.8新特性
- 个人自学ccna的资料+工大瑞普模拟器
- iOS 简单引导界面
- 小白程序员最容易踩的“坑”,你踩过几个?
- 【ACwing 95】费解的开关——枚举 + 搜索
- web前端性能优化的技巧
- OpenDDS环境搭建-Windows 10
- 笛卡尔积生成商品SKU
- could not resolve property: qid of: org.lxh.myzngt.vo.Answer
- 盘点澳洲留学性价比较高城市
- win7音量图标不见了如何解决
- 锚( Anchor Boxes)
- 靶机渗透练习25-Funbox4-CTF
- 桌面上的计算机图片怎么复制,电脑桌面上怎么截图呢??请问如何在电脑屏幕上截屏?...
- HTML页面左上角图标