终于找到原因了,写微信开发文档的真是垃圾,需要去掉 CDATA 标记
string  nonce_str = Get_GuidStr(); //随机字符串
             string  sign =  "" ; //签名
             string  mch_id =  "100000000" ; //商户号
             string  mch_billno = Get_BillNo(mch_id); //商户订单号
             string  wxappid =  "wx8asdfderqweqweqwe2b" ; //公众账号appid
             string  nick_name =  "aa" ; //提供方名称
             string  send_name =  "aa" ; //商户名称
             string  re_openid =  "asdfasfwerqweqeqweqe" ; //用户openid
             int  total_amount = 100; //付款金额(分)
             int  min_value = 100; //最小红包金额
             int  max_value = 100; //最大红包金额
             int  total_num = 1; //红包发放总人数
             string  wishing =  "新年新气象,祝您身体健康,万事如意!" ; //红包祝福语
             string  client_ip =  "114.249.210.173" //"221.5.252.231";//Ip地址
             string  act_name =  "测试红包功能。" ; //活动名称
             string  remark =  "测的越多,送的越多。" ; //备注
             string  logo_imgurl =  "" ; //商户logo的url
             string  share_content =  "" ; //分享文案
             string  share_url =  "" ; //分享链接
             string  share_imgurl =  "" ; //分享的图片

