调用微信红包接口返回(转)

终于找到原因了,写微信开发文档的真是垃圾,需要去掉 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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值