微信红包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 $app_id ‘wxXXXXXXXXXXXX‘//公众账号appid,首先申请与之配套的公众账号

    private $app_secret ‘XXXXXXXXXXXXXXXXXXXXXXXX‘;//公众号secret,用户获取用户授权token

    private $app_mchid ‘XXXXXXXX‘;//商户号id

    function __construct(){

    //do sth here....

    }

    /**

     * 微信支付

     * @param string $openid 用户openid

     */

    public function pay($re_openid)

    {

        include_once(‘WxHongBaoHelper.php‘);

        $commonUtil new CommonUtil();

        $wxHongBaoHelper new WxHongBaoHelper();

        $wxHongBaoHelper->setParameter("nonce_str"$this->great_rand());//随机字符串,丌长于 32 位

        $wxHongBaoHelper->setParameter("mch_billno"$this->app_mchid.date(‘YmdHis‘).rand(1000, 9999));//订单号

        $wxHongBaoHelper->setParameter("mch_id"$this->app_mchid);//商户号

        $wxHongBaoHelper->setParameter("wxappid"$this->app_id);

        $wxHongBaoHelper->setParameter("nick_name"‘红包‘);//提供方名称

        $wxHongBaoHelper->setParameter("send_name"‘红包‘);//红包发送者名称

        $wxHongBaoHelper->setParameter("re_openid"$re_openid);//相对于医脉互通的openid

        $wxHongBaoHelper->setParameter("total_amount", 100);//付款金额,单位分

        $wxHongBaoHelper->setParameter("min_value", 100);//最小红包金额,单位分

        $wxHongBaoHelper->setParameter("max_value", 100);//最大红包金额,单位分

        $wxHongBaoHelper->setParameter("total_num", 1);//红包収放总人数

        $wxHongBaoHelper->setParameter("wishing"‘感谢您参与红包派发活动,祝您新年快乐!‘);//红包祝福诧

        $wxHongBaoHelper->setParameter("client_ip"‘127.0.0.1‘);//调用接口的机器 Ip 地址

        $wxHongBaoHelper->setParameter("act_name"‘红包活动‘);//活劢名称

        $wxHongBaoHelper->setParameter("remark"‘快来抢!‘);//备注信息

        $postXml $wxHongBaoHelper->create_hongbao_xml();

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

        $responseXml $wxHongBaoHelper->curl_post_ssl($url$postXml);

        //用作结果调试输出

        //echo htmlentities($responseXml,ENT_COMPAT,‘UTF-8‘);

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

    return $responseObj->return_code;

    }

获取随机字符串方法:


1

2

3

4

5

6

7

8

9

10

11

/**

 * 生成随机数

 */

public function great_rand(){

    $str ‘1234567890abcdefghijklmnopqrstuvwxyz‘;

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

        $j=rand(0,35);

        $t1 .= $str[$j];

    }

    return $t1;    

}

签名算法:


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

/**

例如:

appid:    wxd111665abv58f4f

mch_id:    10000100

device_info:  1000

Body:    test

nonce_str:  ibuaiVcKdpRxkhJA

第一步:对参数按照 key=value 的格式,并按照参数名 ASCII 字典序排序如下:

stringA="appid=wxd930ea5d5a258f4f&body=test&device_info=1000&mch_i

d=10000100&nonce_str=ibuaiVcKdpRxkhJA";

第二步:拼接支付密钥:

stringSignTemp="stringA&key=192006250b4c09247ec02edce69f6a2d"

sign=MD5(stringSignTemp).toUpperCase()="9A0A8659F005D6984697E2CA0A

9CF3B7"

*/

protected function get_sign(){

    define(‘PARTNERKEY‘,"QSRXXXXXXXXXXXXXXXXXXXXX");

    try {

        if (null == PARTNERKEY || "" == PARTNERKEY ) {

           throw new SDKRuntimeException("密钥不能为空!" "<br>");

        }

        if($this->check_sign_parameters() == false) {   //检查生成签名参数

           throw new SDKRuntimeException("生成签名参数缺失!" "<br>");

        }

        $commonUtil new CommonUtil();

        ksort($this->parameters);

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

        $md5SignUtil new MD5SignUtil();

        return $md5SignUtil->sign($unSignParaString,$commonUtil->trimString(PARTNERKEY));

    }catch (SDKRuntimeException $e)

    {

        die($e->errorMessage());

    }

}

CURL请求以及发送证书:


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

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文件

    //请确保您的libcurl版本是否支持双向认证,版本高于7.20.1

    curl_setopt($ch,CURLOPT_SSLCERT,dirname(__FILE__).DIRECTORY_SEPARATOR.‘zhengshu‘.DIRECTORY_SEPARATOR.‘apiclient_cert.pem‘);

    curl_setopt($ch,CURLOPT_SSLKEY,dirname(__FILE__).DIRECTORY_SEPARATOR.‘zhengshu‘.DIRECTORY_SEPARATOR.‘apiclient_key.pem‘);

    curl_setopt($ch,CURLOPT_CAINFO,dirname(__FILE__).DIRECTORY_SEPARATOR.‘zhengshu‘.DIRECTORY_SEPARATOR.‘rootca.pem‘);

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

        return false;

    }

}

入口文件:


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

@require "pay.php";

//获取用户信息