<?php
const  API =  'https://api.mch.weixin.qq.com/mmpaymkttransfers/sendredpack' ;
const  MCH_ID =  '' ;
const  MCH_SECRET =  '' ;
const  APP_KEY =  '' ;
const  APP_SECRET =  '' ;
const  OPENID =  '' ;
$money  = 100;
//------------------logic----------------------
$params  = [
     'mch_billno' =>gen_mch_billno(),
     'mch_id' =>MCH_ID,
     'wxappid' =>APP_KEY,
     'nick_name' => 'xxxxx' ,
     'send_name' => 'xxxx' ,
     're_openid' =>OPENID,
     'total_amount' => $money ,
     'min_value' => $money ,
     'max_value' => $money ,
     'total_num' =>1,
     'wishing' => '感谢您参加!' ,
     'client_ip' => '127.0.0.1' ,
     'act_name' => '测试红包' ,
     'act_id' =>17481,
     'remark' => '备注提示' ,
     'logo_imgurl' => 'http://www.sogou.com/images/logo/new/sogou.png'  ,
     'share_url' => 'http://xxxx.com' ,
     'share_imgurl' => 'http://www.sogou.com/images/logo/new/sogou.png' ,
     'share_content' => '恭喜发财' ,
     'remark' => '新年红包哦~' ,
     'nonce_str' =>gen_nonce(),
];
$res  = post(API, gen_xml( $params ), true);
var_dump( $res );
//-----------------func-----------------------
function  gen_xml( $params ) {
     $xml  '<xml>' ;
     $fmt  '<%s><![CDATA[%s]]></%s>' ;
     foreach ( $params  as  $key => $val ){
         $xml .=sprintf( $fmt $key $val $key );
     }
     $xml .= '</xml>' ;
     return  $xml ;
}
function  sign( $params ){
     ksort( $params );
     $beSign  array_filter ( $params 'strlen' );
     $pairs  array ();
     foreach  ( $beSign  as  $k  =>  $v ) {
         $pairs [] =  "$k=$v" ;
     }
     $sign_data  = implode( '&' $pairs );
     $sign_data .= '&key=' .MCH_SECRET;
     return  strtoupper (md5( $sign_data ));
}
function  gen_nonce(){
     return  md5(uniqid( '' , true));
}
function  gen_mch_billno(){
     return  MCH_ID. date ( 'Ymd' ).time();
}
function  post( $url $strXml $CA  = true) {
     //$arrHeader[] = 'Content-Length: ' . strlen($strXml);
     $cacert  = __DIR__ .  '/cacert.pem' //CA根证书  
     $SSL  substr ( $url , 0, 8) ==  "https://"  ? true : false;  
     $ch  = curl_init();
     curl_setopt( $ch , CURLOPT_URL,  $url );
     //curl_setopt($ch, CURLOPT_HTTPHEADER, $arrHeader);
     if  ( $SSL  &&  $CA ) {  
         curl_setopt( $ch , CURLOPT_SSL_VERIFYPEER, true);    // 只信任CA颁布的证书  
         curl_setopt( $ch , CURLOPT_SSLCERT,__DIR__. '/apiclient_cert.pem' );
         curl_setopt( $ch , CURLOPT_SSLKEY,__DIR__. '/apiclient_key.pem' );
         curl_setopt( $ch , CURLOPT_CAINFO,  $cacert );  // CA根证书(用来验证的网站证书是否是CA颁布)  
         curl_setopt( $ch , CURLOPT_SSL_VERIFYHOST, 2);  // 检查证书中是否设置域名,并且是否与提供的主机名匹配  
     else  if  ( $SSL  && ! $CA ) {  
         curl_setopt( $ch , CURLOPT_SSL_VERIFYPEER, false);  // 信任任何证书  
         curl_setopt( $ch , CURLOPT_SSL_VERIFYHOST, 2);  // 检查证书中是否设置域名  
     }  
     curl_setopt( $ch , CURLOPT_POST, 1);
     curl_setopt( $ch , CURLOPT_POSTFIELDS,  $strXml );
     curl_setopt( $ch , CURLOPT_RETURNTRANSFER, 1);
     curl_setopt( $ch , CURLOPT_HEADER, 0);
     $res  = curl_exec( $ch );
     curl_close( $ch );
     return  $res ;
}

转载于:https://www.cnblogs.com/sanwenyu/p/4688935.html

调用微信红包接口返回(转)相关推荐

  1. java调用微信红包接口_java调用微信现金红包接口的心得与体会

    这几天看了下以前写的有关微信支付的博客,看的人仍是挺多的,看了下留言不知道是由于博客写的不够细仍是什么状况,大多都找我要源码,我以为吧程序员仍是须要有这么一个思考的过程,所以没直接给源码,俗话说&qu ...

  2. php 调用微信支付的时间戳,前端调用微信支付接口

    支付按钮的点击事件$(´.Save_Patient_Msg´).click(function(){ $(´.Save_Patient_Msg´).off(´click´); var hrdfId = ...

  3. 微信公众号开发 自定义分享 从前台到Java后台 调用微信JS接口分享朋友圈

    20180811写在前面的话 有很多人遇到问题之后问我,结果大多数是因为配置问题,所以请详细阅读前面的配置步骤. 20181016注意事项 收到反馈,之前写的接口即将废弃,源代码中的js接口需要修改, ...

  4. 微信开发 --- 调用微信上传图片接口,并保存到自己的服务器

    微信开发 - 调用微信上传图片接口,并保存到自己的服务器 整体思路是这样的: 1.先把手机上的图片上传到微信服务器,然后返回一个图片ID 2.在通过后台根据ID从微信后台拿到流,保存到服务器 前几个步 ...

  5. 调用微信上传图片接口和下载图片接口

    目的:调用微信上传图片接口上传图片,并调用下载图片接口下载到本地 1.绑定域名 登录微信公众平台后,进入 公众号设置-->公众号设置页面如图(1),点击设置如图(2),输入域名后,点击保存. 注 ...

  6. Android应用调用微信登录接口

    很多App都是需要用户登录的,例如电商类的APP,用户登录后可以查看自己的购物订单,浏览痕迹等,登陆的话又可以分为多种登录,例如QQ,微信,微博,支付宝等,那么接下来这篇文章讲诉的是应用如何调用微信的 ...

  7. 【spring boot】使用RestTemplate调用微信code2Session接口

    前言 spring boot 2.1.1.RELEASE 使用RestTemplate调用微信code2Session接口 spring boot中使用RestTemplate,参考这里. 调用方法 ...

  8. 调用微信支付接口总结

        项目里面用到了微信支付的功能,照着文档学习了一下,这里做个总结来记录.项目用到的是anglusJS来做前端开发,我这边简化了,用的ajax进行异步的调用,然后业务也直接写在了控制层(不过不应该 ...

  9. java 微信报关_微信开放平台,_请求微信报关接口返回的数据,微信开放平台 - phpStudy...

    请求微信报关接口返回的数据 请求微信报关 接口错误 552E051CB6F4DBC6029B8218DBD5A52A gh_4dbf09a0a18e 1342661701 20160825113538 ...

最新文章

  1. 对列表去重并保持原来的顺序
  2. 【怎样写代码】偷窥高手 -- 反射技术(四):深入窥视属性
  3. c语言测验答案,C语言测验题答案.doc
  4. npm ERR! cb.apply is not a function npm ERR! A complete log of this run can be found in: npm ERR!
  5. lsof查看占用高_查看端口占用情况lsof,并关闭对应进程kill
  6. UE4学习-虚幻4帮助手册、通过蓝图实现动画效果、添加时间轴、添加声音、C++和蓝图事件关联
  7. android抽奖动画,Android App中实现简单的刮刮卡抽奖效果的实例详解
  8. mysql binlog查看_MySQL--17 配置binlog-server 及中间件
  9. VM虚拟机链接克隆及linux eth0网卡的快速设置方法
  10. 新人学习web前端必须要知道的基础知识,让你轻松入门
  11. 配置quick-cocos2d-x-develop OpenGL version too old
  12. Silverlight:UpdateSourceTrigger属性的应用
  13. mysql job status_检查SQL Server Job状态
  14. pytorch 中Tensor.uniform_代替numpy.random.uniform/ permute函数 /torch.mm()和torch.matmul()
  15. 按键精灵实现自动刷抖音、快手等app
  16. 说说vector的emplace_back和push_back
  17. Android vitamo 实现横竖屏的切换和页面内部的网络视频
  18. 【微信公众号开发解决URL接口配置问题 】
  19. Google最热门60款开源项目
  20. 动态规划-(基本知识总结)

热门文章

  1. 联想thinkpadE450笔记本电脑自带的键盘不停自动打\\\\\\
  2. 动态内存的申请和非动态内存的申请_深圳罗湖“限制非深户申请公办学位”惹争议,官方权威回应来了...
  3. 什么是C语言,对C语言的基本认识,C语言开始。
  4. C语言字母升序排列,C语言改错题,题目:实现n个字符串的升序排列
  5. 一、剪辑行业概述与剪辑工具介绍
  6. SOA对话:金融风暴不会阻碍SOA市场发展
  7. ETUDE HOUSE伊蒂之屋携手全新中国区品牌大使Justin黄明昊
  8. 《黄昏清兵卫》中学到的工作态度
  9. 神经网络及其在点云中的应用
  10. 坚持终身学习的重要性:只靠已有知识,你走不了多远