微信企业红包开发(php)

微信的开发真的有点麻烦,不是难,就是烦,细节多,东西多,关联多

这里记录下 微信企业红包开发的整个过程(弄完的话  微信支付 也差不多了,代码是 php的)

  1. 申请:这里只说简单的过程

    • 先申请公众服务号
    • 在服务号中申请‘微信支付’(登录公众号平台首页左面有这个菜单),觉得微信在推广移动支付,所以还是很好申请的,关于申请中填写的网站最好做一个购买的演示链接,这样可能更容易下来。
  2. 证书
    • 微信支付申请下来了,那么你有了一个 微信的 商户号和登录密码 (会发邮件给你)
    • 还是从申请微信支付哪里 点到  微信商户登录页面
    • 进去先看 [账户管理]设置证书 安装证书 设置证书的 api秘钥(这个是开发的签名key 自己保存好) 然后下载开发用的证书,反正都在这个大菜单里
    • 下载了证书 放到一个安全点的目录(我是用php开发 linux环境,和window可能有点小区别) 注意这个目录不要是 web服务的目录 不然被别人下载了  呵呵。。
  3. 开发代码整理
    • 老规矩直接找别人的代码,找到一个看起来靠谱的,尼玛 6个文件。。。说真的 看demo的时候 我特别讨厌 封装
    • 下面是我自己整理的代码,实际测试ok的时间 不足整理时间的 十分之一 再次无语(不过还是要谢谢 放代码的兄弟)
    • 注意 所有方法全要 放一个php 类里就可以了 GrantHongbao是入口方法  下面的参数自己换一下
    • 注意 证书目录  替换成你 保存证书的目录
    • </pre></li></ul></ol></p><pre name="code" class="plain">

      public function GrantHongbao(){
      //发送红包

      $PARTNERKEY = C(‘WEIXINPAYAPIKEY‘);     //商户的签名加密key

      $APPMCHID = C(‘WEIXINMCHID‘);                         //微信商户号

      $WEIXINAPPID = C(‘WEIXINAPPID‘);                       //微信的appid

      $BILLNO = $this->app_mchid.date(‘YmdHis‘).rand(1000, 9999); //订单号

      $openid = C(‘KKOPENID‘);                           //收红包的人的openid

      $acount = 100;          //发放的金额(单位分)

      $url = ‘https://api.mch.weixin.qq.com/mmpaymkttransfers/sendredpack‘;   //api url

      $ip = ‘101.45.174.67‘;  //本机ip

      $parames = array();

      $parames["nonce_str"] = $this->great_rand();//随机字符串,丌长于 32 位

      $parames["mch_billno"] = $BILLNO;//订单号

      $parames["mch_id"] = $APPMCHID;//商户号

      $parames["wxappid"] = $WEIXINAPPID;

      $parames["nick_name"] = ‘红包nick_name‘;//提供方名称

      $parames["send_name"] = ‘KK‘;//红包发送者名称

      $parames["re_openid"] = $openid;//openid

      $parames["total_amount"] = $acount;//付款金额,单位分

      $parames["min_value"] = $acount;//最小红包金额,单位分

      $parames["max_value"] = $acount;//最大红包金额,单位分

      $parames["total_num"] = 1;//红包収放总人数

      $parames["wishing"] = ‘发个红包真不容易...‘;//红包祝福

      $parames["client_ip"] = $ip;//调用接口的机器 Ip 地址

      $parames["act_name"] = ‘kk测试红包‘;//活劢名称

      $parames["remark"] = ‘快来抢!(没了别来了)‘;//

      $parames["sign"] = $this->get_sign($parames, $PARTNERKEY);//参数签名

      //var_dump($parames);

      //转成xml字符串

      $postXml = $this->array2Xmlstring($parames);

      //echo ‘<br>‘;

      //var_dump($postXml);

      //向微信老大发起请求

      $responseXml = $this->curl_post_ssl($url, $postXml);

      //echo ‘<br>$responseXml<br>‘;

      var_dump($responseXml);

      $responseObj = simplexml_load_string($responseXml, ‘SimpleXMLElement‘, LIBXML_NOCDATA);

      echo $responseObj->return_code;

      }

      /**

      *获取参数列表的签名

      * @param type $parameters

      * @param type $PARTNERKEY:签名的秘钥

      * @return type

      */

      protected function get_sign($parameters, $PARTNERKEY){

      //字典排序

      ksort($parameters);

      $unSignParaString = $this->formatQueryParaMap($parameters, false);

      //要签名的字符串

      $signStr = $unSignParaString . "&key=" . $PARTNERKEY;

      return strtoupper(md5($signStr));

      }

      /**

      *将参数列表转化为连接字符串

      * @param type $paraMap

      * @param type $urlencode

      * @return type

      */

      protected function formatQueryParaMap($paraMap, $urlencode){

      $buff = "";

      foreach ($paraMap as $k => $v){

      if (null != $v && "null" != $v && "sign" != $k) {

      if($urlencode){

      $v = urlencode($v);

      }

      $buff .= $k . "=" . $v . "&";

      }

      }

      $reqPar;

      if (strlen($buff) > 0) {

      $reqPar = substr($buff, 0, strlen($buff)-1);

      }

      return $reqPar;

      }

      /**

      *生成随机数(默认30位长度)

      * @return string

      */

      protected function great_rand($length = 30){

      $str = ‘1234567890abcdefghijklmnopqrstuvwxyz‘;

      for($i=0;$i<$length;$i++){

      $j=rand(0,35);

      $t1 .= $str[$j];

      }

      return $t1;

      }

      /**

      *数组转xml串

      * @param type $arr

      * @return string

      */

      protected function array2Xmlstring($arr){

      $xml = "<xml>";

      foreach ($arr as $key=>$val)

      {

      if (is_numeric($val))

      {

      $xml.="<".$key.">".$val."</".$key.">";

      }

      else{

      $xml.="<".$key."><![CDATA[".$val."]]></".$key.">";

      }

      }

      $xml.="</xml>";

      return $xml;

      }

      /**

      * 访问微信接口

      * @param type $url

      * @param type $vars

      * @param type $second

      * @param type $aHeader

      * @return boolean

      */

      protected function curl_post_ssl($url, $vars, $second=30,$aHeader=array()){

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

      //cert 与 key 分别属于两个.pem文件

      curl_setopt($ch,CURLOPT_SSLCERT,‘证书保存路径‘.‘apiclient_cert.pem‘);

      curl_setopt($ch,CURLOPT_SSLKEY,‘证书保存路径‘.‘apiclient_key.pem‘);

      curl_setopt($ch,CURLOPT_CAINFO,‘证书保存路径‘.‘rootca.pem‘);

      if( count($aHeader) >= 1 ){

      curl_setopt($ch, CURLOPT_HTTPHEADER, $aHeader);

      }

      curl_setopt($ch,CURLOPT_POST, 1);

      curl_setopt($ch,CURLOPT_POSTFIELDS,$vars);

      $data = curl_exec($ch);

      if($data){

      curl_close($ch);

      return $data;

      }

      else {

      $error = curl_errno($ch);

      curl_close($ch);

      return $error;

      }

      }

      
      
