/**

* 格式化参数格式化成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 微信支付企业付款(示例代码)相关推荐

  1. php 工商银行公众号支付代码_php开发微信支付企业付款实例代码

    企业付款的应用场景: 公众号向已关注用户付款,比如处理退款.财务结算等,本文主要和大家分享php开发微信支付企业付款实例代码,希望能帮助到大家. 说明 1.证书需要用自己的商户里面的证书(注意:证书路 ...

  2. 登录微信支付商户平台-产品中心,开通企业付款的方法

    2019独角兽企业重金招聘Python工程师标准>>> 登录微信支付商户平台-产品中心,开通企业付款的时候,找不到该功能,上网搜集的解决方法,亲测可行. 1.登录微信支付商户平台 2 ...

  3. java学习 类变量 类方法_这篇文章主要介绍了JAVA类变量及类方法代码实例详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下类变量(...

    这篇文章主要介绍了JAVA类变量及类方法代码实例详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 类变量(static) 类变量是该类的所有对象共 ...

  4. 微信验证服务器是怎么回事,微信服务器认证为什么需要这么多参数?

    在进行微信认证开发的时候,官网文档有这样一段话 当时就想为什么这么多参数,都是什么意思?网上有现成的代码,抄下来就可以运行了 可这个疑问一直在心里,百度查询了很多篇文章去解释我这个疑惑,现在就转换成个 ...

  5. java小程序详解_微信小程序登录Java后台接口(详解,附示例代码)

    首先看一下官方文档 地址:微信小程序官方文档API登录接口 我们先对官方给的时序图进行简单的分析 1.当小程序调用wx.login()时,会获得一个code(临时登录凭证),然后我们需要用wx.req ...

  6. 微信退款服务器系统失败怎么办,微信退款多久到账?微信退款不成功怎么办?...

    Hi商学院消息,微信退款多久到账?微信退款不成功怎么办?各位微信用户,如果你在微信上进行了金钱的交易,如果交易失败了是会微信退款给您的哦,但是微信退款需要一点时间才会到您的账户,那么微信退款多久到账呢 ...

  7. 微信退款服务器系统失败怎么办,微信缴费失败怎么退款?能退回吗?

    如今微信平台为用户提供的服务也是越来越多了,除了基本的微信转账和支付功能之外,有微信零钱通理财服务,还有微信各类缴费服务等等.可以在微信平台上操作缴纳电费.水费.燃气费.电话费等基本的生活费用.那如果 ...

  8. 微信小程序和微信小程序之间的跳转和传参示例代码附讲解

    微信小程序开发交流qq群   173683895    承接微信小程序开发.扫码加微信. 正文: 一:微信小程序跳转 使用限制 需要用户触发跳转 从 2.3.0 版本开始,若用户未点击小程序页面任意位 ...

  9. 微信群控服务器一体机,群控和微信群控,你了解多少?

    原标题:群控和微信群控,你了解多少? 相信大家在电影<钢铁侠3>中,曾看到了身穿机械战甲的男主角托尼为了打倒坏人,通过他的电脑智能系统"贾维斯",一人控制无数台机器人同 ...

最新文章

  1. TokuDB · 引擎特性 · HybridDB for MySQL高压缩引擎TokuDB 揭秘
  2. spring mvc中filter的设计与实现
  3. 不相交集的求并算法(按集合大小求并+按高度求并)
  4. mysql导入创建表空间_oracle创建表空间 用户 数据库导入和导出(转)
  5. 子乐云音乐播放器源码V1.2php源码
  6. 服务器证书在注册表上位置,服务器ssl证书注册表
  7. Android NFC开发-理论篇
  8. 详解斯坦纳点及斯坦纳树及模版归纳总结
  9. OpenStack本地存储选项的现在与未来
  10. Atitit java文件监控 WatchService 的使用 目录 1. // 处理下级多层目录 1 2. // 处理新目录 1 3. Code 2 常见问题对于 1.// 处理下级多层目
  11. Win8下Qualcomm Atheros AR9285网卡改mac
  12. Samsung ML-1640/1641/1645/2240/2241/2245/scx4200/4300/4623/4824/4828免费清零软件2.1.2完全版
  13. ENVI监督分类错误:分离度为0.00000解决办法
  14. 知乎 live 记录
  15. MQTT断线重连及订阅消息恢复
  16. 分享假如你买到缩水U盘了怎么办?认倒霉?肯定不能的!
  17. html字母输出空格,如何在网页中插入html中文空格与英文空格
  18. 前端学习笔记,加油!
  19. 【自适应波束形成】MVDR(Minimum Variance Distortionless Response )笔记
  20. linux系统下深度学习环境搭建和使用

热门文章

  1. Java学习笔记(二):String
  2. Lucene-3.0.0配置
  3. 理解Java里面的必检异常和非必检异常
  4. leetcode 28. 实现 strStr()(kmp)
  5. blender视图缩放_如何使用主视图类型缩放Elm视图
  6. 循环 直到 python_如果您在Python中存在慢循环,则可以对其进行修复……直到无法解决为止...
  7. react发送和接收请求_React行为编程简介:请求,等待和阻止
  8. python边玩边学_边听边学数据科学
  9. 先知模型 facebook_Facebook先知
  10. 关于VCP(Virtual Com Port)拓展的调试经历(一)