PHP WeChat red envelope implementation code introduction
This article mainly introduces the implementation method of WeChat red envelopes in PHP WeChat public account development, and analyzes the implementation ideas, steps and specific operation techniques of PHP to implement the red envelope sending function of WeChat public accounts in the form of examples. Friends in need can refer to the following
The example of this article describes the implementation method of WeChat red envelope development in PHP WeChat public account. I share it with you for your reference. The details are as follows:
In the past few days, I met a customer who wanted to add the WeChat cash red envelope function to their WeChat public platform. It is a secondary development function. I just searched it on Baidu and it turned out that it was not complex. Let’s start developing functions. Now I will post the development process and requirements to share:
1. Requirements:
Fans click on their company on the customer’s public platform place an order, and then give the order a cashback of five yuan, which will be sent to the WeChat ID of the order.
2. Development ideas:
#1: First get the openid of following this fan. Openid is the WeChat ID of following a certain public account. , so that this person can be located as the operator of the order.
2: Send xml data to request WeChat server.
The code has two php files
1.oauth2.php
<?php $code=$_GET['code']; $state=$_GET['state']; $appid='XXXX'; $appsecret='XXXXXXXX';// if (empty($code)) $this->error('授权失败'); $token_url='https://api.weixin.qq.com/sns/oauth2/access_token?appid='.$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:http://www.XXXXXXX.com/XXXXX/XXXXXX/XXXXXX/hongbao.php');//要跳转的文件路径 ?>
2.hongbao.php
<?php //XXXXX。。是需要开发者自己填写的内容,注意不要泄密 // 从session中获取到openid; $openid=$_SESSION["openid"]; if(empty($openid)) { header('location:https://open.weixin.qq.com/connect/oauth2/authorize?appid=XXXXXXXX&redirect_uri=http://www.XXXXXXX.com/oauth2.php&respose_type=code&scope=snsapi_base&state=XXXX&connect_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="https://api.mch.weixin.qq.com/mmpaymkttransfers/sendredpack"; //将请求数据由数组转换成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; } ?>
The above is the detailed content of PHP WeChat red envelope implementation code introduction. For more information, please follow other related articles on the PHP Chinese website!

Hot AI Tools

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Undress AI Tool
Undress images for free

Clothoff.io
AI clothes remover

Video Face Swap
Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Article

Hot Tools

Notepad++7.3.1
Easy-to-use and free code editor

SublimeText3 Chinese version
Chinese version, very easy to use

Zend Studio 13.0.1
Powerful PHP integrated development environment

Dreamweaver CS6
Visual web development tools

SublimeText3 Mac version
God-level code editing software (SublimeText3)

Hot Topics

PHP 8.4 brings several new features, security improvements, and performance improvements with healthy amounts of feature deprecations and removals. This guide explains how to install PHP 8.4 or upgrade to PHP 8.4 on Ubuntu, Debian, or their derivati

If you are an experienced PHP developer, you might have the feeling that you’ve been there and done that already.You have developed a significant number of applications, debugged millions of lines of code, and tweaked a bunch of scripts to achieve op

Visual Studio Code, also known as VS Code, is a free source code editor — or integrated development environment (IDE) — available for all major operating systems. With a large collection of extensions for many programming languages, VS Code can be c

JWT is an open standard based on JSON, used to securely transmit information between parties, mainly for identity authentication and information exchange. 1. JWT consists of three parts: Header, Payload and Signature. 2. The working principle of JWT includes three steps: generating JWT, verifying JWT and parsing Payload. 3. When using JWT for authentication in PHP, JWT can be generated and verified, and user role and permission information can be included in advanced usage. 4. Common errors include signature verification failure, token expiration, and payload oversized. Debugging skills include using debugging tools and logging. 5. Performance optimization and best practices include using appropriate signature algorithms, setting validity periods reasonably,

A string is a sequence of characters, including letters, numbers, and symbols. This tutorial will learn how to calculate the number of vowels in a given string in PHP using different methods. The vowels in English are a, e, i, o, u, and they can be uppercase or lowercase. What is a vowel? Vowels are alphabetic characters that represent a specific pronunciation. There are five vowels in English, including uppercase and lowercase: a, e, i, o, u Example 1 Input: String = "Tutorialspoint" Output: 6 explain The vowels in the string "Tutorialspoint" are u, o, i, a, o, i. There are 6 yuan in total

This tutorial demonstrates how to efficiently process XML documents using PHP. XML (eXtensible Markup Language) is a versatile text-based markup language designed for both human readability and machine parsing. It's commonly used for data storage an

Static binding (static::) implements late static binding (LSB) in PHP, allowing calling classes to be referenced in static contexts rather than defining classes. 1) The parsing process is performed at runtime, 2) Look up the call class in the inheritance relationship, 3) It may bring performance overhead.

What are the magic methods of PHP? PHP's magic methods include: 1.\_\_construct, used to initialize objects; 2.\_\_destruct, used to clean up resources; 3.\_\_call, handle non-existent method calls; 4.\_\_get, implement dynamic attribute access; 5.\_\_set, implement dynamic attribute settings. These methods are automatically called in certain situations, improving code flexibility and efficiency.