时间: 2024-08-02 06:58:14

微信企业红包开发(php)的相关文章

企业微信侧边栏功能/微信企业授权

企业微信上线了侧边栏功能,对提高服务效率有很高的帮助.api文档查看:https://open.work.weixin.qq.com/api/doc/90000/90136/91789 配置后大概是这个样子,单个客户会有一个“客户资料”,群聊没有这块.不过“快捷回复”是一个比较常用的功能.但是很多时候不能满足要求,比如不同群设置不同的差异化“快捷回复”/定时回复等.则需要自定义侧边栏来实现. 自定义侧边栏开发步骤如下. 1.在企业微信中新建自定义,并配置应用的可信域名,然后“配置到聊天侧边栏”

微信公众平台开发(111) 现金红包、裂变红包、企业付款

keyword:微信公众平台 微信红包 现金红包 裂变红包 企业付款 作者:方倍工作室 原文:http://www.cnblogs.com/txw1958/p/wxpay-mkt-transfer.html  在这篇微信公众平台开发教程中,我们将介绍怎样在实现现金红包.裂变红包.企业付款以及红包交易查询(含现金红包和裂变红包)和企业付款查询的功能. 本文分为下面二个部分: 微信支付接口SDK定义 现金红包.裂变红包.企业付款的调用方法 一.微信红包SDK 现金红包.裂变红包.企业付款本质均为商户

