在本文中,我们将给您介绍关于PHP开发微信红包功能的代码分享的详细内容,并且为您解答php开发微信红包功能的代码分享的相关问题,此外,我们还将为您提供关于asp.net开发微信派发现金红包/H5网页抢
在本文中,我们将给您介绍关于PHP开发微信红包功能的代码分享的详细内容,并且为您解答php开发微信红包功能的代码分享的相关问题,此外,我们还将为您提供关于asp.net开发微信派发现金红包/H5网页抢红包功能(思路详解)、C#中如何实现微信红包功能的示例代码分享、C#实现微信红包功能、EasyWeChat和PHP开发微信小程序的分享功能实现技巧的知识。
本文目录一览:- PHP开发微信红包功能的代码分享(php开发微信红包功能的代码分享)
- asp.net开发微信派发现金红包/H5网页抢红包功能(思路详解)
- C#中如何实现微信红包功能的示例代码分享
- C#实现微信红包功能
- EasyWeChat和PHP开发微信小程序的分享功能实现技巧
PHP开发微信红包功能的代码分享(php开发微信红包功能的代码分享)
本文主要和大家介绍php微信公众号开发之微信红包实现方法,结合实例形式分析了php实现微信公众号红包发送功能的实现思路、步骤与具体操作技巧,需要的朋友可以参考下,希望能帮助到大家。
一.需求:
粉丝通过在客户的公众平台点击他们公司的订单,然后给这个订单返现五元,发到订单的这个微信号上。
二.开发想法:
1:先拿到关注这个粉丝的openid,openid是关注某个公众号的微信标识,这样就可以定位到这个人是订单的操作者了。
立即学习“PHP免费学习笔记(深入)”;
2:发送xml数据请求微信服务器。
代码有两个php文件
1.oauth2.php
<?php $code=$_GET['code']; $state=$_GET['state']; $appid='XXXX'; $appsecret='XXXXXXXX';// if (empty($code)) $this->error('授权失败'); $token_url='https://api.weixin.qq.com/sns/oauth2/access_token?appid='.$appid'&secret='.$appsecret.'&code='.$code.'&grant_type=authorization_code'; $token=json_decode(file_get_contents($token_url)); if (isset($token->errcode)) { echo '<h1>错误1</h1>'.$token->errcode; echo '<br/><h2>错误信息1:</h2>'.$token->errmsg; exit; } session_start(); $_SESSION['openid']= $token->openid; header('location:http://www.XXXXXXX.com/XXXXX/XXXXXX/XXXXXX/hongbao.php');//要跳转的文件路径 ?>
2.hongbao.php
<?php //XXXXX。。是需要开发者自己填写的内容,注意不要泄密 // 从session中获取到openid; $openid=$_SESSION["openid"]; if(empty($openid)) { header('location:https://open.weixin.qq.com/connect/oauth2/authorize?appid=XXXXXXXX&redirect_uri=http://www.XXXXXXX.com/oauth2.php&respose_type=code&scope=snsapi_base&state=XXXX&connect_redirect=1#wechat_redirect'); } } // 关键的函数 public function weixin_red_packet(){ // 请求参数 // 随机字符串 $data['nonce_str']=$this->get_unique_value(); //商户号,输入你的商户号 $data['mch_id']="XXXXXXX"; //商户订单号,可以按要求自己组合28位的商户订单号 $data['mch_billno']=$data['mch_id'].date("ymd")."XXXXXX".rand(1000,9999); //公众帐号appid,输入自己的公众号appid $data['wxappid']="XXXXXXX"; //商户名称 $data['send_name']="XXXXX"; //用户openid,输入待发红包的用户openid session_start(); $data['re_openid']=$_SESSION["openid"]; //付款金额 $data['total_amount']="XXXX"; //红包发放总人数 $data['total_num']="XXXX"; //红包祝福语 $data['wishing']="XXXX"; //IP地址 $data['client_ip']=$_SERVER['LOCAL_ADDR']; //活动名称 $data['act_name']="XXXXX"; //备注 $data['remark']="XXXXX"; // 生成签名 //对数据数组进行处理 //API密钥,输入自己的K 微信商户号里面的K $appsecret="XXXXXXXXXXXXXX"; // $data=array_filter($data); ksort($data); $str=""; foreach($data as $k=>$v){ $str.=$k."=".$v."&"; } $str.="key=".$appsecret; $data['sign']=strtoupper(MD5($str)); /* 发红包操作过程: 1.将请求数据转换成xml 2.发送请求 3.将请求结果转换为数组 4.将请求信息和请求结果录入到数据库中 4.判断是否通信成功 5.判断是否转账成功 */ //发红包接口地址 $url="https://api.mch.weixin.qq.com/mmpaymkttransfers/sendredpack"; //将请求数据由数组转换成xml $xml=$this->arraytoxml($data); //进行请求操作 $res=$this->curl($xml,$url); //将请求结果由xml转换成数组 $arr=$this->xmltoarray($res); } // 生成32位唯一随机字符串 private function get_unique_value(){ $str=uniqid(mt_rand(),1); $str=sha1($str); return md5($str); } // 将数组转换成xml private function arraytoxml($arr){ $xml="<xml>"; foreach($arr as $k=>$v){ $xml.="<".$k.">".$v."</".$k.">"; } $xml.="</xml>"; return $xml; } // 将xml转换成数组 private function xmltoarray($xml){ //禁止引用外部xml实体 libxml_disable_entity_loader(true); $xmlstring=simplexml_load_string($xml,"SimpleXMLElement",LIBXML_NOCDATA); $arr=json_decode(json_encode($xmlstring),true); return $arr; } //进行curl操作 private function curl($param="",$url) { $postUrl = $url; $curlPost = $param; //初始化curl $ch = curl_init(); //抓取指定网页 curl_setopt($ch, CURLOPT_URL,$postUrl); //设置header curl_setopt($ch, CURLOPT_HEADER, 0); //要求结果为字符串且输出到屏幕上 curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); //post提交方式 curl_setopt($ch, CURLOPT_POST, 1); // 增加 HTTP Header(头)里的字段 curl_setopt($ch, CURLOPT_POSTFIELDS, $curlPost); // 终止从服务端进行验证 curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE); //证书放到网站根目录的cert文件夹底下 curl_setopt($ch,CURLOPT_SSLCERT,dirname(__FILE__).DIRECTORY_SEPARATOR. 'cert'.DIRECTORY_SEPARATOR.'apiclient_cert.pem'); curl_setopt($ch,CURLOPT_SSLKEY,dirname(__FILE__).DIRECTORY_SEPARATOR. 'cert'.DIRECTORY_SEPARATOR.'apiient_key.pem'); curl_setopt($ch,CURLOPT_CAINFO,dirname(__FILE__).DIRECTORY_SEPARATOR. 'cert'.DIRECTORY_SEPARATOR.'rootca.pem'); //运行curl $data = curl_exec($ch); //关闭curl curl_close($ch); return $data; } ?>
相关推荐:
php生成微信红包的开发思路分享
微信之微信红包实现详解
微信红包接口使用方法汇总
以上就是PHP开发微信红包功能的代码分享的详细内容,更多请关注php中文网其它相关文章!
asp.net开发微信派发现金红包/H5网页抢红包功能(思路详解)
临近节日,公司里为了给广大老客户赠福利,以及来一波拉新活动:搞了一个营销活动,大概活动规则如下:
1、老客户通过网页抢红包,中奖会派发微信支付的红包;
2、新客户只要关注后就可以中奖,持续关注x天后再派发红包(防止撸羊毛,关注后立马取关)。
开发的思路分析:
一、网页版抢红包功能,
1、前端先做好抢红包的页面;
3、后台配置微信公众号的appid,appsecret等和 微信支付商户的mch_id,key,证书等;
3、后端使用微信公众号里的网页授权功能,用户在打开h5网页的时候,拿到openid;
4、根据设置的活动时间范围,红包金额等限制,判断是否可以抢红包;
5、抢红包符合规则,则将openid存入数据库;提示用户抢到红包了。
6、根据openid来派发红包;
核心代码如下:
using Senparc.Weixin.MP.TenPayLibV3; string certPath = HttpContext.Current.Server.MapPath(weixinPayModel.certInfoPath); // @"F:\apiclient_cert.p12"; sendNormalRedPackResult = RedPackApi.SendNormalRedPack( weixinModel.AppId, weixinPayModel.mch_id, weixinPayModel.paykey, certPath, //证书物理地址 openid, //接受收红包的用户的openId actModel.send_name, //红包发送者名称 "147.114.50.74", //IP hbMoney, //付款金额,单位分 actModel.wishing, //红包祝福语 actModel.act_name, //活动名称 actModel.remark, //备注信息 out nonceStr, out paySign, null, //场景id(非必填) null, //活动信息(非必填) null //资金授权商户号,服务商替特约商户发放时使用(非必填) );
代码里,我们用到Senparc这个第3方开源组件,可以非常方便的开发红包功能。
二、关注红包:
通过关注时候触发的事件,拿到openid,在根据活动限制判断是否中奖;中奖后,提示用户活动红包;
核心代码如下:
using Senparc.Weixin.MP.Entities; using Senparc.Weixin.MP.Helpers; using Senparc.Weixin.MP.MessageHandlers; /// <summary> /// 订阅(关注)事件 /// </summary> /// <returns></returns> public override IResponseMessageBase OnEvent_SubscribeRequest(RequestMessageEvent_Subscribe requestMessage) { int apiid = wxcomm.getApiid(); //------印美图接口 begin------ //threeInterface.weipaiInterface wxcf = new threeInterface.weipaiInterface(); //wxcf.weipaiSubscribe(requestMessage.FromUserName, apiid); //------印美图接口 end------ xjHongBao xjMgr = new xjHongBao(); string getHongBaoRet= xjMgr.SubscribeHongBao(requestMessage.FromUserName, apiid); if(string.IsNullOrWhiteSpace( getHongBaoRet)) { return EventProcess(6, requestMessage); } else { return EventProcess(100, requestMessage, getHongBaoRet); } }
也用到了Senparc这个开源组件,其实相对比较简单。
到此这篇关于asp.net开发微信派发现金红包/H5网页抢红包功能的文章就介绍到这了,更多相关asp.net 微信派发现金红包内容请搜索以前的文章或继续浏览下面的相关文章希望大家以后多多支持!
- 微信抢红包ASP.NET代码轻松实现
C#中如何实现微信红包功能的示例代码分享
这篇文章主要介绍了C#实现微信红包功能,使用正态分布计算红包金额,具有一定的参考价值,感兴趣的小伙伴们可以参考一下本文实例为大家分享了C#仿微信红包功能的具体代码,供大家参考,具体内容如下
Program.cs代码:
class Program { static void Main(string[] args) { //初始化要发起的红包基础数据 double total = 100; int num = 50; double min = 0.01; string temp; bool flag = false; Console.WriteLine(string.Format(是否需要自定义红包金额和数量(默认{0}元/{1}人)Y/N:, total, num)); temp = Console.ReadLine(); if (temp.Trim().ToLower().Equals(y) || temp.Trim().ToLower().Equals(yes)) { Console.WriteLine(请输入你要发起的红包金额:); do { temp = Console.ReadLine(); flag = double.TryParse(temp, out total); if (!flag) { Console.WriteLine(金额必须为整数或小数,请重新输入:); } } while (!flag); Console.WriteLine(请输入你要发起的红包个数:); do { temp = Console.ReadLine(); flag = int.TryParse(temp, out num); if (!flag) { Console.WriteLine(红包个数必须为整数,请重新输入:); } } while (!flag); } total -= min * num; if (total < 0) { Console.WriteLine(抱歉,你的金额不足!); return; } //产生正态分布的随机红包金额,并计算相关的金额和数量保证数据的准确性 double average = total / num; double variance = 1; Random u1 = new Random(); Random u2 = new Random(); double[] nums = new double[num]; for (int i = 0; i < num; i++) { double? result = total; if (i < num - 1 && total > 0) { do { result = Round((double)normal(u1.NextDouble(), u2.NextDouble(), average, variance), 2); } while (result == null || result < 0); if (total > result) { total = (double)Round((total - (double)result), 2); } else { result = total; total = 0; } } else if (i == num - 1) { total = 0; } nums[i] = Math.Round(min + (double)result, 2); //浮点运算问题,这里需要四舍五入数据才正确 Console.WriteLine(string.Format(第{0}个红包金额:{1}, i + 1, (min + result))); Console.WriteLine(剩余金额: + ((i != num - 1 && total == 0) ? min * (num - i - 1) : total + (min * (num - i - 1)))); } Console.WriteLine(最大金额: + nums.Max()); Console.WriteLine(最小金额: + nums.Min()); Console.WriteLine(总额: + Round(nums.Sum(), 2)); Console.WriteLine(初始方差: + variance); Console.WriteLine(结果方差: + Variance(nums)); Console.WriteLine(按任意键退出!); Console.ReadKey(); } /// <summary> /// 产生符合正态分布的随机数 /// </summary> /// <param name=u1>正态分布第一个随机数</param> /// <param name=u2>正态分布第二个随机数</param> /// <param name=averageValue>正态期望(平均值)</param> /// <param name=variance>正态标准差(Math.Sqrt(方差))</param> /// <returns></returns> public static double? normal(double u1, double u2, double averageValue, double variance) { double? result = null; try { result = averageValue + Math.Sqrt(variance) * Math.Sqrt((-2) * Math.Log(u1)) * Math.Sin(2 * Math.PI * u2); } catch (Exception) { result = null; } return result; } /// <summary> /// 求一组数据的方差 /// </summary> /// <param name=list>要求的数组</param> /// <returns></returns> public static double Variance(double[] nums) { double average = nums.Sum() / nums.Length; double sum = 0; double variance = 0; foreach (double num in nums) { sum += Math.Pow((num - average), 2); } variance = sum / nums.Length; return variance; } /// <summary> /// 截取小数指定小数位,且不四舍五入 /// </summary> /// <param name=originNum>要截取的小数</param> /// <param name=lastNum>截取小数后位数</param> /// <returns></returns> public static double? Round(double originNum, int lastNum) { double? result = null; int index = originNum.ToString().IndexOf('.'); if (index != -1) { string temp = originNum.ToString(); result = Convert.Todouble(temp.Substring(0, index + 1) + temp.Substring(index + 1, Math.Min(temp.Length - index - 1, lastNum))); } if (result == 0) { result = null; } else if (index == -1) { result = originNum; } return result; } }
运行结果:
@H_301_13@
@H_301_13@
C#实现微信红包功能
本文实例为大家分享了C#仿微信红包功能的具体代码,供大家参考,具体内容如下
Program.cs代码:
class Program { static void Main(string[] args) { //初始化要发起的红包基础数据 double total = 100; int num = 50; double min = 0.01; string temp; bool flag = false; Console.WriteLine(string.Format("是否需要自定义红包金额和数量(默认{0}元/{1}人)Y/N:",total,num)); temp = Console.ReadLine(); if (temp.Trim().ToLower().Equals("y") || temp.Trim().ToLower().Equals("yes")) { Console.WriteLine("请输入你要发起的红包金额:"); do { temp = Console.ReadLine(); flag = double.TryParse(temp,out total); if (!flag) { Console.WriteLine("金额必须为整数或小数,请重新输入:"); } } while (!flag); Console.WriteLine("请输入你要发起的红包个数:"); do { temp = Console.ReadLine(); flag = int.TryParse(temp,out num); if (!flag) { Console.WriteLine("红包个数必须为整数,请重新输入:"); } } while (!flag); } total -= min * num; if (total < 0) { Console.WriteLine("抱歉,你的金额不足!"); return; } //产生正态分布的随机红包金额,并计算相关的金额和数量保证数据的准确性 double average = total / num; double variance = 1; Random u1 = new Random(); Random u2 = new Random(); double[] nums = new double[num]; for (int i = 0; i < num; i++) { double? result = total; if (i < num - 1 && total > 0) { do { result = Round((double)normal(u1.NextDouble(),u2.NextDouble(),average,variance),2); } while (result == null || result < 0); if (total > result) { total = (double)Round((total - (double)result),2); } else { result = total; total = 0; } } else if (i == num - 1) { total = 0; } nums[i] = Math.Round(min + (double)result,2); //浮点运算问题,这里需要四舍五入数据才正确 Console.WriteLine(string.Format("第{0}个红包金额:{1}",i + 1,(min + result))); Console.WriteLine("剩余金额:" + ((i != num - 1 && total == 0) ? min * (num - i - 1) : total + (min * (num - i - 1)))); } Console.WriteLine("最大金额:" + nums.Max()); Console.WriteLine("最小金额:" + nums.Min()); Console.WriteLine("总额:" + Round(nums.Sum(),2)); Console.WriteLine("初始方差:" + variance); Console.WriteLine("结果方差:" + Variance(nums)); Console.WriteLine("按任意键退出!"); Console.ReadKey(); } /// <summary> /// 产生符合正态分布的随机数 /// </summary> /// <param name="u1">正态分布第一个随机数</param> /// <param name="u2">正态分布第二个随机数</param> /// <param name="averageValue">正态期望(平均值)</param> /// <param name="variance">正态标准差(Math.Sqrt(方差))</param> /// <returns></returns> public static double? normal(double u1,double u2,double averageValue,double variance) { double? result = null; try { result = averageValue + Math.Sqrt(variance) * Math.Sqrt((-2) * Math.Log(u1)) * Math.Sin(2 * Math.PI * u2); } catch (Exception) { result = null; } return result; } /// <summary> /// 求一组数据的方差 /// </summary> /// <param name="list">要求的数组</param> /// <returns></returns> public static double Variance(double[] nums) { double average = nums.Sum() / nums.Length; double sum = 0; double variance = 0; foreach (double num in nums) { sum += Math.Pow((num - average),2); } variance = sum / nums.Length; return variance; } /// <summary> /// 截取小数指定小数位,且不四舍五入 /// </summary> /// <param name="originNum">要截取的小数</param> /// <param name="lastNum">截取小数后位数</param> /// <returns></returns> public static double? Round(double originNum,int lastNum) { double? result = null; int index = originNum.ToString().IndexOf('.'); if (index != -1) { string temp = originNum.ToString(); result = Convert.Todouble(temp.Substring(0,index + 1) + temp.Substring(index + 1,Math.Min(temp.Length - index - 1,lastNum))); } if (result == 0) { result = null; } else if (index == -1) { result = originNum; } return result; } }
运行结果:
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持编程小技巧。
EasyWeChat和PHP开发微信小程序的分享功能实现技巧
easywechat和php开发微信小程序的分享功能实现技巧
随着微信小程序的流行,开发者们越来越关注如何在微信小程序中实现分享功能。在本文中,我们将介绍如何使用EasyWeChat与PHP开发微信小程序的分享功能,并提供代码示例。
一、前期准备工作
在开始之前,我们需要准备一些基础的开发环境和材料:
- 微信公众平台账号:注册一个微信公众平台账号,并创建一个小程序。
- EasyWeChat:安装EasyWeChat库,该库提供了许多方便的功能来与微信接口进行交互。
- PHP环境:搭建好PHP环境,并安装Composer包管理工具。
二、EasyWeChat的配置
立即学习“PHP免费学习笔记(深入)”;
首先,我们需要在项目中引入EasyWeChat。使用Composer可以很方便地安装EasyWeChat,只需在项目根目录下运行以下命令:
composer require overtrue/wechat
安装完成后,在项目中引入EasyWeChat的自动加载文件:
require_once ''vendor/autoload.php'';
接下来,我们需要配置EasyWeChat。在项目根目录下创建一个config.php文件,并按照以下代码进行配置:
<?php return [ ''app_id'' => ''YOUR_APP_ID'', ''secret'' => ''YOUR_APP_SECRET'', ''token'' => ''YOUR_TOKEN'', ''log'' => [ ''level'' => ''debug'', ''file'' => ''path/to/log.log'', ], ];
将YOUR_APP_ID、YOUR_APP_SECRET和YOUR_TOKEN替换为你的小程序的AppID、AppSecret和Token。 log配置可选,用于记录日志。
三、实现分享功能
完成EasyWeChat的配置后,我们开始实现分享功能。
- 获取access_token
分享功能需要用到access_token,我们可以使用EasyWeChat提供的API来获取access_token。在config.php文件中新增以下代码:
$wechat = new EasyWeChatFoundationApplication(require_once ''config.php''); $accessToken = $wechat->access_token; $token = $accessToken->getToken();
- 生成分享链接
通过EasyWeChat提供的API,我们可以生成自定义的分享链接。在以下代码中,我们生成一个分享朋友圈的链接:
$shareLink = ''https://api.weixin.qq.com/cgi-bin/wxaapp/createwxaqrcode?access_token=''.$token.''&path=pages/index/index&scene=123'';
其中,path参数用于指定小程序的页面路径,scene参数用于指定场景值。
- 调用微信接口
最后,我们需要调用微信接口来进行分享。在以下代码中,我们使用PHP的curl库来发送POST请求:
$ch = curl_init(); curl_setopt($ch, CURLOPT_URL, ''https://api.weixin.qq.com/cgi-bin/message/custom/send?access_token=''.$token); curl_setopt($ch, CURLOPT_POST, true); curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode([ ''touser'' => ''OPENID'', ''msgtype'' => ''news'', ''news'' => [ ''articles'' => [ [ ''title'' => ''分享标题'', ''description'' => ''分享描述'', ''url'' => $shareLink, ''picurl'' => ''分享图片URL'', ], ], ], ], JSON_UNESCAPED_UNICODE)); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); $result = curl_exec($ch); curl_close($ch);
将OPENID替换为用户的openid,title、description、url和picurl分别为分享的标题、描述、链接和图片URL。
四、总结
通过EasyWeChat和PHP的结合,我们可以很方便地实现微信小程序的分享功能。在本文中,我们介绍了如何配置EasyWeChat、获取access_token、生成分享链接和调用微信接口。希望这些技巧能对您的微信小程序开发有所帮助。
以上就是EasyWeChat和PHP开发微信小程序的分享功能实现技巧的详细内容,更多请关注php中文网其它相关文章!
今天的关于PHP开发微信红包功能的代码分享和php开发微信红包功能的代码分享的分享已经结束,谢谢您的关注,如果想了解更多关于asp.net开发微信派发现金红包/H5网页抢红包功能(思路详解)、C#中如何实现微信红包功能的示例代码分享、C#实现微信红包功能、EasyWeChat和PHP开发微信小程序的分享功能实现技巧的相关知识,请在本站进行查询。
本文标签: