PHP开发微信平台红包api

如今是微信时代啦。很多网站都添加微信红包api接口class

PHP网站如何实现微信红包api,当然有的cms网站提供了红包接口插件,但都是付费的,

最好自定义源代码。

至于开发微信红包api接口使用哪种编程语言,有些程序员喜欢使用Java开发,代码如:import Java

这里介绍使用PHP编程语言开发。

微信红包api代码如下:

<?php

/********************************************************

*  
@author Kyler You <QQ:2444756311>

*  
@link
http://mp.weixin.qq.com/wiki/home/index.html

*  
@version 2.0.1

*   @uses $wxApi = new WxApi();

*  
@package 微信API接口 陆续会继续进行更新

********************************************************/

classWxApi {

constappId     ="";

constappSecret   ="";

constmchid     ="";//商户号

constprivatekey  ="";//私钥

public$parameters=array();

publicfunction__construct(){

}

/****************************************************

* 微信提交API方法,返回微信指定JSON

****************************************************/

publicfunctionwxHttpsRequest($url,$data= null){

$curl= curl_init();

curl_setopt($curl, CURLOPT_URL,$url);

curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE);

curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, FALSE);

if(!empty($data)){

curl_setopt($curl, CURLOPT_POST, 1);

curl_setopt($curl, CURLOPT_POSTFIELDS,$data);

}

curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);

$output= curl_exec($curl);

curl_close($curl);

return$output;

}

/****************************************************

* 微信带证书提交数据 - 微信红包使用

****************************************************/

publicfunctionwxHttpsRequestPem($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_PROXY, ‘10.206.30.98‘);

//curl_setopt($ch,CURLOPT_PROXYPORT, 8080);

curl_setopt($ch,CURLOPT_URL,$url);

curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,false);

curl_setopt($ch,CURLOPT_SSL_VERIFYHOST,false);

//以下两种方式需选择一种

//第一种方法,cert 与 key 分别属于两个.pem文件

//默认格式为PEM,可以注释

curl_setopt($ch,CURLOPT_SSLCERTTYPE,‘PEM‘);

curl_setopt($ch,CURLOPT_SSLCERT,getcwd().‘/apiclient_cert.pem‘);

//默认格式为PEM,可以注释

curl_setopt($ch,CURLOPT_SSLKEYTYPE,‘PEM‘);

curl_setopt($ch,CURLOPT_SSLKEY,getcwd().‘/apiclient_key.pem‘);

curl_setopt($ch,CURLOPT_CAINFO,‘PEM‘);

curl_setopt($ch,CURLOPT_CAINFO,getcwd().‘/rootca.pem‘);

//第二种方式,两个文件合成一个.pem文件

//curl_setopt($ch,CURLOPT_SSLCERT,getcwd().‘/all.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);

echo"call faild, errorCode:$error\n";

curl_close($ch);

returnfalse;

}

}

/****************************************************

* 微信获取AccessToken 返回指定微信公众号的at信息

****************************************************/

publicfunctionwxAccessToken($appId= NULL ,$appSecret= NULL){

$appId    =is_null($appId) ? self::appId :$appId;

$appSecret  =is_null($appSecret) ? self::appSecret :$appSecret;

//echo $appId,$appSecret;

$url     ="
https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=".$appId."&secret=".$appSecret;

$result    =$this->wxHttpsRequest($url);

//print_r($result);

$jsoninfo   = json_decode($result, true);

$access_token =$jsoninfo["access_token"];

return$access_token;

}

/****************************************************

* 微信通过OPENID获取用户信息,返回数组

****************************************************/

publicfunctionwxGetUser($openId){

$wxAccessToken=$this->wxAccessToken();

$url     ="
https://api.weixin.qq.com/cgi-bin/user/info?access_token=".$wxAccessToken."&openid=".$openId."&lang=zh_CN";

$result    =$this->wxHttpsRequest($url);

$jsoninfo   = json_decode($result, true);

return$jsoninfo;

}

/****************************************************

* 微信通过指定模板信息发送给指定用户,发送完成后返回指定JSON数据

****************************************************/

