微信支付+服务器+php代码,php 微信支付企业付款(示例代码)
/**
* 格式化参数格式化成url参数*/
public function ToUrl($arr)
{$buff = "";foreach ($arr as $k => $v)
{if($k != "sign" && $v != "" && !is_array($v)){$buff .= $k . "=" . $v . "&";
}
}$buff = trim($buff, "&");return $buff;
}//将乱序的数组
public function ToSign($arr,$key)
{//签名步骤一:按字典序排序参数
ksort($arr);$string = ToUrl($arr);//签名步骤二:在string后加入KEY
$string = $string . "&key=".$key;//签名步骤三:MD5加密
$string = md5($string);//签名步骤四:所有字符转为大写
// $result1 = strtoupper($string);
return $string;
}/**
* 输出xml字符
* @throws WxPayException
**/
public static function ToXml($arr)
{if(!is_array($arr) || count($arr) <= 0)
{echo ‘数据异常‘;
}$xml = "";foreach ($arr as $key=>$val)
{if (is_numeric($val)){$xml.="".$val."".$key.">";
}else{$xml.="".$key.">";
}
}$xml.="";return $xml;
}/**
* zll 生成唯一订单号*/
public functionorder_sn(){$str = "qyfk".uniqid();return $str;
}/**
* zll 将信息提交到微信服务器,发起企业付款*/
public function qyzf_post($url,$xml,$config,$second=30){$ch =curl_init();
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_SSLCERT,"/home/lizi/addons/grow/template/mobile/cash/apiclient_cert.pem");
// curl_setopt($ch,CURLOPT_SSLKEY,"/home/lizi/addons/grow/template/mobile/cash/apiclient_key.pem");
$str = ‘D:/www/‘;//证书必须使用绝对路径,否则报错,错误貌似是52什么的
curl_setopt($ch,CURLOPT_SSLCERTTYPE,‘PEM‘);
curl_setopt($ch,CURLOPT_SSLCERT,$str.trim($config[‘apiclient_cert‘],‘.‘));
curl_setopt($ch,CURLOPT_SSLKEYTYPE,‘PEM‘);
curl_setopt($ch,CURLOPT_SSLKEY,$str.trim($config[‘apiclient_key‘],‘.‘));
curl_setopt($ch,CURLOPT_POST, 1);
curl_setopt($ch,CURLOPT_POSTFIELDS,$xml);$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;
}
}/**
* zll 企业付款*/
public function qiyezhifu($data){//解释amount为付款金额,单位分,貌似最低1元,desc为付款的描述(必填),ip就是服务器ip必填
//$data = array(‘wxappid‘=>14,‘openid‘=>‘oRyzq0LrtuqKqQdH-FubBqcMuTi8-‘,‘amount‘=>100,‘desc‘=>‘提现奖励‘,‘ip‘=>‘123.207.19.254‘);
//获取数据库的支付配置信息
$config = get_pay_conf($data[‘wxappid‘]);if($config){//对必备参数进行有效性判断
if(empty($config[‘appid‘]) || empty($config[‘shh‘]) || empty($config[‘partnerkey‘]) || empty($data[‘amount‘]) || empty($config[‘apiclient_cert‘]) || empty($config[‘apiclient_key‘])){throw new Exception("支付配置中的appid或商户号或支付秘钥不能为空,或支付金额不能为空");
}else{$da[‘mch_appid‘] = $config[‘appid‘]; //appid
$da[‘mchid‘] = $config[‘shh‘]; //商户号
$da[‘nonce_str‘] = $this->getStr(32); //随机字符串
$da[‘partner_trade_no‘] = $this->order_sn(); //订单号,保持唯一性即可
$da[‘openid‘] = $data[‘openid‘]; //粉丝的openid
$da[‘check_name‘] = "NO_CHECK"; //NO_CHECK:不校验真实姓名 FORCE_CHECK:强校验真实姓名(未实名认证的用户会校验失败,无法转账) OPTION_CHECK:针对已实名认证的用户才校验真实姓名(未实名认证用户不校验,可以转账成功)
//$da[‘re_user_name‘] = ""; //收款用户真实姓名。 如果check_name设置为FORCE_CHECK或OPTION_CHECK,则必填用户真实姓名
$da[‘amount‘] = $data[‘amount‘]; //付款金额,单位分
$da[‘desc‘] = $data[‘desc‘] ? $data[‘desc‘]:"提现奖励"; //企业付款描述信息
$da[‘spbill_create_ip‘] = $data[‘ip‘] ? $data[‘ip‘] : "123.207.19.254"; //服务器ip
$da[‘sign‘] = $this->ToSign($da, $config[‘partnerkey‘]);//生成签名
//$da[‘key‘] = $config[‘partnerkey‘]; //支付秘钥
//将数组转为xml
$xml = $this->ToXml($da);$url = ‘https://api.mch.weixin.qq.com/mmpaymkttransfers/promotion/transfers‘;$this->qyzf_post($url,$xml,$config);
}
}else{return false;
}
}
微信支付+服务器+php代码,php 微信支付企业付款(示例代码)相关推荐
- php 工商银行公众号支付代码_php开发微信支付企业付款实例代码
企业付款的应用场景: 公众号向已关注用户付款,比如处理退款.财务结算等,本文主要和大家分享php开发微信支付企业付款实例代码,希望能帮助到大家. 说明 1.证书需要用自己的商户里面的证书(注意:证书路 ...
- 登录微信支付商户平台-产品中心,开通企业付款的方法
2019独角兽企业重金招聘Python工程师标准>>> 登录微信支付商户平台-产品中心,开通企业付款的时候,找不到该功能,上网搜集的解决方法,亲测可行. 1.登录微信支付商户平台 2 ...
- java学习 类变量 类方法_这篇文章主要介绍了JAVA类变量及类方法代码实例详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下类变量(...
这篇文章主要介绍了JAVA类变量及类方法代码实例详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 类变量(static) 类变量是该类的所有对象共 ...
- 微信验证服务器是怎么回事,微信服务器认证为什么需要这么多参数?
在进行微信认证开发的时候,官网文档有这样一段话 当时就想为什么这么多参数,都是什么意思?网上有现成的代码,抄下来就可以运行了 可这个疑问一直在心里,百度查询了很多篇文章去解释我这个疑惑,现在就转换成个 ...
- java小程序详解_微信小程序登录Java后台接口(详解,附示例代码)
首先看一下官方文档 地址:微信小程序官方文档API登录接口 我们先对官方给的时序图进行简单的分析 1.当小程序调用wx.login()时,会获得一个code(临时登录凭证),然后我们需要用wx.req ...
- 微信退款服务器系统失败怎么办,微信退款多久到账?微信退款不成功怎么办?...
Hi商学院消息,微信退款多久到账?微信退款不成功怎么办?各位微信用户,如果你在微信上进行了金钱的交易,如果交易失败了是会微信退款给您的哦,但是微信退款需要一点时间才会到您的账户,那么微信退款多久到账呢 ...
- 微信退款服务器系统失败怎么办,微信缴费失败怎么退款?能退回吗?
如今微信平台为用户提供的服务也是越来越多了,除了基本的微信转账和支付功能之外,有微信零钱通理财服务,还有微信各类缴费服务等等.可以在微信平台上操作缴纳电费.水费.燃气费.电话费等基本的生活费用.那如果 ...
- 微信小程序和微信小程序之间的跳转和传参示例代码附讲解
微信小程序开发交流qq群 173683895 承接微信小程序开发.扫码加微信. 正文: 一:微信小程序跳转 使用限制 需要用户触发跳转 从 2.3.0 版本开始,若用户未点击小程序页面任意位 ...
- 微信群控服务器一体机,群控和微信群控,你了解多少?
原标题:群控和微信群控,你了解多少? 相信大家在电影<钢铁侠3>中,曾看到了身穿机械战甲的男主角托尼为了打倒坏人,通过他的电脑智能系统"贾维斯",一人控制无数台机器人同 ...
最新文章
- TokuDB · 引擎特性 · HybridDB for MySQL高压缩引擎TokuDB 揭秘
- spring mvc中filter的设计与实现
- 不相交集的求并算法(按集合大小求并+按高度求并)
- mysql导入创建表空间_oracle创建表空间 用户 数据库导入和导出(转)
- 子乐云音乐播放器源码V1.2php源码
- 服务器证书在注册表上位置,服务器ssl证书注册表
- Android NFC开发-理论篇
- 详解斯坦纳点及斯坦纳树及模版归纳总结
- OpenStack本地存储选项的现在与未来
- Atitit java文件监控 WatchService 的使用 目录 1. // 处理下级多层目录	1 2. // 处理新目录	1 3. Code	2 常见问题对于 1.// 处理下级多层目
- Win8下Qualcomm Atheros AR9285网卡改mac
- Samsung ML-1640/1641/1645/2240/2241/2245/scx4200/4300/4623/4824/4828免费清零软件2.1.2完全版
- ENVI监督分类错误:分离度为0.00000解决办法
- 知乎 live 记录
- MQTT断线重连及订阅消息恢复
- 分享假如你买到缩水U盘了怎么办?认倒霉?肯定不能的!
- html字母输出空格,如何在网页中插入html中文空格与英文空格
- 前端学习笔记,加油!
- 【自适应波束形成】MVDR(Minimum Variance Distortionless Response )笔记
- linux系统下深度学习环境搭建和使用
热门文章
- Java学习笔记(二):String
- Lucene-3.0.0配置
- 理解Java里面的必检异常和非必检异常
- leetcode 28. 实现 strStr()(kmp)
- blender视图缩放_如何使用主视图类型缩放Elm视图
- 循环 直到 python_如果您在Python中存在慢循环,则可以对其进行修复……直到无法解决为止...
- react发送和接收请求_React行为编程简介:请求,等待和阻止
- python边玩边学_边听边学数据科学
- 先知模型 facebook_Facebook先知
- 关于VCP(Virtual Com Port)拓展的调试经历(一)