ThinkPHP5 WeChat現金紅包の開発
この記事では主に 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 サイトの他の関連記事を参照してください。

ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

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

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

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

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

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









Pagoda に thinkphp5 をデプロイするときに報告されたエラーの解決策: 1. Pagoda サーバーを開き、php pathinfo 拡張機能をインストールして有効にします; 2. 「.access」ファイルをコンテンツ「RewriteRule ^(.*)$index.php」で構成します。 ?s=/$1 [QSA ,PT,L]”; 3. Web サイト管理で、thinkphp の疑似静的機能を有効にするだけです。

thinkphp5 の URL 書き換えが機能しない場合の解決策: 1. mod_rewrite.so モジュールが httpd.conf 設定ファイルにロードされているかどうかを確認します; 2.AllowOverride None の None を All に変更します; 3. Apache 設定ファイル .htaccess を「RewriteRule ^」に変更します(.*)$index.php [L,E=PATH_INFO:$1]」を選択して保存します。

thinkphp5 が要求された URL を取得するためのメソッド: 1. "\think\Request" クラスの "$request = Request::instance();" メソッドを使用して、現在の URL 情報を取得します。 2. 組み込みヘルパーを使用します。関数「$request-> url()」を使用して、ドメイン名を含む完全な URL アドレスを取得します。

TP5 が strpos 関数を使用してヘッダーの content-type 値で app/json 文字列を検索するため、thinkphp5 post は値を取得できません。解決策は、ヘッダーの content-type 値を app/json に設定することです。

thinkphp5 タイトル バー アイコンを削除する方法: 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. プロジェクト ルート ディレクトリのパブリック フォルダーに入り、index.php エントリ ファイルを開きます; 2. デバッグ モード スイッチに関するコメントを表示します; 3. 「APP_DEBUG」定数の値を調整しますtrue に設定すると、エラー メッセージ プロンプトが表示されます。