publicfunctionwxSendTemplate($jsonData){

$wxAccessToken=$this->wxAccessToken();

$url     ="
https://api.weixin.qq.com/cgi-bin/message/template/send?access_token=".$wxAccessToken;

$result    =$this->wxHttpsRequest($url,$jsonData);

return$result;

}

/****************************************************

*   发送自定义的模板消息

****************************************************/

publicfunctionwxSetSend($touser,$template_id,$url,$data,$topcolor=‘#7B68EE‘){

$template=array(

‘touser‘=>$touser,

‘template_id‘=>$template_id,

‘url‘=>$url,

‘topcolor‘=>$topcolor,

‘data‘=>$data

);

$jsonData= json_encode($template);

$result=$this->wxSendTemplate($jsonData);

return$result;

}

/****************************************************

* 微信设置OAUTH跳转URL,返回字符串信息 - SCOPE = snsapi_base //验证时不返回确认页面,只能获取OPENID

****************************************************/

publicfunctionwxOauthBase($redirectUrl,$state="",$appId= NULL){

$appId    =is_null($appId) ? self::appId :$appId;

$url="
https://open.weixin.qq.com/connect/oauth2/authorize?appid=".$appId."&redirect_uri=".$redirectUrl."&response_type=code&scope=snsapi_base&state=".$state."#wechat_redirect";

return$url;

}

/****************************************************

* 微信设置OAUTH跳转URL,返回字符串信息 - SCOPE = snsapi_userinfo //获取用户完整信息

****************************************************/

publicfunctionwxOauthUserinfo($redirectUrl,$state="",$appId= NULL){

$appId    =is_null($appId) ? self::appId :$appId;

$url="
https://open.weixin.qq.com/connect/oauth2/authorize?appid=".$appId."&redirect_uri=".$redirectUrl."&response_type=code&scope=snsapi_userinfo&state=".$state."#wechat_redirect";

return$url;

}

/****************************************************

* 微信OAUTH跳转指定URL

****************************************************/

publicfunctionwxHeader($url){

header("location:".$url);

}

/****************************************************

* 微信通过OAUTH返回页面中获取AT信息

****************************************************/

publicfunctionwxOauthAccessToken($code,$appId= NULL ,$appSecret= NULL){

$appId    =is_null($appId) ? self::appId :$appId;

$appSecret  =is_null($appSecret) ? self::appSecret :$appSecret;

$url="
https://api.weixin.qq.com/sns/oauth2/access_token?appid=".$appId."&secret=".$appSecret."&code=".$code."&grant_type=authorization_code";

$result    =$this->wxHttpsRequest($url);

//print_r($result);

$jsoninfo   = json_decode($result, true);

//$access_token   = $jsoninfo["access_token"];

return$jsoninfo;

}

/****************************************************

* 微信通过OAUTH的Access_Token的信息获取当前用户信息 // 只执行在snsapi_userinfo模式运行

****************************************************/

publicfunctionwxOauthUser($OauthAT,$openId){

$url     ="
https://api.weixin.qq.com/sns/userinfo?access_token=".$OauthAT."&openid=".$openId."&lang=zh_CN";

$result    =$this->wxHttpsRequest($url);

$jsoninfo   = json_decode($result, true);

return$jsoninfo;

}

/*****************************************************

*   生成随机字符串 - 最长为32位字符串

*****************************************************/

publicfunctionwxNonceStr($length= 16,$type= FALSE) {

$chars="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";

$str="";

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

$str.=substr($chars, mt_rand(0,strlen($chars) - 1), 1);

}

if($type== TRUE){

returnstrtoupper(md5(time() .$str));

}

else{

return$str;

}

}

/*******************************************************

*   微信商户订单号 - 最长28位字符串

*******************************************************/

publicfunctionwxMchBillno($mchid= NULL) {

if(is_null($mchid)){

if(self::mchid ==""||is_null(self::mchid)){

$mchid= time();

}

else{

$mchid= self::mchid;

}

}

else{

$mchid=substr(addslashes($mchid),0,10);

}

returndate("Ymd",time()).time().$mchid;

}

/*******************************************************

*   微信格式化数组变成参数格式 - 支持url加密

*******************************************************/

publicfunctionwxSetParam($parameters){

if(is_array($parameters) && !empty($parameters)){

$this->parameters =$parameters;

return$this->parameters;

}

else{

returnarray();

}

}

/*******************************************************

*   微信格式化数组变成参数格式 - 支持url加密

*******************************************************/

publicfunctionwxFormatArray($parameters= NULL,$urlencode= FALSE){

if(is_null($parameters)){

$parameters=$this->parameters;

}

$restr="";//初始化空

ksort($parameters);//排序参数

foreach($parametersas$k=>$v){//循环定制参数

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

if($urlencode){//如果参数需要增加URL加密就增加,不需要则不需要

$v= urlencode($v);

}

$restr.=$k."=".$v."&";//返回完整字符串

}

}

if(strlen($restr) > 0) {//如果存在数据则将最后“&”删除

$restr=substr($restr, 0,strlen($restr)-1);

}

return$restr;//返回字符串

}

/*******************************************************

*   微信MD5签名生成器 - 需要将参数数组转化成为字符串[wxFormatArray方法]

*******************************************************/

publicfunctionwxMd5Sign($content,$privatekey){

try{

if(is_null($key)) {

thrownewException("财付通签名key不能为空!");

}

if(is_null($content)) {

thrownewException("财付通签名内容不能为空");

}

$signStr=$content."&key=".$key;

returnstrtoupper(md5($signStr));

}

catch(Exception$e)

{

die($e->getMessage());

}

}

/*******************************************************

*   微信Sha1签名生成器 - 需要将参数数组转化成为字符串[wxFormatArray方法]

*******************************************************/

publicfunctionwxSha1Sign($content,$privatekey){

try{

if(is_null($key)) {

thrownewException("财付通签名key不能为空!");

}

if(is_null($content)) {

thrownewException("财付通签名内容不能为空");

}

$signStr=$content."&key=".$key;

returnstrtoupper(sha1($signStr));

}

catch(Exception$e)

{

die($e->getMessage());

}

}

/*******************************************************

*   将数组解析XML - 微信红包接口

*******************************************************/

publicfunctionwxArrayToXml($parameters= NULL){

if(is_null($parameters)){

$parameters=$this->parameters;

}

if(!is_array($parameters) ||empty($parameters)){

die("参数不为数组无法解析");

}

$xml="<xml>";

foreach($arras$key=>$val)

{

if(is_numeric($val))

{

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

}

else

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

}

$xml.="</xml>";

return$xml;

}

}

代码完毕,编译上传即可。

时间: 2024-11-10 15:07:19

PHP开发微信平台红包api的相关文章

一起发红包 微信平台红包接口调用教程(转)

微信在昨天正式向支付商户平台开放了红包发放的接口,支付商户平台将可以调用此接口向自己的用户发放红包来作为促销活动.那么支付商户平台要怎样开通这个功能呢?又有那些需要注意的呢?希望这篇文章对大家有些用处. 首先,商户调用微信红包接口时,服务器会进行证书验证,所以要在商户平台下载证书.在管理后台的“账户信息”里找到“安全设置”就可以下载了证书了. 接着就是向帐号中充值,因为发放现金红包将扣除商户的可用余额,所以需要预先充值,确保可用余额充足.进入“资金管理”菜单找到“现金管理”,在此进行充值,保证帐

微信红包API接口(PHP)

