微信公众号发送红包

来源:互联网 发布:网络自媒体 编辑:程序博客网 时间:2024/05/16 05:56
  • 微信红包发送准备条件
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 0
原创粉丝点击