微信现金红包接口实现红包发放

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了微信现金红包接口实现红包发放相关的知识,希望对你有一定的参考价值。

微信现金红包接口实现红包发放:

一:流程:【

流程:微信用户访问红包活动页面--》后端判断是否是微信访问的

【否:提示用微信打开连接,是:提示用户是否授权允许,获取其的用户信息【openID等信息】】--》

进入红包活动页面---》用户点击领取红包【判断是否领取过红包】是:【提示已领取过红包】否 

--》后端程序调用接口发放红包

--》微信用户在微信中收到红包

--》打开红包

--》红包金额会添加到钱包零钱里

--》完成红包发放。


二:要实现微信现金红包接口实现红包发放,首先要符合以下条件:


1.用于发放红包的微信公众号要是服务类型


2.登录微信公众平台官网后,在公众平台后台管理页面 - 开发者中心页,

点击“修改配置”按钮,填写服务器地址(URL)、Token和EncodingAESKey,

其中URL是开发者用来接收微信消息和事件的接口URL。Token可由开发者可以任意填写,

用作生成签名(该Token会和接口URL中包含的Token进行比对,从而验证安全性)。

EncodingAESKey由开发者手动填写或随机生成,将用作消息体加解密密钥。


3.获取access_token:公众号可以使用AppID和AppSecret调用本接口来获取access_token。

【AppID和AppSecret可在微信公众平台官网-开发者中心页中获得(需要已经成为开发者,且帐号没有异常状态)。】


4.微信公众号要开通 “网页授权接口” 用户获取用户基本信息【特别是openID ,发红包时用到】


5.微信公众号的 “微信支付“  中的  ”商户号” 要开通微信支付【发红包的金额是该支付账户扣款】,开通“现金红包”接口【调用该接口发放红包】。


6. 登陆 ”商户号”【微信公众号分配的商户号。第5 中有说明】 在 “API安全” 中 下载php版的 证书 【.pem格式】


以上如描述不清楚,请查看 微信开发者文档 里面有详细的秒杀。


部分代码如下【其余的请查看附件】:

<?php

namespace RedClient\Controller;

use Think\Controller;

use RedClient\Redpack\WeiXinInfo;

use RedClient\Redpack\Oauth;

use RedClient\Redpack\SendRedPack;

use RedClient\Redpack\CreateRedPack;

class IndexController extends Controller 

{

public function index()

{

$this->isWeixin();//是否是微信打开

if($this->access)

{

$this->display();

}

else

{

$class=new Oauth();

$class->index(‘http://www.baicimi.com/lottery.php/Index/oauth‘);

}

}

//获取用户信息 openID

public function oauth()

{

$code=isset($_GET[‘code‘])?strip_tags(trim($_GET[‘code‘])):‘‘;

$state=isset($_GET[‘state‘])?strip_tags(trim($_GET[‘state‘])):‘‘;

$class=new Oauth();

$userInfo=$class->getCode($code,$state);//获取用户信息

if(!empty($userInfo[‘data‘]))

{

//$model=M(‘wxuser‘);

//$result=$model->where(‘openid = "‘.$userInfo[‘data‘]->openid.‘"‘)->field(‘openid‘)->select();

if(empty($result))

{

$userInfo[‘data‘]=$this->object2array($userInfo[‘data‘]);

$model->data($userInfo[‘data‘])->add();

}

}

$userInfo[‘data‘]=$this->object2array($userInfo[‘data‘]);

//创建红包

$class=new CreateRedPack();

$red=$class->redval();

//发红包

$class=new SendRedPack();

$configs=array(

‘send_name‘=>‘红包发送者名称‘,//红包发送者名称

‘re_openid‘=>$userInfo[‘data‘][‘openid‘],//接受红包的用户,用户在wxappid下的openid

‘total_amount‘=>$red,//付款金额,单位分

‘total_num‘=>‘1‘,//红包发放总人数

‘wishing‘=>‘红包祝福语‘,//红包祝福语

‘client_ip‘=>$_SERVER[‘SERVER_ADDR‘],//调用接口的机器Ip地址

‘act_name‘=>‘活动名称‘,//活动名称

‘remark‘=>‘备注信息‘,// 备注信息

);

$class->setFields($configs);

$result=$class->requestXml();

//微信返回信息处理

if(strtoupper($result[‘return_code‘])==‘SUCCESS‘)

{

if(strtoupper($result[‘result_code‘])==‘SUCCESS‘)

{

//红包发送成功!

$datas[‘flag‘]=1;

echo $result[‘err_code_des‘];

}

else

{

//红包发送失败

$datas[‘flag‘]=0;

$datas[‘msg‘]=$result[‘err_code_des‘];

echo $result[‘err_code_des‘];

}

}

else

{

//红包发送失败

$datas[‘flag‘]=0;

$datas[‘msg‘]=$result[‘err_code_des‘];

echo $result[‘err_code_des‘];

}

}

public function isWeixin()

{

if (strpos($_SERVER[‘HTTP_USER_AGENT‘], ‘MicroMessenger‘) !== false) 

$this->access=true; 

return false; 

}

//类转换成数组

public function object2array($object) 

{

 if (is_object($object)) 

 {

foreach ($object as $key => $value) 

{

 $array[$key] = $value;

}

 }

 else 

 {

$array = $object;

 }

 return $array;

}

}


本文出自 “8733190” 博客,请务必保留此出处http://8743190.blog.51cto.com/8733190/1915335

以上是关于微信现金红包接口实现红包发放的主要内容,如果未能解决你的问题,请参考以下文章

调用微信现金红包接口发放红包

浅析微信支付:商户平台开通现金红包指定用户发放红包记录查询

微信支付中微信红包的接口测试,Java版本

微信支付现金红包接口

现金红包 接口开发注意事项

微信红包接口开发