发布时间:2015年2月25日 / 分类:WEB开发,PHP / 74,825 / 241 ℃ 根据微信高级红包接口,开发PHP版本的API接口,现在进行主要代码分析. 红包接口调用请求代码,所有请求参数为必填参数与文档对应: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 class Wxapi {     private $a

微信企业红包开发(php)

微信的开发真的有点麻烦,不是难,就是烦,细节多,东西多,关联多 这里记录下 微信企业红包开发的整个过程(弄完的话  微信支付 也差不多了,代码是 php的) 申请:这里只说简单的过程 先申请公众服务号 在服务号中申请'微信支付'(登录公众号平台首页左面有这个菜单),觉得微信在推广移动支付,所以还是很好申请的,关于申请中填写的网站最好做一个购买的演示链接,这样可能更容易下来. 证书 微信支付申请下来了,那么你有了一个 微信的 商户号和登录密码 (会发邮件给你) 还是从申请微信支付哪里 点到  微信

微信平台的开发与集成

最近一直在调用微信的API,却发现一直调用不成功,纠结了好久,各方面找教程,找官方,官方里的文档也只是写得很模糊,说是按三步走. 1.申请App_ID 2.填写包名3. 获取程序签名的md5值, 这三步只要你走对了就能调通,可是大家都不知道有时候我们Eclipse调用的keystore和我们打包的keystore获取到的程序签名的md5是不一样的.而且是每一个keystore对应生成的apk的值都会不一样.我们在申请的时候填的程序签名值是正式打包的,但我们在eclipse部署上去的却是用的我们默

[转]C#开发微信公众平台-就这么简单

本文转自:http://www.it165.net/pro/html/201403/11102.html 写在前面 服务号和订阅号 URL配置 创建菜单 查询.删除菜单 接受消息 发送消息(图文.菜单事件响应) 示例Demo下载 后记 最近公司在做微信开发,其实就是接口开发,网上找了很多资料,当然园友也写了很多教程,但都是理论说了一大堆,实用指导或代码很少.如果你自己仔细研究下,其实就那么点东西,C#实现起来也很简单,原本不想写这篇文章的,但是本人当时摸索走了很多弯路,这边总结下,希望初次接触微

[c#]asp.net开发微信公众平台(8)微信9大高级接口,自定义菜单

前7篇把最基础的消息接收和回复全做完了,  也把高级接口的入口和分拆处理写好了空方法,  此篇接着介绍微信的9大高级接口, 并着重讲解其中的自定义菜单. 微信9大接口为: 1.语音识别接口 2.客服接口 3.OAuth2.0 网页授权接口 4.生成带参数的二维码接口 5.获取用户地理位置接口 6.获取用户基本信息接口 7.获取关注者列表接口 8.用户分组接口 9.上传下载多媒体文件接口 具体介绍: 1. 语音识别 功能描述:通过语音识别接口,用户发送的语音,将同时给出语音识别出的文本内容. 实用

微信平台开发——日历服务

很多人可能用过如下的功能: 我向微信号发个字符,然后后台去解析字符,拆出其中的关键字,然后去数据库查询是否开启此项服务,如果服务开启,则返回给用户调用此服务的结果. 最近两天开始做的服务有,天气查询,日历,快递,火车,黄金...等六个服务做成接口,今天要分析的是这里面唯一没有调用外部API接口的服务. 首先,我们要写好一个计算农历的方法,: #region 获取农历方法 ///<summary> /// 实例化一个 ChineseLunisolarCalendar ///</summar

基于ThinkPHP3的微信平台开发_1

微信公众平台是个好东西,具体的就不说了,我直接说技术>_< 下图为目录结构一览: 微信开发 - 文件目录结构 平台功能: 此次开发的平台是面向多微信公众号.微信多公众号主(下面简称号主)的第三方管理平台.功能全部开发完毕后,号主通过注册.填写微信公众号配置(在腾讯的平台上设置,如Token.EncodingAESKey等).填写本平台配置(配置Token.EncodingAESKey等),即可实现微信公众平台大部分业务功能(可能受微信公众号类型限制). 逻辑划分: 本平台基于ThinkPHP框

C#开发微信公众化平台

 C#开发微信公众化平台 写在前面 服务号和订阅号 URL配置 创建菜单 查询.删除菜单 接受消息 发送消息(图文.菜单事件响应) 示例Demo下载 后记 最近公司在做微信开发,其实就是接口开发,网上找了很多资料,当然园友也写了很多教程,但都是理论说了一大堆,实用指导或代码很少.如果你自己仔细研究下,其实就那么点东西,C#实现起来也很简单,原本不想写这篇文章的,但是本人当时摸索走了很多弯路,这边总结下,希望初次接触微信公众平台的朋友别像当时的我一样. 自己动手,丰衣足食. 服务号和订阅号 服务号