$get $_GET[‘param‘];

$code $_GET[‘code‘];

//判断code是否存在

if($get==‘access_token‘ && !empty($code)){

    $param[‘param‘] = ‘access_token‘;

    $param[‘code‘] = $code;

    $packet new Packet();

    //获取用户openid信息

    $userinfo $packet->_route(‘userinfo‘,$param);

    if(empty($userinfo[‘openid‘])){

        exit("NOAUTH");

    }

    //调取支付方法

    $packet->_route(‘wxpacket‘,array(‘openid‘=>$userinfo[‘openid‘]));

}else{

    $packet->_route(‘userinfo‘);

}

开发所需文档:

1)官方红包高级接口文档

2)官方公众平台获取用户基本信息接口文档

3)商户平台开发文档

源码下载:

链接:http://pan.baidu.com/s/1o6Nvoi2

密码:acjp

时间: 2024-08-20 11:38:07

微信红包API接口(PHP)的相关文章

微信群API接口

安卓微信的api,个人微信开发API协议,微信 ipad sdk,微信ipad协议,微信web版接口api,微信网页版接口,微信电脑版sdk,微信开发sdk,微信开发API,微信协议,微信接口文档sdk,替代微信ipad协议的api接口,网页个人微信api分享,微信机器人SDK接口API,个人微信号API接口,微信群API接口 1.基础消息类型1.客户端发送的心跳包HeartBeatReq = 1001; 2.消息接收确认回复(接收或拒绝接收)MsgReceivedAck = 1002; 3.错

PHP开发微信平台红包api

如今是微信时代啦.很多网站都添加微信红包api接口class PHP网站如何实现微信红包api,当然有的cms网站提供了红包接口插件,但都是付费的, 最好自定义源代码. 至于开发微信红包api接口使用哪种编程语言,有些程序员喜欢使用Java开发,代码如:import Java 这里介绍使用PHP编程语言开发. 微信红包api代码如下: <?php /******************************************************** *   @author Kyler

转:微信红包接口开放!

去年春节红包闪击战,掀起了一阵波澜!马云直呼-珍珠港事件! 2014年春节,超800万的用户通过微信参与了抢红包活动,超过4000万个红包被用户领取,人均抢到红包4-5个,除夕高峰区间,每分钟有2.5万个. 在2014世界杯期间,微信彩票每天发放红包,网友投注世界杯焦点赛事即可100%领取. 现在,微信红包功能接口对商户正式开放.没有了复杂的申请流程,商户可根据开发能力及所举办活动的具体需求来选择红包发放方式.目前,商户发放现金红包有系统自动发放.人工手动发放两种方式.其中“系统自动发放”由商户

【 微信API接口(全) - 微信支付/微信红包/微信卡券/微信小店/JSAPI】

微信入口绑定,微信事件处理,微信API全部操作包含在这些文件中. 微信支付.微信红包.微信卡券.微信小店. 源码地址 点击阅读 更多java,java学习,java面试题  http://techfoxbbs.com

总结的一些微信API接口

本文给大家介绍的是个人总结的一些微信API接口,包括微信支付.微信红包.微信卡券.微信小店等,十分的全面,有需要的小伙伴可以参考下. 1. [代码]index.php <?php include_once 'lib.inc.php';   $wcObj = new WeChat("YOUKUIYUAN"); $wcObj->wcValid(); 2. [代码]微信入口类 <?php /**  * Description of wechat  *  * @author

(实用篇)php官方微信接口大全(微信支付、微信红包、微信摇一摇、微信小店)

微信入口绑定,微信事件处理,微信API全部操作包含在这些文件中.内容有:微信摇一摇接口/微信多客服接口/微信支付接口/微信红包接口/微信卡券接口/微信小店接口/JSAPI <?php class WxApi { const appId = ""; const appSecret = ""; const mchid = ""; //商户号 const privatekey = ""; //私钥 public $parame

微信API接口大全

微信入口绑定,微信事件处理,微信API全部操作包含在这些文件中. 微信支付.微信红包.微信卡券.微信小店. 1. [代码]index.php <?php include_once 'lib.inc.php';    $wcObj = new WeChat("YOUKUIYUAN"); $wcObj->wcValid(); 2. [代码]微信入口类 <?php /**  * Description of wechat  *  * @author Administrato

微信小程序的Web API接口设计及常见接口实现

微信小程序给我们提供了一个很好的开发平台,可以用于展现各种数据和实现丰富的功能,通过小程序的请求Web API 平台获取JSON数据后,可以在小程序界面上进行数据的动态展示.在数据的关键 一环中,我们设计和编写Web API平台是非常重要的,通过这个我们可以实现数据的集中控制和管理,本篇随笔介绍基于Asp.NET MVC的Web API接口层的设计和常见接口代码的展示,以便展示我们常规Web API接口层的接口代码设计.参数的处理等内容. 1.Web API整体性的架构设计 我们整体性的架构设计

微信小程序API接口

微信小程序API接口 wx.request(OBJECT)   wx.request发起的是 HTTPS 请求. OBJECT参数说明: url->开发者服务器接口地址->String; data->请求的参数->Object.String; header->设置请求的 header , header 中不能设置 Referer->Object; method->默认为 GET,有效值:OPTIONS, GET, HEAD, POST, PUT, DELETE,