本文目录一览:
- 1、C语言红包代码
- 2、求 ecshop 一次使用多个红包的功能的代码!!!!
- 3、C语言编程:求一段发红包的代码。(随机数,能规定红包总钱数总人数,每个人拿到的钱不为0)
- 4、C语言 微信红包
- 5、JSON解析。
- 6、微信红包PHP怎么开发
C语言红包代码
#includestdio.h
#includestdlib.h
#includetime.h
main()
{
int i,n;
float a[100],all;
srand(time(NULL));
printf("请输入红包金额:");
scanf("%f",all);
printf("请输入红包个数:");
scanf("%d",n);
srand((unsigned)time(0));
for(i=1;in;i)
{
a[i]=(float)rand()/RAND_MAX*all;
if(a[i]0 )
{
all-=a[i];
printf("%f\n",a[i]);
i++;
}
}
printf("%f\n",all);
}
求 ecshop 一次使用多个红包的功能的代码!!!!
步骤
1) 添加一种新的红包类型4 ,
文件 admin/templates/bonus_type_info.htm
找到 input type="radio" name="send_type" value="0" {if $bonus_arr.send_type eq 0} checked="true" {/if} onClick="showunit(0)" /{$lang.send_by[0]}
input type="radio" name="send_type" value="1" {if $bonus_arr.send_type eq 1} checked="true" {/if} onClick="showunit(1)" /{$lang.send_by[1]}
input type="radio" name="send_type" value="2" {if $bonus_arr.send_type eq 2} checked="true" {/if} onClick="showunit(2)" /{$lang.send_by[2]}
input type="radio" name="send_type" value="3" {if $bonus_arr.send_type eq 3} checked="true" {/if} onClick="showunit(3)" /{$lang.send_by[3]}
再其后面添加
input type="radio" name="send_type" value="4" {if $bonus_arr.send_type eq 4} checked="true" {/if} onClick="showunit(4)" /通用红包 多次使用
2) 生成这类红包字符串
增加文件 admin/templates/bonus_by_print_phpsir.htm
修改文件 admin/bonus.php 找到
elseif ($_REQUEST['send_by'] == SEND_BY_PRINT)
{
$smarty-assign('type_list', get_bonus_type());
$smarty-display('bonus_by_print.htm');
}
再其后添加
elseif ($_REQUEST['send_by'] == 4)
{
$smarty-assign('type_list', get_bonus_type_phpsir());
$smarty-display('bonus_by_print_phpsir.htm');
}
3) 增加 get_bonus_type_phpsir 函数
文件 admin/includes/lib_main.php
function get_bonus_type_phpsir()
{
$bonus = array();
$sql = 'SELECT type_id, type_name, type_money FROM ' . $GLOBALS['ecs']-table('bonus_type') .
' WHERE send_type = 4';
$res = $GLOBALS['db']-query($sql);
while ($row = $GLOBALS['db']-fetchRow($res))
{
$bonus[$row['type_id']] = $row['type_name'].' [' .sprintf($GLOBALS['_CFG']['currency_format'], $row['type_money']).']';
}
return $bonus;
}
4) 在 bonus.php 里面 找到
if ($_REQUEST['act'] == 'send_by_print')
{
...........................
}
再其后面添加,处理增加这类红包时候生成方法
if ($_REQUEST['act'] == 'send_by_print_phpsir')
{
@set_time_limit(0);
/* 红下红包的类型ID和生成的数量的处理 */
$bonus_typeid = !empty($_POST['bonus_type_id']) ? $_POST['bonus_type_id'] : 0;
$bonus_sum = !empty($_POST['bonus_sum']) ? $_POST['bonus_sum'] : 1;
/* 生成红包序列号 */
for ($i = 0, $j = 0; $i $bonus_sum; $i++)
{
$bonus_sn = $_POST['bonus_txt'];
$db-query("INSERT INTO ".$ecs-table('user_bonus')." (bonus_type_id, bonus_sn) VALUES('$bonus_typeid', '$bonus_sn')");
$j++;
}
/* 记录管理员操作 */
admin_log($bonus_sn, 'add', 'userbonus');
/* 清除缓存 */
clear_cache_files();
/* 提示信息 */
$link[0]['text'] = $_LANG['back_bonus_list'];
$link[0]['href'] = 'bonus.php?act=bonus_listbonus_type=' . $bonus_typeid;
sys_msg($_LANG['creat_bonus'] . $j . $_LANG['creat_bonus_num'], 0, $link);
}
5) 修改 bonus.php 让后台显示红包内容
if ($_REQUEST['act'] == 'bonus_list')
{
...........................
}
和
if ($_REQUEST['act'] == 'query_bonus')
{
...........................
}
里面增加
if ($bonus_type['send_type'] == 4)
{
$smarty-assign('show_bonus_sn', 1);
}
至此 后台部分完成
前台部分 修改
includes/lib_order.php
function bonus_info($bonus_id, $bonus_sn = '')
{
$sql = "SELECT t.*, b.* " .
"FROM " . $GLOBALS['ecs']-table('bonus_type') . " AS t," .
$GLOBALS['ecs']-table('user_bonus') . " AS b " .
"WHERE t.type_id = b.bonus_type_id ";
if ($bonus_id 0)
{
$sql .= " AND b.bonus_id = '$bonus_id'";
$row = $GLOBALS['db']-getRow($sql);
return $row;
}
else
{
$sql .= " AND b.bonus_sn = '$bonus_sn'";
$row = $GLOBALS['db']-getRow($sql);
}
if($row['send_type'] == 4) // phpsir 如果是第4类型红包,那么就找一个未使用的红包,这种红包可被多次使用,不限制每人使用次数
{
$sess_userid = $_SESSION["user_id"];
$sql = "SELECT t.*, b.* " .
"FROM " . $GLOBALS['ecs']-table('bonus_type') . " AS t," .
$GLOBALS['ecs']-table('user_bonus') . " AS b " .
"WHERE t.type_id = b.bonus_type_id and b.used_time = 0 ";
if ($bonus_id 0)
{
$sql .= "AND b.bonus_id = '$bonus_id'";
}
else
{
$sql .= "AND b.bonus_sn = '$bonus_sn'";
}
//print $sql;
$row = $GLOBALS['db']-getRow($sql);
//var_dump($row);
return $row;
}
// 如果想每人只使用N次,请用下面的部分
/*
if($row['send_type'] == 4) // phpsir 如果是第4类型红包,那么就找一个未使用的红包,这种红包可被多次使用,不限制每人使用次数
{
$sess_userid = $_SESSION["user_id"];
$sql = "SELECT t.*, b.* " .
"FROM " . $GLOBALS['ecs']-table('bonus_type') . " AS t," .
$GLOBALS['ecs']-table('user_bonus') . " AS b " .
"WHERE t.type_id = b.bonus_type_id and b.user_id = '$sess_userid' and b.bonus_sn = '$bonus_sn' ";
$rows = $GLOBALS['db']-getAll($sql);
$allow_used_bonus_num = 2; // 最大允许使用次数
if(count($rows) = $allow_used_bonus_num )
{
return false;
}else{
$sql = "SELECT t.*, b.* " .
"FROM " . $GLOBALS['ecs']-table('bonus_type') . " AS t," .
$GLOBALS['ecs']-table('user_bonus') . " AS b " .
"WHERE t.type_id = b.bonus_type_id and b.used_time = 0 and b.bonus_sn = '$bonus_sn' ";
$row = $GLOBALS['db']-getRow($sql);
return $row;
}
}
*/
return $row;
}
注意不要用记事本修改php文件,建议下载dreamweaver
C语言编程:求一段发红包的代码。(随机数,能规定红包总钱数总人数,每个人拿到的钱不为0)
#includestdio.h
#includetime.h
#includestdlib.h
int main(void)
{
float total;
printf("输入总钱数:\n");
scanf("%f",total);
int num;
printf("输入红包数量:\n");
scanf("%d",num);
float min=0.01;
float safe_total;
float money;
int i;
srand((unsigned)time(NULL));
for(i=1;inum;i++){
safe_total=(total-(num-i)*min)/(num-1);
money=(float)(rand()%((int)(safe_total*100)))/100+min;
total=total-money;
printf("红包%2d: %.2f元,余额:%.2f元\n",i,money,total);
}
printf("红包%2d: %.2f元,余额:0.00元\n",num,total);
return 0;
}
C语言 微信红包
#include stdio.h
#include string.h
#include time.h
#define MAX_TOTAL_MONEY 200 //红包的最大金额
#define MIN_PER_PLAYER 1 //一个人抢到的的最小面额1元
#define MAX_PLAYER_CNT (MAX_TOTAL_MONEY/MIN_PER_PLAYER) //最大抢红包的游戏人数
typedef struct player
{
char *name;//标记玩家 可以不填
unsigned int money_get;//抢到的红包
}PLAYER_T;
//每个人领取到的红包金额不等 这个要求比较难搞 暂时不考虑
int main(int argc, char *argv[])
{
unsigned int total_money = 0; //不考虑角和分 浮点运算比较复杂
unsigned int player_cnt = 0;
int on_off = 0;
int i = 0;
int j = 0;
PLAYER_T player[MAX_PLAYER_CNT] = {0};
PLAYER_T tmp = {0};
printf("输入红包金额:\n");
scanf("%u", total_money);
printf("输入游戏人数:\n");
scanf("%u", player_cnt);
printf("是否需要减小贫富差距(0为关闭其余为开启):\n");
scanf("%u", on_off);
//不符合规则的输入判断
if (total_money MAX_TOTAL_MONEY || 0 == total_money || 0 == player_cnt || player_cnt*MIN_PER_PLAYER total_money)
{
printf("红包金额最小%u元 最大%u元 游戏人数最小1人 最大%u人\n", MIN_PER_PLAYER, MAX_TOTAL_MONEY, MAX_PLAYER_CNT);
return 0;
}
for (i = 0; i player_cnt; i++)
{
//设置随机种子
srand(time(NULL)+i);
//根据随机种子获取一个伪随机数作为抢到的红包 并通过余运算使其始终小于total_money
player[i].money_get = rand()%total_money;
//限制所有人所能抢到的最大红包为当前金额池的1/5而不是全部
if (0 != on_off)
{
if (total_money 5)//5块钱以上再限制
{
player[i].money_get = rand()%(total_money/5);
}
}
//最后一个人拿所有剩下的红包
if (player_cnt - 1 == i)
{
player[i].money_get = total_money;
}
//运气差随机到0元 给你最小面额
else if (0 == player[i].money_get)
{
player[i].money_get = MIN_PER_PLAYER;
}
//剩下的要保证每个人能抢到最小面额
else if (total_money - player[i].money_get (player_cnt-i-1)*MIN_PER_PLAYER)
{
player[i].money_get = total_money - (player_cnt-i-1)*MIN_PER_PLAYER;
}
//把抢到的金额从红包池中减掉
total_money -= player[i].money_get;
//如果填了name 可以把名字打印出来
printf("第%d个玩家抢到红包:%u元\n", i+1, player[i].money_get);
}
//冒泡排序 找出手气最佳者
for (i = 0; i player_cnt; i++)
{
for (j = i+1; j player_cnt; j++)
{
if (player[i].money_get player[j].money_get)
{
memcpy(tmp, player[j], sizeof(PLAYER_T));
memcpy(player[j], player[i], sizeof(PLAYER_T));
memcpy(player[i], tmp, sizeof(PLAYER_T));
}
}
}
printf("手气最佳者抢到红包:%u元\n", player[0].money_get);//如果填了name 可以把名字打印出来
return 0;
}
JSON解析。
import net.sf.json.JSONArray;
import net.sf.json.JSONObject;
public class BMI
{
public static void main(String[] args)
{
String res =
"{\"showapi_res_code\":0,\"showapi_res_error\":\"\",\"showapi_res_body\":{\"ret_code\":0,\"basic\":{\"explains\":[\"n. 代码,密码;编码;法典\",\"vt. 编码;制成法典\",\"vi. 指定遗传密码\"]}}}";
JSONObject obj = JSONObject.fromString(res);
JSONObject body = obj.getJSONObject("showapi_res_body");
JSONObject basic = body.getJSONObject("basic");
JSONArray explains = basic.getJSONArray("explains");
for(int i = 0; i explains.length(); i++)
{
System.out.println(explains.get(i));
}
}
}
微信红包PHP怎么开发
代码有两个php文件
1.oauth2.php
?php
$code=$_GET['code'];
$state=$_GET['state'];
$appid='XXXX';
$appsecret='XXXXXXXX';//
if (empty($code)) $this-error('授权失败');
$token_url=''.$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:url/redpack.php');//要跳转的文件路径
?
2.redpack.php
?php
//XXXXX。。是需要开发者自己填写的内容,注意不要泄密
// 从session中获取到openid;
$openid=$_SESSION["openid"];
if(empty($openid))
{
header('location:;redirect_uri=;respose_type=codescope=snsapi_basestate=XXXXconnect_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="";
//将请求数据由数组转换成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;
}
?
可参考官方文档进行调整开发,希望能有帮助,望采纳