この記事では主に ThinkPHP5 WeChat 現金封筒の開発について紹介します。これには一定の参考値があります。今、みんなに共有します。困っている友達は参考にしてください。
コントローラー:
/** * 发放现金红包 */public function payLuckyMoney() { $obj2 = array(); //appid $obj2['wxappid'] = config('wx_gzh.appId'); //商户id $obj2['mch_id'] = config('wx_sh.mchId'); //组合成28位,根据官方开发文档,可以自行设置 $obj2['mch_billno'] = config('wx_sh.mchId') . date('YmdHis') . rand(1000, 9999); // 调用接口的机器IP地址 $obj2['client_ip'] = $_SERVER['REMOTE_ADDR']; //接收红包openid $obj2['re_openid'] = session('openid'); /* 付款金额设置start,按照概率设置随机发放。 * 1-200元之间,单位分。这里设置95%概率为1-2元,5%的概率为2-10元 */ $n = rand(1, 100); if ($n <= 95) { $obj2['total_amount'] = rand(100, 200); } else { $obj2['total_amount'] = rand(200, 1000); } //$obj2['total_amount'] = 100; /* 付款金额设置end */ // 红包个数 $obj2['total_num'] = 1; // 商户名称 $obj2['send_name'] = "小门太"; // 红包祝福语 $obj2['wishing'] = "恭喜发财,大吉大利"; // 活动名称 $obj2['act_name'] = "小门太认证领红包"; // 备注 $obj2['remark'] = "小门太红包"; /* 文档中未说明以下变量,李富林博客中有。注释起来也没问题。不需要。 $obj2['min_value'] = $money; $obj2['max_value'] = $money; $obj2['nick_name'] = '小门太红包'; */ $url = "https://api.mch.weixin.qq.com/mmpaymkttransfers/sendredpack"; $isPay = pay_lucky_money($url, $obj2); $res = xml_to_array($isPay); // 发放成功,把红包数据插入数据库 if ($res['return_msg'] == '发放成功') { // 发放成功,进行逻辑处理 } else { // 发放失败,返回失败原因 return $res['return_msg']; } }
common.php 関数 (呼び出すクラスを共通にすることもできます):
// ---- 以下是微信现金红包的区域start ---- ///** * 微信发放现金红包核心函数,调用本函数就直接发放红包了。 * @param $url 现金红包的请求地址 * @param $obj * @return mixed */function pay_lucky_money($url, $obj) { //创建随机字符串(32位) $obj['nonce_str'] = str_rand(); //创建签名 $sign = get_sign($obj, false); //halt($sign); $obj['sign'] = $sign; //将签名传入数组 $postXml = array_to_xml($obj); //将参数转为xml格式 //halt($postXml); $responseXml = curl_post_ssl($url, $postXml); //提交请求 //halt($responseXml); return $responseXml; }/** * @param $arr 生成前面的参数 * @param $urlencode * @return string 返回加密后的签名 */function get_sign($arr, $urlencode) { $buff = ""; //对传进来的数组参数里面的内容按照字母顺序排序,a在前面,z在最后(字典序) ksort($arr); foreach ($arr as $k => $v) { if (null != $v && "null" != $v && "sign" != $k) { //签名不要转码 if ($urlencode) { $v = urlencode($v); } $buff .= $k . "=" . $v . "&"; } } // 去掉末尾符号“&”,其实不用这个if,因为长度肯定大于0 if (strlen($buff) > 0) { $stringA = substr($buff, 0, strlen($buff) - 1); } //签名拼接api $stringSignTemp = $stringA . "&key=" . config('wx_sh.key'); //签名加密并大写 $sign = strtoupper(md5($stringSignTemp)); return $sign; }//post请求网站,需要证书function curl_post_ssl($url, $vars, $second = 30, $aHeader = array()) { $ch = curl_init(); //超时时间 curl_setopt($ch, CURLOPT_TIMEOUT, $second); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); //这里设置代理,如果有的话 curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false); //cert 与 key 分别属于两个.pem文件 //请确保您的libcurl版本是否支持双向认证,版本高于7.20.1,相当于发curl验证【当前文件所在目录/cert/wxpay/】下的两个pem证书文件。 curl_setopt($ch, CURLOPT_SSLCERT, dirname(__FILE__) . DIRECTORY_SEPARATOR . 'cert' . DIRECTORY_SEPARATOR . 'wxpay' . DIRECTORY_SEPARATOR . 'apiclient_cert.pem'); curl_setopt($ch, CURLOPT_SSLKEY, dirname(__FILE__) . DIRECTORY_SEPARATOR . 'cert' . DIRECTORY_SEPARATOR . 'wxpay' . DIRECTORY_SEPARATOR . 'apiclient_key.pem'); //curl_setopt($ch,CURLOPT_CAINFO,dirname(__FILE__).DIRECTORY_SEPARATOR. // 'cert'.DIRECTORY_SEPARATOR.'rootca.pem'); //这个不需要,因为大部分的操作系统都已经内置了rootca.pem证书了,就是常见的CA证书。 if (count($aHeader) >= 1) { curl_setopt($ch, CURLOPT_HTTPHEADER, $aHeader); } curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_POSTFIELDS, $vars); $data = curl_exec($ch); if ($data) { curl_close($ch); return $data; } else { $error = curl_errno($ch); echo "call faild, errorCode:$error\n"; curl_close($ch); return false; } }// ---- 以下是微信现金红包的区域end ---- //
————上記では、コードは common.php の下に記述されており、common.php はアプリケーション ディレクトリの下にあるため、証明書は application/cert/wxpay/ ディレクトリの下に配置されます
以上がこの記事の全内容です。皆様の学習に少しでもお役に立てれば幸いです。その他の関連コンテンツについては、PHP 中国語 Web サイトをご覧ください。
関連する推奨事項:
PHPstudy を使用して Windows サーバーに PHP システムを展開する
以上がThinkPHP5 WeChat現金紅包の開発の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

宝塔部署thinkphp5报错的解决办法:1、打开宝塔服务器,安装php pathinfo扩展并启用;2、配置“.access”文件,内容为“RewriteRule ^(.*)$ index.php?s=/$1 [QSA,PT,L]”;3、在网站管理里面,启用thinkphp的伪静态即可。

thinkphp5 post得不到值是因为TP5是通过strpos函数在Header的content-type值中查找app/json字符串的,其解决办法就是设置Header的content-type值为app/json即可。

thinkphp5 url重写不行的解决办法:1、查看httpd.conf配置文件中是否加载了mod_rewrite.so模块;2、将AllowOverride None中的None改为All;3、修改Apache配置文件.htaccess为“RewriteRule ^(.*)$ index.php [L,E=PATH_INFO:$1]”保存即可。

thinkphp5获取请求网址的方法:1、使用“\think\Request”类的“$request = Request::instance();”方法获取当前的url信息;2、通过自带的助手函数“$request->url()”获取包含域名的完整URL地址。

去除thinkphp5标题栏icon的方法:1、找到thinkphp5框架public下的favicon.ico文件;2、删除该文件或者选择另一张图片命名改为favicon.ico,并替换原favicon.ico文件即可。

thinkphp5提示控制器不存在的解决办法:1、检查对应的控制器里面的命名空间是否写对,修改为正确的命名空间;2、打开相应的tp文件,修改类名即可。

ThinkPHP5查询昨天数据的方法:1、打开ThinkPHP5相关文件;2、通过表达式“db('table')->whereTime('c_time', 'yesterday')->select();”查询昨天的数据即可。

thinkphp5设置报错提示的方法:1、进入项目根目录下的public文件夹,打开index.php入口文件;2、查看调试模式开关的注释;3、将“APP_DEBUG”常量的值调整为true即可展示错误信息提示。


ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

Safe Exam Browser
Safe Exam Browser は、オンライン試験を安全に受験するための安全なブラウザ環境です。このソフトウェアは、あらゆるコンピュータを安全なワークステーションに変えます。あらゆるユーティリティへのアクセスを制御し、学生が無許可のリソースを使用するのを防ぎます。

ZendStudio 13.5.1 Mac
強力な PHP 統合開発環境

SublimeText3 英語版
推奨: Win バージョン、コードプロンプトをサポート!

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール
