php微信随机红包怎么发
时间 : 2023-03-25 20:12:02声明: : 文章内容来自网络,不保证准确性,请自行甄别信息有效性

要实现php微信随机红包的发送,需要以下步骤:

1. 获取access_token

在使用微信API发送请求之前,必须获取有效的access_token。如下所示:

$appid = 'YOUR_APPID';

$appsecret = 'YOUR_APPSECRET';

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

$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, $url);

curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

$output = curl_exec($ch);

curl_close($ch);

$result = json_decode($output);

$access_token = $result->access_token;

2. 设置红包参数

红包参数包括发送人、红包金额、红包个数等等。以下是红包参数的一个示例:

$mch_id = 'YOUR_MCH_ID';

$wxappid = 'YOUR_APPID';

$send_name = '红包测试';

$re_openid = 'OPENID';

$total_amount = 100;

$total_num = 10;

$wishing = '祝福语';

$client_ip = $_SERVER['REMOTE_ADDR']; // 用户的IP,可选,默认为服务器IP

$act_name = '活动名称';

$remark = '备注信息';

$nonce_str = md5(rand());

$mch_billno = $mch_id . date('YmdHis') . rand(1000, 9999);

$data = array(

'mch_billno' => $mch_billno,

'wxappid' => $wxappid,

'send_name' => $send_name,

're_openid' => $re_openid,

'total_amount' => $total_amount,

'total_num' => $total_num,

'wishing' => $wishing,

'client_ip' => $client_ip,

'act_name' => $act_name,

'remark' => $remark,

'nonce_str' => $nonce_str,

'mch_id' => $mch_id

);

3. 生成签名

生成签名的方法如下:

ksort($data);

$str = '';

foreach ($data as $key => $val) {

if ($val != '') $str .= $key . '=' . $val . '&';

}

$str .= 'key=YOUR_KEY';

$sign = strtoupper(md5($str));

$data['sign'] = $sign;

其中,YOUR_KEY是商户平台设置的API密钥。

4. 发送红包

使用以下代码发送红包:

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

$xml = '<xml>';

foreach ($data as $key => $val) {

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

}

$xml .= '</xml>';

$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, $url);

curl_setopt($ch, CURLOPT_POSTFIELDS, $xml);

curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);

curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);

curl_setopt($ch, CURLOPT_SSLVERSION, 1);

curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 60);

curl_setopt($ch, CURLOPT_TIMEOUT, 7);

curl_setopt($ch, CURLOPT_POST, 1);

curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: text/xml'));

$output = curl_exec($ch);

if ($output === false) {

echo curl_error($ch);

}

curl_close($ch);

$check = simplexml_load_string($output);

if ($check->result_code=='SUCCESS') {

// 发送成功,可以在这里添加对应的逻辑

}

else {

// 发送失败,可以在这里添加对应的逻辑

}

注意,为保证数据传输的安全性,建议使用HTTPS协议进行发送。

至此,你已经了解了如何使用php发送微信随机红包。如果你需要实现更为复杂的业务逻辑,可以调整相应参数及代码。

PHP微信随机红包发放可以通过微信支付接口实现。首先需要进行商户的账号配置和微信支付的初始化工作。然后,按以下步骤进行红包发放:

1. 创建红包订单

使用微信支付接口提供的接口,创建一个红包订单并获取订单号。同时,配置红包的相关参数,包括领取人数、红包金额、红包祝福语等等。

2. 生成随机金额

根据设置的红包金额和领取人数,生成一个随机的红包金额列表。可以使用PHP的rand函数来实现。

3. 分配红包金额

将生成的随机金额列表分配给每个领取人员,并写入订单详情中。

4. 发送红包

使用微信支付接口提供的红包发放接口,将红包发送到每个领取人员的微信账户中。在调用发放接口时,需要将订单号、红包金额、OpenID等信息传递到接口中。

代码示例:

```php

//初始化红包订单信息

$totalAmount = 100; //红包总金额

$totalNumber = 10; //领取人数

$wishing = "恭喜发财,大吉大利"; //红包祝福语

$clientIp = "192.168.0.1"; //发送IP

$params = array(

'mch_billno' => 'XXXXXX', //商户订单号

'send_name' => '商户名称', //红包发送者名称

're_openid' => 'XXXXXX', //领取红包的用户OpenID

'total_amount' => $totalAmount, //红包总金额,单位为分

'total_num' => $totalNumber, //红包领取的总人数

'wishing' => $wishing, //红包祝福语

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

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

'client_ip' => $clientIp //用户IP地址

);

//生成随机金额列表

$randomAmountList = array();

$minAmount = 1; //最小金额,单位为分

$maxAmount = $totalAmount / $totalNumber * 2; //最大金额,不超过平均值的两倍

$leftAmount = $totalAmount; //剩余金额

for($i = 1; $i <= $totalNumber; $i++) {

if($i == $totalNumber) {

//最后一个人,分配所有剩余金额

$randomAmount = $leftAmount;

} else {

//其他人员,随机分配金额

$maxLeftAmount = $maxAmount * ($totalNumber - $i) - $leftAmount;

$randomAmount = rand($minAmount, $maxLeftAmount);

}

//数值保留两位小数

$randomAmount = number_format((float)$randomAmount/100, 2, '.', '');

//写入订单详情中

$params['amt_info'] = $params['amt_info'] . $randomAmount . '|';

$leftAmount -= $randomAmount * 100;

//生成随机金额列表

$randomAmountList[] = $randomAmount;

}

//调用微信支付接口将红包发放到每个领取人员的账户中

foreach($randomAmountList as $key => $value) {

$params['total_amount'] = $value * 100;

$params['re_openid'] = 'XXXXXX'; //领取红包的用户OpenID,每次发送到不同用户

$result = $we***Pay->sendRedPack($params);

}