微信语音红包小程序开发如何提高精准度 红包小程序语音识别精准度 微信小程序红包开发语音红包

公司最近开发的一个微信语音红包,就是前些时间比较火的包你说红包小程序.如何提高识别的精准度呢. 在说精准度之前,先大概说下整个语音识别的开发流程.前面我有文章已经说到过了.具体我就不谈了.一笔带过. 先是通过小程序前端调动语音录制功能拿到客户说的语音,比如mp3格式,然后通过百度的语音识别算法,转为文字.具体看百度语音识别的接口.地址http://yuyin.baidu.com/docs/asr/188 返回的格式如下: // 成功返回 { "err_no": 0, "err

微信小程序开发对传统企业的10大好处

微信小程序的上线,大家更多讨论的话题是围绕微信小程序在互联网领域的影响,但是随着传统企业加入互联网的步伐当中,互联网的每一次大大小小的变革都会涉及到传统领域,那么作为传统企业的红利到底在哪儿呢?微信小程序开发对传统企业有什么影响?传统行业应该如何搭乘微信小程序的顺风车呢? 下面总结微信小程序开发对传统企业的10大好处 提供一个新的开发平台 微信小程序可以打通微信应用号,升级公众号的功能,并且微信小程序同时集成了APP store的功能,特别是对于传统企业来说APP的开成本较高,而且使用频率也比较

微信人人红包扫雷APP软件定制开发

信达红包扫雷APP定制开发咨询找[陈生:147薇4322电0658],信达红包扫雷APP原生开发.各类红包扫雷系统以及软件系统开发皆可定制. 互联网让中国人的集体智商得到大大提高.一个人可以很笨蛋,换了一屋子人整天说.吆喝,最后形成一些共同的共识,这个共识的水平怎么样,就是这个屋子里的人的集体智商的体现. 五包多雷(200以上禁0,即发包200以上不能设置0为雷) 2中2陪5.1倍       3中18倍     4中4陪31     5中5陪52 解释:发包时设置的雷必须完全出现了才可以获陪,

微信小程序开发(4) 企业展示

在这篇微信小程序开发教程中,我们将介绍如何使用微信小程序开发企业内部宣传展示等功能. 一.小程序主体部分 一个小程序主体部分由三个文件组成,必须放在项目的根目录,如下: 1. 小程序逻辑 App({ onLaunch: function() { // Do something initial when launch. }, onShow: function() { // Do something when show. }, onHide: function() { // Do something

基于ping++聚合支付进行微信红包开发

1.微信方面的开发,一定要详细的阅读微信支付的开发文档. https://pay.weixin.qq.com/wiki/doc/api/tools/cash_coupon.php?chapter=13_1 2.如果是公司的项目肯定有准备好的微信商户平台和微信公众号平台的相关账号,如果是个人的测试项目,请提前按照文档进行准备,否则无法进行下去. 3.因为使用的是ping++第三方聚合支付,所以代码其实比较简单,可以参考ping++官方文档. 4.因为涉及现金操作,所以微信本身也有很多安全设置.按照

微信公众平台开发问答

微信公众平台开发问答是一个微信知识问答区,专注于提供微信应用及开发技术知识的整理.归类和检索. 主题:新手常见问题 问:我是新手,没有开发基础,应该如何学习微信公众平台的开发?答:先学习PHP和Mysql,可以在网上找相应的教程,也可参考书籍<PHP和MySQL Web开发(原书第4版)>:再学习微信公众平台开发入门教程,了解微信收发消息原理及回复:然后根据微信开发文档,熟悉接口,并在此基础上实现一些基本的小功能,并扩展到更复杂的功能上. 问:URL和Token是什么意思?有什么用?我应该如何

微信裂变红包

微信裂变红包是指微信用户在收到企业发送的组合红包之后, 可以再次将红包中的剩余金额分享给好友领取的一种现金红包形式. 一.功能介绍 春节期间,微信红包以其独特的魅力,优秀的用户体验和安全的支付环境,一经推出即受到了广大用户的热烈欢迎,现微信支付现金红包向微信支付商户开发,具体能力如下: 1.商户调用接口时,通过指定发送对象以及发送金额的方式发放红包,这样的方式,允许商户灵活的应用于各种各样丰富的活动场景 2.领取到红包后,用户的资金直接进入微信零钱,避免繁复的领奖流程,带给用户微信支付原生的流畅