微信公众号发送红包

  • 微信红包发送准备条件
1.公众号支持发送红包功能
2.每次发送红包不能低于1元
3.公众号支付证书下载
4.获取到要发送红包的微信的openID/金额
  • 发送代码片段
$url = 'https://api.mch.weixin.qq.com/mmpaymkttransfers/sendredpack';  
$body = [  
    'nonce_str' => sprintf('%10d%10d', rand(0, 9999999999), rand(0, 9999999999)),  
    'mch_billno' => sprintf('%s%s2%09d', $mchid, date('Ymd'), $hongBaoLog->getId()),  
    'mch_id' => $mchid,  
    'wxappid' => $appid,  
    'nick_name' => $data['nickname'],  
    'send_name' => $data['send_name'],  
    're_openid' => $data['openid'],  
    'total_amount' => $data['amount'],  
    'min_value' => $data['amount'],  
    'max_value' => $data['amount'],  
    'total_num' => 1,  
    'wishing' => $data['wishing'],  
    'client_ip' => '115.155.155.155',  
    'act_name' => $data['act_name'],  
    'remark' => $data['remark'],  
];  
ksort($body);  
$query = urldecode(http_build_query($body));  
$stringSign = sprintf('%s&key=%s', $query, $key);  
$sign = md5($stringSign);  
$sign = strtoupper($sign);  
$body['sign'] = $sign;  

$xml = new \SimpleXMLElement('<xml></xml>');  
foreach ($body as $k => $v) {  
    $xml->addChild($k, $v);  
}  

$certPath = sprintf('%s/misc/all.pem', $this->container->getParameter('kernel.root_dir'));  

    $xml = $guzzle->post($url, [  
        'body' => $xml->asXml(),  
        'cert' => $certPath,  
    ])->xml();  
  • 请求返回处理

    1.返回是XML文件,需要解析xml文件拿到返回的数据

    1. 涉及金额问题,根据返回值,如果有异常发送,必定要发送报错原因告诉给维护人员,并且要注意写日志!
  • 代码片

if (!isset($xml->result_code)) {  
    return new JsonResponse(Commons::getResult('wechat api response result_code is null','500'));  

}  

if ('SUCCESS' != $xml->result_code) {  
    $message = \Swift_Message::newInstance()  
        ->setSubject('红包接口通知!')  
        ->setFrom($this->getParameter('mailer_user'))  
        ->setTo($this->getParameter('app_error_receipants'))  
        ->setBody("$xml->return_msg"."红包发送失败,请知悉!");  

    $this->get('mailer')->send($message);  
    //将报错信息发送出去  
    return new JsonResponse(Commons::getResult(<span style="color: #ff0000;">"$xml->return_msg"</span>,'500'));  
}  
$hongBaoLog->send();  
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值