微信公众平台发红包接口

news/2025/3/14 16:45:30/

微信公众平台发红包功能与企业付款类似,首先微信商户里是需要有余额的。

请求的地址是:https://api.mch.weixin.qq.com/mmpaymkttransfers/sendredpack

      官方文档:https://pay.weixin.qq.com/wiki/doc/api/cash_coupon.php?chapter=13_5

      测试代码如下,有需要的朋友可以自己根据的需求改一下,主要分一下几个步骤:

充值、网页授权获取openid、获取企业付款需要的信息、发出企业付款请求)。

  1、充值

在微信商户平台中:资金管理->充值(由于企业付款将使用商户的可用余额进行支付,需确保可用余额充足。查看可用余额、充值、提现请登录商户平台“资金管理”进行操作。https://pay.weixin.qq.com/ 注意:商户的可用余额与商户微信支付收款资金并非同一账户,需要单独充值。

2、网页授权

通过网页授权获取用户的openid(企业向微信用户个人付款 目前支持向指定微信用户的openid付款。

具体获取方法可查官方api或http://blog.csdn.net/u010533511/article/details/48085585 。

3、获取企业付款需要的信息

$mch_appid=$appid;
$mchid='100
00005';//商户号
$nonce_str='fhb'.rand(100000, 999999);//随机数
$partner_trade_no="10029435".rand(1000000000, 9999999999);//商户订单号
$openid=$openids;//用户唯一标识
$wishing="感谢您参加猜灯谜活动,祝您元宵节快乐!";//红包祝福语
$act_name="猜灯谜抢红包活动";//活动名称
$sremark="猜越多得越多,快来抢!";//备注
$total_num="1";//
$total_amount="100";//
$send_name="
测试名称";//
$spbill_create_ip=$_SERVER["REMOTE_ADDR"];//请求ip

//封装数组
$dataArr=array();
$dataArr['mch_billno']=$partner_trade_no;//商户订单号
$dataArr['mch_id']=$mchid;//商户号
$dataArr['wxappid']=$mch_appid;//公众号appid
$dataArr['send_name']=$send_name;//红包发送者名称
$dataArr['re_openid']=$openid;//用户相对于公众号的唯一ID
$dataArr['total_amount']=$total_amount;//发放总金额1-200元之间
$dataArr['total_num']=$total_num;//发放数量
$dataArr['wishing']=$wishing;//祝福语
$dataArr['client_ip']=$spbill_create_ip;//客户端ip
$dataArr['act_name']=$act_name;//活动名称
$dataArr['remark']=$sremark;//备注
$dataArr['nonce_str']=$nonce_str;//随机数
$sign=getSign($dataArr);
echo "-----<br/>签名:".$sign."<br/>*****";//die;

$data="<xml>
<sign><![CDATA[".$sign."]]></sign>
<mch_billno><![CDATA[".$partner_trade_no."]]></mch_billno>
<mch_id><![CDATA[".$mchid."]]></mch_id>
<wxappid><![CDATA[".$mch_appid."]]></wxappid>
<send_name><![CDATA[".$send_name."]]></send_name>
<re_openid><![CDATA[".$openid."]]></re_openid>
<total_amount><![CDATA[".$total_amount."]]></total_amount>
<total_num><![CDATA[".$total_num."]]></total_num>
<wishing><![CDATA[".$wishing."]]></wishing>
<client_ip><![CDATA[".$spbill_create_ip."]]></client_ip>
<act_name><![CDATA[".$act_name."]]></act_name>
<remark><![CDATA[".$sremark."]]></remark>
<nonce_str><![CDATA[".$nonce_str."]]></nonce_str>
</xml>";

4、发出企业付款请求

$ch = curl_init ();
//红包链接
$MENU_URL="https://api.mch.weixin.qq.com/mmpaymkttransfers/sendredpack";
curl_setopt ( $ch, CURLOPT_URL, $MENU_URL );
curl_setopt ( $ch, CURLOPT_CUSTOMREQUEST, "POST" );
curl_setopt ( $ch, CURLOPT_SSL_VERIFYPEER, FALSE );
curl_setopt ( $ch, CURLOPT_SSL_VERIFYHOST, FALSE );


$zs1="E:/new999zcmf/wxzftou/apiclient_cert.pem";
$zs2="E:/new999zcmf/wxzftou/apiclient_key.pem";
curl_setopt($ch,CURLOPT_SSLCERT,$zs1);
curl_setopt($ch,CURLOPT_SSLKEY,$zs2);
// curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (compatible; MSIE 5.01;
// Windows NT 5.0)');
curl_setopt ( $ch, CURLOPT_FOLLOWLOCATION, 1 );
curl_setopt ( $ch, CURLOPT_AUTOREFERER, 1 );
curl_setopt ( $ch, CURLOPT_POSTFIELDS, $data );
curl_setopt ( $ch, CURLOPT_RETURNTRANSFER, true );


$info = curl_exec ( $ch );


if (curl_errno ( $ch )) {
echo 'Errno' . curl_error ( $ch );
}


curl_close ( $ch );
echo "-----<br/>请求返回值:";
var_dump($info);
echo "<br/>*****";die;

根据返回值,做具体处理。



------------------------getSign()方法如下----------------------



/**
 * 作用:生成签名
 */
function getSign($Obj)
{
var_dump($Obj);//die;
foreach ($Obj as $k => $v)
{
$Parameters[$k] = $v;
}
//签名步骤一:按字典序排序参数
ksort($Parameters);
$String = formatBizQueryParaMap($Parameters, false);//方法如下
//echo '【string1】'.$String.'</br>';
//签名步骤二:在string后加入KEY
$String = $String."&key=xxxxxcab639xxxxxxxxbd89345ooi";
//echo "【string2】".$String."</br>";
//签名步骤三:MD5加密
$String = md5($String);
//echo "【string3】 ".$String."</br>";
//签名步骤四:所有字符转为大写
$result_ = strtoupper($String);
//echo "【result】 ".$result_."</br>";
return $result_;
}


/**
 * 作用:格式化参数,签名过程需要使用
 */
function formatBizQueryParaMap($paraMap, $urlencode)
{
var_dump($paraMap);//die;
$buff = "";
ksort($paraMap);
foreach ($paraMap as $k => $v)
{
if($urlencode)
{
$v = urlencode($v);
}
//$buff .= strtolower($k) . "=" . $v . "&";
$buff .= $k . "=" . $v . "&";
}
$reqPar;
if (strlen($buff) > 0)
{
$reqPar = substr($buff, 0, strlen($buff)-1);
}
var_dump($reqPar);//die;
return $reqPar;
}



示例demo:http://download.csdn.net/detail/u010533511/9115521



http://www.ppmy.cn/news/655867.html

相关文章

php调用微信红包接口

红包接口调用请求代码&#xff0c;所有请求参数为必填参数与文档对应&#xff1a; class Wxapi { private $app_id wxXXXXXXXXXXXX; //公众账号appid&#xff0c;首先申请与之配套的公众账号 private $app_secret XXXXXXXXXXXXXXXXXXXXXXXX;//公众号secret&#xff0c;用户获…

微信支付现金红包接口说明及应用实例代码

本文我将详细介绍微信红包开发的接口&#xff0c;商户调用接口时&#xff0c;通过指定发送对象以及发送金额的方式发放红包&#xff0c;领取到红包后&#xff0c;用户的资金直接进入微信零钱。后面带有具体调用php实例 微信支付现金红包接口正式开放&#xff0c;只需开通微信支…

微信红包接入2-项目集成

接上一篇&#xff1a;微信红包接入1-介入前准备 参考&#xff1a; 现金红包接口&#xff1a;https://pay.weixin.qq.com/wiki/doc/api/cash_coupon.php?chapter13_5 接下来我们来说说代码集成&#xff0c;先把上一篇那个图拿过来&#xff1a; 从上图中我们实际第一步要走的就…

微信商户现金红包api php

微信开发文档&#xff1a; 现金红包&#xff1a;https://pay.weixin.qq.com/wiki/doc/api/tools/cash_coupon.php?chapter13_5 裂变红包&#xff1a;https://pay.weixin.qq.com/wiki/doc/api/tools/cash_coupon.php?chapter16_5 一、微信红包SDK1、请求url: 现金红包:https:/…

【微信开发】 红包接口开发

为什么80%的码农都做不了架构师&#xff1f;>>> 参考网上好几个版本的答案咯~ 分装 红包工具类 : package com.tepusoft.web.weixin.utils; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamR…

红包系统架构设计

软件系统设计&#xff0c;第一步&#xff0c;确定关键需求。 需求分析 比如红包这个系统&#xff0c;需要有如下&#xff1a; 包红包发红包抢红包拆红包不能抢超&#xff0c;也就是说红包个数&#xff0c;金额是有限的&#xff0c;不能超的。支持高并发&#xff0c;例如1亿用…

微信公众平台开发之微信红包的实现

首先需要了解一下微信红包的规则&#xff1a; 1、发送频率规则 ◆ 每分钟发送红包数量不得超过1800个&#xff1b;◆ 同一个商户号&#xff0c;每分钟最多给同一个用户发送一个红包&#xff1b;2、红包规则 ◆ 单个红包金额介于[1.00元&#xff0c;200.00元]之间&#xff1b;◆…

php开发微信现金红包遇到签名问题,一个PHP文件搞定微信支付系列之现金红包

网上的很多PHP微信支付接入教程都颇为复杂&#xff0c;且需要配置和引入较多的文件&#xff0c;本人通过整理后给出一个单文件版的&#xff0c;希望可以给各位想接入微信支付的带来些许帮助和借鉴意义。 直接运行该文件即可给指定的微信用户发送现金红包。 需要注意的事项&…