国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

ホームページ WeChat アプレット WeChatの開(kāi)発 WeChat現(xiàn)金封筒インターフェイスは、赤い封筒発行のためのサンプルコード共有を?qū)g裝しています

WeChat現(xiàn)金封筒インターフェイスは、赤い封筒発行のためのサンプルコード共有を?qū)g裝しています

Apr 13, 2017 am 10:30 AM

微信現(xiàn)金紅包接口實(shí)現(xiàn)紅包發(fā)放:

一:流程:【

流程:微信用戶(hù)訪(fǎng)問(wèn)紅包活動(dòng)頁(yè)面--》后端判斷是否是微信訪(fǎng)問(wèn)的

【否:提示用微信打開(kāi)連接,是:提示用戶(hù)是否授權(quán)允許,獲取其的用戶(hù)信息【openID等信息】】--》

進(jìn)入紅包活動(dòng)頁(yè)面---》用戶(hù)點(diǎn)擊領(lǐng)取紅包【判斷是否領(lǐng)取過(guò)紅包】是:【提示已領(lǐng)取過(guò)紅包】否?

--》后端程序調(diào)用接口發(fā)放紅包

--》微信用戶(hù)在微信中收到紅包

--》打開(kāi)紅包

--》紅包金額會(huì)添加到錢(qián)包零錢(qián)里

--》完成紅包發(fā)放。

二:要實(shí)現(xiàn)微信現(xiàn)金紅包接口實(shí)現(xiàn)紅包發(fā)放,首先要符合以下條件:

1.用于發(fā)放紅包的微信公眾號(hào)要是服務(wù)類(lèi)型

2.登錄微信公眾平臺(tái)官網(wǎng)后,在公眾平臺(tái)后臺(tái)管理頁(yè)面 - 開(kāi)發(fā)者中心頁(yè),

點(diǎn)擊“修改配置”按鈕,填寫(xiě)服務(wù)器地址(URL)、Token和EncodingAESKey,

其中URL是開(kāi)發(fā)者用來(lái)接收微信消息和事件的接口URL。Token可由開(kāi)發(fā)者可以任意填寫(xiě),

用作生成簽名(該Token會(huì)和接口URL中包含的Token進(jìn)行比對(duì),從而驗(yàn)證安全性)。

EncodingAESKey由開(kāi)發(fā)者手動(dòng)填寫(xiě)或隨機(jī)生成,將用作消息體加解密密鑰。

3.獲取access_token:公眾號(hào)可以使用AppID和AppSecret調(diào)用本接口來(lái)獲取access_token。

【AppID和AppSecret可在微信公眾平臺(tái)官網(wǎng)-開(kāi)發(fā)者中心頁(yè)中獲得(需要已經(jīng)成為開(kāi)發(fā)者,且?guī)ぬ?hào)沒(méi)有異常狀態(tài))?!?/p>

4.微信公眾號(hào)要開(kāi)通 “網(wǎng)頁(yè)授權(quán)接口” 用戶(hù)獲取用戶(hù)基本信息【特別是openID ,發(fā)紅包時(shí)用到】

5.微信公眾號(hào)的 “微信支付“ ?中的 ?”商戶(hù)號(hào)” 要開(kāi)通微信支付【發(fā)紅包的金額是該支付賬戶(hù)扣款】,開(kāi)通“現(xiàn)金紅包”接口【調(diào)用該接口發(fā)放紅包】。

6. 登陸 ”商戶(hù)號(hào)”【微信公眾號(hào)分配的商戶(hù)號(hào)。第5 中有說(shuō)明】 在 “API安全” 中 下載PHP版的 證書(shū) 【.pem格式】

以上如描述不清楚,請(qǐng)查看 微信開(kāi)發(fā)者文檔 里面有詳細(xì)的秒殺。

部分代碼如下【其余的請(qǐng)查看附件】:

<?php
namespace RedClient\Controller;
use Think\Controller;
use RedClient\Redpack\WeiXinInfo;
use RedClient\Redpack\Oauth;
use RedClient\Redpack\SendRedPack;
use RedClient\Redpack\CreateRedPack;
class IndexController extends Controller 
    {
        public function index()
            {
                $this->isWeixin();//是否是微信打開(kāi)
                if($this->access)
                    {
                        $this->display();
                         
                    }
                    else
                        {
                            $class=new Oauth();
                            $class->index(&#39;http://www.myweb.com/index.php/Index/oauth&#39;);
                        }
            }
         
        //獲取用戶(hù)信息 openID
        public function oauth()
            {
                $code=isset($_GET[&#39;code&#39;])?strip_tags(trim($_GET[&#39;code&#39;])):&#39;&#39;;
                $state=isset($_GET[&#39;state&#39;])?strip_tags(trim($_GET[&#39;state&#39;])):&#39;&#39;;
                 
                $class=new Oauth();
                $userInfo=$class->getCode($code,$state);//獲取用戶(hù)信息
                if(!empty($userInfo[&#39;data&#39;]))
                    {
                        //$model=M(&#39;wxuser&#39;);
                        //$result=$model->where(&#39;openid = "&#39;.$userInfo[&#39;data&#39;]->openid.&#39;"&#39;)->field(&#39;openid&#39;)->select();
                        if(empty($result))
                            {
                                $userInfo[&#39;data&#39;]=$this->object2array($userInfo[&#39;data&#39;]);
                                $model->data($userInfo[&#39;data&#39;])->add();
                                 
                            }
                    }
                $userInfo[&#39;data&#39;]=$this->object2array($userInfo[&#39;data&#39;]);
                 
                //創(chuàng)建紅包
                $class=new CreateRedPack();
                $red=$class->redval();
                 
                //發(fā)紅包
                $class=new SendRedPack();
                $configs=array(
                        &#39;send_name&#39;=>&#39;紅包發(fā)送者名稱(chēng)&#39;,//紅包發(fā)送者名稱(chēng)
                        &#39;re_openid&#39;=>$userInfo[&#39;data&#39;][&#39;openid&#39;],//接受紅包的用戶(hù),用戶(hù)在wxappid下的openid
                        &#39;total_amount&#39;=>$red,//付款金額,單位分
                        &#39;total_num&#39;=>&#39;1&#39;,//紅包發(fā)放總?cè)藬?shù)
                        &#39;wishing&#39;=>&#39;紅包祝福語(yǔ)&#39;,//紅包祝福語(yǔ)
                        &#39;client_ip&#39;=>$_SERVER[&#39;SERVER_ADDR&#39;],//調(diào)用接口的機(jī)器Ip地址
                        &#39;act_name&#39;=>&#39;活動(dòng)名稱(chēng)&#39;,//活動(dòng)名稱(chēng)
                        &#39;remark&#39;=>&#39;備注信息&#39;,//  備注信息
                    );
                $class->setFields($configs);
                $result=$class->requestXml();
                 
                //微信返回信息處理
                if(strtoupper($result[&#39;return_code&#39;])==&#39;SUCCESS&#39;)
                    {
                        if(strtoupper($result[&#39;result_code&#39;])==&#39;SUCCESS&#39;)
                            {
                                //紅包發(fā)送成功!
                                                         
                                $datas[&#39;flag&#39;]=1;
                                echo $result[&#39;err_code_des&#39;];
                            }
                            else
                                {
                                    //紅包發(fā)送失敗
                                    $datas[&#39;flag&#39;]=0;
                                    $datas[&#39;msg&#39;]=$result[&#39;err_code_des&#39;];
                                    echo $result[&#39;err_code_des&#39;];
                                }
                    }
                    else
                        {
                            //紅包發(fā)送失敗
                            $datas[&#39;flag&#39;]=0;
                            $datas[&#39;msg&#39;]=$result[&#39;err_code_des&#39;];
                            echo $result[&#39;err_code_des&#39;];
                        }
            }
         
        public function isWeixin()
            {
                if (strpos($_SERVER[&#39;HTTP_USER_AGENT&#39;], &#39;MicroMessenger&#39;) !== false) 
                    { 
                        $this->access=true; 
                    } 
                return false; 
            }
         
        //類(lèi)轉(zhuǎn)換成數(shù)組
        public function object2array($object) 
            {
              if (is_object($object)) 
                  {
                    foreach ($object as $key => $value) 
                        {
                          $array[$key] = $value;
                        }
                  }
                  else 
                      {
                        $array = $object;
                      }
              return $array;
            }
             
    }
    ?>
<?php
namespace RedClient\Redpack;
/**
    簡(jiǎn)單紅包算法類(lèi)
**/
class CreateRedPack
    {
        private $rid=0;//當(dāng)前紅包隨機(jī)數(shù)
        private $rand_arr=array();//35%是1.0到1.1 紅包隨機(jī)數(shù)
        private $rand_arr1=array();//35%是1.1到1.2 紅包隨機(jī)數(shù)
        private $rand_arr2=array();//30%是1.2到1.95 紅包隨機(jī)數(shù)
        private $red=0;//紅包金額
        private $simplered=0;
        private $red_config=array(
                                array(&#39;min&#39;=>1.0,&#39;max&#39;=>1.1),
                                array(&#39;min&#39;=>1.1,&#39;max&#39;=>1.2),
                                array(&#39;min&#39;=>1.2,&#39;max&#39;=>1.95)
                            );
                             
        public function __construct()
            {
                $this->rid=mt_rand(1,10000);//當(dāng)前紅包隨機(jī)數(shù)
                $this->rand_arr=range(1,3500);//35%是1.0到1.1
                $this->rand_arr1=range(3501,7000);//35%是1.1到1.2
                $this->rand_arr2=range(7001,10000);//30%是1.2到1.95
                $this->simplered=666;
            }
             
        public function redval()
            {
                $maxrp=$this->maxred();//隨機(jī)最大紅包金額
                if($maxrp!=$this->simplered)
                    {
                        if(in_array($this->rid,$this->rand_arr))
                            {
                                $red_val=$this->red_config[0];
                                $min=$red_val[&#39;min&#39;]*100;
                                $max=$red_val[&#39;max&#39;]*100;
                                $this->red=mt_rand($min,$max);
                                $this->red=$this->red/100;
                            }
                            elseif(in_array($this->rid,$this->rand_arr1))
                                {
                                    $red_val=$this->red_config[1];
                                    $min=$red_val[&#39;min&#39;]*100;
                                    $max=$red_val[&#39;max&#39;]*100;
                                    $red=mt_rand($min,$max);
                                    $this->red=$this->red/100;
                                }
                                elseif(in_array($this->rid,$this->rand_arr2))
                                    {
                                        $red_val=$this->red_config[2];
                                        $min=$red_val[&#39;min&#39;]*100;
                                        $max=$red_val[&#39;max&#39;]*100;
                                        $this->red=mt_rand($min,$max);
                                        $this->red=$this->red/100;
                                    }
                    }
                    else
                        {
                            $this->red=$maxrp;
                        }
                return $this->red?$this->red:1;
            }
                 
        protected function maxred()
            {
                $rid=mt_rand(1,100000);
                $rid1=mt_rand(1,100000);
                $red=0;
                $dff=$rid-$rid1;
                 
                if($dff > 0)
                    {
                        if(($rid1%$rid1)==$this->simplered)
                            {
                                $red=$this->simplered;
                            }
                    }
                    else
                        {
                            if(($rid1%$rid)==$this->simplered)
                                {
                                    $red=$this->simplered;
                                }
                        }
                         
                return $red;
            }
    }
 
?>
<?php
namespace RedClient\Redpack;
/*********
 
    先在公共平臺(tái)配置授權(quán)的域名;
    然后才能通過(guò),
    網(wǎng)頁(yè)授權(quán)方式獲取微信用戶(hù)基本信息
     
    網(wǎng)頁(yè)授權(quán)流程分為四步: 
 
    1.引導(dǎo)用戶(hù)進(jìn)入授權(quán)頁(yè)面同意授權(quán),獲取code 
    2.通過(guò)code換取網(wǎng)頁(yè)授權(quán)access_token(與基礎(chǔ)支持中的access_token不同) 
    3.如果需要,開(kāi)發(fā)者可以刷新網(wǎng)頁(yè)授權(quán)access_token,避免過(guò)期 
    4.通過(guò)網(wǎng)頁(yè)授權(quán)access_token和openid獲取用戶(hù)基本信息 
 
**********/
class Oauth
    {
        protected $appid=&#39;&#39;;
        protected $redirect_uri=&#39;&#39;;
        protected $state=&#39;&#39;;//mt_rand(100,999);
        protected $appsecret=&#39;&#39;;
        protected $data=array(&#39;flag&#39;=>0,&#39;msg&#39;=>&#39;&#39;,&#39;data&#39;=>&#39;&#39;);
         
         
        public function __construct()
            {
                $this->appid=&#39;appid&#39;;//
                $this->appsecret=&#39;secret&#39;;//;
                $this->state=mt_rand(100,999);
            }
             
        //引導(dǎo)用戶(hù)訪(fǎng)問(wèn)鏈接處理函數(shù) 
        public function index($redirect_uri)
            {
                $this->redirect_uri=urlencode($redirect_uri);//微信自動(dòng)跳轉(zhuǎn)到$redirect_uri
                header(&#39;location:https://open.weixin.qq.com/connect/oauth2/authorize?appid=&#39;.$this->appid.&#39;&redirect_uri=&#39;.$this->redirect_uri.&#39;/oauth.php&response_type=code&scope=snsapi_userinfo&state=&#39;.$this->state.&#39;&connect_redirect=1#wechat_redirect&#39;);
            }
             
        public function getCode($code=&#39;&#39;,$state=&#39;&#39;,$token=&#39;&#39;,$webToken=&#39;&#39;)
            {
                $data=array(
                    &#39;errorno&#39;=>&#39;&#39;,
                    &#39;errormsg&#39;=>&#39;&#39;,
                    &#39;data&#39;=>&#39;&#39;
                );
                 
                if(empty($code))
                    {
                        $this->data[&#39;flag&#39;]=0;
                        $this->data[&#39;msg&#39;]=&#39;授權(quán)失??!&#39;;
                    }
                    else
                        {   /* 
                                 
                                1獲取webtoken
                                2獲取reflash_token
                                3獲取用戶(hù)信息 
                            */
  $token_url = &#39;https://api.weixin.qq.com/sns/oauth2/access_token?appid=&#39;.$this->appid.&#39;&secret=&#39;.$this->appsecret.&#39;&code=&#39;.$code.&#39;&grant_type=authorization_code&#39;;
                         $token = json_decode(file_get_contents($token_url));
                             
                            if (isset($token->errcode)) 
                                {
                                    $data[&#39;errorno&#39;]=$token->errcode;
                                    $data[&#39;errormsg&#39;]=$token->errmsg;
                                }
                                else
                                    {
  $access_token_url = &#39;https://api.weixin.qq.com/sns/oauth2/refresh_token?appid=&#39;.$this->appid.&#39;&grant_type=refresh_token&refresh_token=&#39;.$token->refresh_token;
                                        //轉(zhuǎn)成對(duì)象
                                        $accessToken = json_decode(file_get_contents($access_token_url));
                                         
                                        if (isset($accessToken->errcode)) 
                                            {
                                                $data[&#39;errorno&#39;]=$token->errcode;
                                                $data[&#39;errormsg&#39;]=$token->errmsg;
                                            }
                                            else
                                                {
     $user_info_url = &#39;https://api.weixin.qq.com/sns/userinfo?access_token=&#39;.$accessToken->access_token.&#39;&openid=&#39;.$accessToken->openid.&#39;&lang=zh_CN&#39;;
                                                    //轉(zhuǎn)成對(duì)象
                                                    $userInfo = json_decode(file_get_contents($user_info_url));
                                                     
                                                    if (isset($userInfo->errcode)) 
                                                        {
                                                            $data[&#39;errorno&#39;]=$token->errcode;
                                                            $data[&#39;errormsg&#39;]=$token->errmsg;
                                                        }
                                                        else
                                                            {
                                                                $data[&#39;data&#39;]=$userInfo;
                                                            }
                                                }
                                    }
                        }
                return $data;
            }
             
    }
 
?>
<?php
/******
 
    用于企業(yè)向微信用戶(hù)個(gè)人發(fā)現(xiàn)金紅包
    目前支持向指定微信用戶(hù)的openid發(fā)放指定金額紅包。
    (獲取openid參見(jiàn)微信公眾平臺(tái)開(kāi)發(fā)者文檔:
    網(wǎng)頁(yè)授權(quán)獲取用戶(hù)基本信息)
     
****/
namespace RedClient\Redpack;
 
class SendRedPack
    {
        private $config=array(
            &#39;nonce_str&#39;=>&#39;&#39;,//隨機(jī)字符串,不長(zhǎng)于32位
            &#39;sign&#39;=>&#39;&#39;,//簽名
            &#39;mch_billno&#39;=>&#39;&#39;,//商戶(hù)訂單號(hào)
            &#39;mch_id&#39;=>&#39;1111sdfsafsaddf&#39;,//微信支付分配的商戶(hù)號(hào)
            &#39;wxappid&#39;=>&#39;sddafdsadfdsafdsdd&#39;,//微信分配的公眾賬號(hào)ID
            &#39;send_name&#39;=>&#39;&#39;,//紅包發(fā)送者名稱(chēng)
            &#39;re_openid&#39;=>&#39;&#39;,//接受紅包的用戶(hù),用戶(hù)在wxappid下的openid
            &#39;total_amount&#39;=>&#39;&#39;,//付款金額,單位分
            &#39;total_num&#39;=>&#39;&#39;,//紅包發(fā)放總?cè)藬?shù)
            &#39;wishing&#39;=>&#39;&#39;,//紅包祝福語(yǔ)
            &#39;client_ip&#39;=>&#39;&#39;,//調(diào)用接口的機(jī)器Ip地址
            &#39;act_name&#39;=>&#39;&#39;,//活動(dòng)名稱(chēng)
            &#39;remark&#39;=>&#39;&#39;,//  備注信息
        );
         
        protected $key=&#39;&#39;;
        protected $url=&#39;https://api.mch.weixin.qq.com/mmpaymkttransfers/sendredpack&#39;;
        protected $requestXml=&#39;&#39;;
         
        //設(shè)置必要參數(shù)
        public function setFields($conf=array())
            {
                foreach($conf as $k=>$v)
                    {
                        if(isset($this->config[$k]) && !empty($v))
                            {
                                $this->config[$k]=$v;
                            }
                    }
                $this->config[&#39;mch_billno&#39;]=$this->billno();
                $this->config[&#39;nonce_str&#39;]=$this->createNonceStr();
                $this->createSign($conf);
                $this->createXml();
                //echo $this->requestXml;
            }
         
        protected function billno()
            {
                return $this->config[&#39;mch_id&#39;].time().md5(mt_rand(1000,9999));
            }
         
        /* //檢查必要參數(shù)是否為空!
        public function checkConfig()
            {
                $flag=true;
                foreach($this->config as $k=>$v)
                    {
                        if(empty($v))
                            {
                                $flag=false;
                                break;
                            }
                    }
            } */
         
        //隨機(jī)字符串,不長(zhǎng)于32位
        public function createNonceStr( $len=32 )
            {
                $strs = "abcdefghijklmnopqrstuvwxyz0123456789";
                $str ="";
                $len=$len<=32?$len:32;
                for ( $i = 0; $i < $len; $i++ )
                    {
                      $str.= substr($strs, mt_rand(0, strlen($strs)-1), 1);
                    }
                return $str;
            }
             
        //格式化參數(shù)
        public function formatParam($config=array(),$flag=1)
            {
                $format=&#39;&#39;;
                if(!empty($config))
                    {
                        ksort($config);
                        foreach($config as $k=>$v)
                            {
                                if($flag)
                                    {
                                        $v=urlencode($v);
                                    }
                                     
                                    if($flag==0 && strtolower($k)==&#39;sign&#39;)
                                        {
                                            continue;
                                        }
                                $format.=$k.&#39;=&#39;.$v.&#39;&&#39;;
                            }
                        $format=trim($format,&#39;&&#39;);
                    }
                return $format;
            }
             
        //創(chuàng)建SIGNATURE  
        protected function createSign($config)
            {
                $format=$this->formatParam($config,0);
                $format.=&#39;&key=&#39;.$this->key;
                $signature=strtoupper(md5($format));
                $this->config[&#39;sign&#39;]=$signature;
                return true;//$signature;
            }
             
        //創(chuàng)建xml格式數(shù)據(jù)
        protected function createXml()
            {
                $xml=&#39;<xml>&#39;;
                foreach($this->config as $k=>$v)
                    {
                        if(!empty($v))
                            {
                                $xml.=&#39;<&#39;.$k.&#39;><![CDATA[&#39;.$v.&#39;]]></&#39;.$k.&#39;>&#39;;
                            }
                    }
                $xml.=&#39;</xml>&#39;;
                $this->requestXml=$xml;
            }
         
        //XML格式數(shù)據(jù)轉(zhuǎn)換為數(shù)組
        public function createArray($xml=&#39;&#39;)
            {
                $arr = json_decode(json_encode(simplexml_load_string($xml, &#39;SimpleXMLElement&#39;, LIBXML_NOCDATA)), true);
                return $arr;
            }
         
        //發(fā)送紅包
        public function requestXml($timeout=30,$header=array())
            {
                $ch = curl_init();
                //超時(shí)時(shí)間
                curl_setopt($ch,CURLOPT_TIMEOUT,$timeout);
                curl_setopt($ch,CURLOPT_RETURNTRANSFER, 1);
                curl_setopt($ch,CURLOPT_URL,$this->url);
                curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,false);
                curl_setopt($ch,CURLOPT_SSL_VERIFYHOST,false);
                //默認(rèn)格式為PEM,可以注釋
                curl_setopt($ch,CURLOPT_SSLCERTTYPE,&#39;PEM&#39;);
                curl_setopt($ch,CURLOPT_SSLCERT,dirname(__FILE__).&#39;/apiclient_cert.pem&#39;);//pem證書(shū)地址
                //默認(rèn)格式為PEM,可以注釋
                curl_setopt($ch,CURLOPT_SSLKEYTYPE,&#39;PEM&#39;);
                curl_setopt($ch,CURLOPT_SSLKEY,dirname(__FILE__).&#39;/apiclient_key.pem&#39;);//key證書(shū)地址
                curl_setopt($ch,CURLOPT_CAINFO,&#39;PEM&#39;);
                curl_setopt($ch,CURLOPT_CAINFO,dirname(__FILE__).&#39;/rootca.pem&#39;);//CA證書(shū)地址
                //兩個(gè)文件合成一個(gè).pem文件
                //curl_setopt($ch,CURLOPT_SSLCERT,getcwd().&#39;/all.pem&#39;);
                if( count($header) >= 1 )
                    {
                        curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
                    }
                curl_setopt($ch,CURLOPT_POST, 1);
                curl_setopt($ch,CURLOPT_POSTFIELDS,$this->requestXml);
                $data = curl_exec($ch);
                var_dump($data);
                if($data)
                    {
                        curl_close($ch);
                        var_dump($data);
                        return $data;
                    }
                    else 
                        {
                            $error = curl_errno($ch);
                            echo &#39;ERROR:&#39;.$error;
                            curl_close($ch);
                            return false;
                        }
            }
         
        //返回非空值,非NULL
        public function notEmpty($val=&#39;&#39;)
            {
                $return=&#39;&#39;;
                if(null !=$val && strlen($val) != 0)
                    {
                        $return=$val;
                    }
                return $return?$return:false;
            }
         
    }
 
 
?>
<?php
namespace RedClient\Redpack;
class WeiXinInfo
    {
        private $AppID=&#39;appid&#39;;
        private $AppSecret=&#39;secret&#39;;
        private $grant_type=&#39;client_credential&#39;;
         
        private $url=&#39;https://api.weixin.qq.com/cgi-bin/token&#39;;
         
        public function __construct()
            {
                //$arr=array(&#39;access_token&#39;=>&#39;1&#39;,&#39;expires&#39;=>&#39;7200&#39;);
                 
            }
             
        //設(shè)置獲取ACCESSTOKEN 的URL
        public function setUrl()
            {
                return $this->url=$this->url.&#39;?grant_type=&#39;.$this->grant_type.&#39;&appid=&#39;.$this->AppID.&#39;&secret=&#39;.$this->AppSecret;
            }
         
        //獲取APPID,SECRET
        public function getAppid()
            {
                $sql=&#39;select appid,secret from ly_appid where flag=1&#39;;
                $model=M();
                $result=$model->query($sql);
                if(!empty($result))
                    {
                        $this->AppID=$result[0][&#39;appid&#39;];
                        $this->AppSecret=$result[0][&#39;secret&#39;];
                        return $result[0];
                    }
            }
             
        public function object2array($object) 
            {
              if (is_object($object)) 
                  {
                    foreach ($object as $key => $value) 
                        {
                          $array[$key] = $value;
                        }
                  }
                  else 
                      {
                        $array = $object;
                      }
              return $array;
            }
             
        //檢驗(yàn)URL有效
        public function checkUrl()
            {
                $signature=isset($_GET[&#39;signature&#39;])?strip_tags(trim($_GET[&#39;signature&#39;])):&#39;&#39;;
                $timestamp=isset($_GET[&#39;timestamp&#39;])?strip_tags(trim($_GET[&#39;timestamp&#39;])):&#39;&#39;;
                $nonce=isset($_GET[&#39;nonce&#39;])?strip_tags(trim($_GET[&#39;nonce&#39;])):&#39;&#39;;
                $echostr=isset($_GET[&#39;echostr&#39;])?$_GET[&#39;echostr&#39;]:&#39;&#39;;
                if(!empty($signature) && !empty($timestamp) && !empty($nonce))
                    {
                        if($this->checkSign($signature,$timestamp,$nonce))
                            {
                                echo $echostr;
                                return true;
                            }
                            else
                                {
                                    return false;
                                }
                    }
            }  
             
        //驗(yàn)證SIGNATURE是否有效
        private function checkSign($sign,$timestamp,$nonce)
            {
                $token=$this->getAccessToken();
                //$token=$this->object2array($token);
                $sign_arr=array($token,$timstamp,$nonce);
                sort($sign_arr,SORT_STRING);
                $signStr=implode($sign_arr);
                $signStr=sha1($signStr);
                if(strtoupper($signStr)==strtoupper($sign))
                    {
                        return true;
                    }
                return false;
            }
             
        //通過(guò)微信接口獲取微信Access_Token   
        public function getAccessToken()
            {
                $token=&#39;&#39;;
                $this->setUrl();
                $check=$this->checkToken();
                 
                if(session(&#39;?&#39;.md5(&#39;getaccesstoken&#39;)) && $check)
                    {
                        $tokens=session(md5(&#39;getaccesstoken&#39;));
                        $token=$tokens->access_token;
                    }
                    else
                        {
                            $result=file_get_contents($this->url);
                            $result=json_decode($result);
                            $token=$result->access_token;
                            $result->expires_in=$result->expires_in+time();
                            session(md5(&#39;getaccesstoken&#39;),$result);
                        }
                         
                return $token;
            }
         
        //檢查微信ACCESS_TOKEN是否有效
        public function checkToken()
            {
                if(session(&#39;?&#39;.md5(&#39;getaccesstoken&#39;)) && session(md5(&#39;getaccesstoken&#39;)))
                    {
                        $time=time();
                        $token=session(md5(&#39;getaccesstoken&#39;));
                         
                        if($token->expires_in-$time > 30)
                            {
                                return true;
                            }
                            else
                                {
                                    session(md5(&#39;getaccesstoken&#39;),null);
                                }
                    }
                return false;
            }
             
        //保存微信ACCESSTOKEN到數(shù)據(jù)庫(kù)  
        public function saveAccessToken()
            {
                $token=$this->getAccessToken();
                $sql=&#39;select `id`,`rate`,token,ex_time,createtime from ly_token where token="&#39;.$token.&#39;" where appid="&#39;.$this->AppID.&#39;" AND secret="&#39;.$this->AppSecret.&#39;"&#39;;
                $model=M();
                $result=$model->query($sql);
                if(!empty($result))
                    {
                        $time=time();
                        $expires=$time-$result[0][&#39;createtime&#39;];
                        if($result[0][&#39;ex_time&#39;]-$expires > 0)
                            {
                                return $result[0][&#39;token&#39;];                       
                            }
                            else
                                {
                                    $token=$this->getAccessToken();
                                    if(!empty($token))
                                        {
                                            $token=json_decode($token);
                                            if(!isset($token[&#39;errcode&#39;]) or !$token[&#39;errcode&#39;])
                                                {
                                                    if(isset($token[&#39;access_token&#39;]) && $token[&#39;access_token&#39;])
                                                        {
                                                            $data[&#39;access_token&#39;]=$token[&#39;access_token&#39;];
                                                            $data[&#39;createtime&#39;]=$time;
                                                            $data[&#39;ex_time&#39;]=$token[&#39;expires_in&#39;];
                                                            $data[&#39;rate&#39;]=$result[0][&#39;rate&#39;]+1;
                                                            //$sql=&#39;update ly_token set token="&#39;.$token[&#39;access_token&#39;].&#39;" ,createtime=&#39;.$time.&#39;,ex_time=&#39;.$token[&#39;expires_in&#39;].&#39; where `id`=&#39;.$result[0][&#39;id&#39;];
                                                            $model=M(&#39;token&#39;);
                                                            $update=$model->where(&#39;`id`=&#39;.$result[0][&#39;id&#39;])->save($data);
                                                            if($update)
                                                            {
                                                                return $token[&#39;access_token&#39;];
                                                            }
                                                        }
                                                }
                                                else
                                                    {//微信返回的錯(cuò)誤信息
                                                                $data[&#39;errcode&#39;]=$token[&#39;errcode&#39;];
                                                                $data[&#39;errmsg&#39;]=$token[&#39;errmsg&#39;];
                                                                $data[&#39;appid&#39;]=$this->AppID;
                                                                $data[&#39;secret&#39;]=$this->AppSecret;
                                                                $data[&#39;createtime&#39;]=time();
                                                                $data[&#39;rate&#39;]=$result[0][&#39;rate&#39;]+1;
                                                                $ein=$model->where(&#39;`id`=&#39;.$result[0][&#39;id&#39;])->save($data);
                                                                if($ein)
                                                                    {
                                                                        return false;
                                                                    }
                                                    }
                                        }
                                }
                    }
                    else
                        {//新插入數(shù)據(jù)庫(kù)保存
                            $token=$this->getAccessToken();
                            $model=M(&#39;token&#39;);
                            if(!empty($token))
                                        {
                                            $data=array();
                                            $token=json_decode($token);
                                            if(!isset($token[&#39;errcode&#39;]) or !$token[&#39;errcode&#39;])
                                                {
                                                    if(isset($token[&#39;access_token&#39;]) && $token[&#39;access_token&#39;])
                                                        {
                                                            $data[&#39;access_token&#39;]=$token[&#39;access_token&#39;];
                                                            $data[&#39;createtime&#39;]=$time;
                                                            $data[&#39;ex_time&#39;]=$token[&#39;expires_in&#39;];
                                                            //$sql=&#39;insert into ly_token() vlaues()&#39;;
                                                            $data[&#39;rate&#39;]=1;
                                                            $in=$model->data($data)->add();
                                                            if($ein)
                                                            {
                                                                $token[&#39;access_token&#39;];
                                                            }
                                                        }
                                                }
                                                else
                                                    {//微信返回的錯(cuò)誤信息
                                                        $data[&#39;errcode&#39;]=$token[&#39;errcode&#39;];
                                                        $data[&#39;errmsg&#39;]=$token[&#39;errmsg&#39;];
                                                        $data[&#39;appid&#39;]=$this->AppID;
                                                        $data[&#39;secret&#39;]=$this->AppSecret;
                                                        $data[&#39;createtime&#39;]=time();
                                                        $data[&#39;rate&#39;]=1;
                                                        $ein=$model->data($data)->add();
                                                        if($ein)
                                                            {
                                                                return false;
                                                            }
                                                    }
                                        }
                        }
                return false;
            }  
             
             
             
             
             
    }
 
?>

以上がWeChat現(xiàn)金封筒インターフェイスは、赤い封筒発行のためのサンプルコード共有を?qū)g裝していますの詳細(xì)內(nèi)容です。詳細(xì)については、PHP 中國(guó)語(yǔ) Web サイトの他の関連記事を參照してください。

このウェブサイトの聲明
この記事の內(nèi)容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰屬します。このサイトは、それに相當(dāng)する法的責(zé)任を負(fù)いません。盜作または侵害の疑いのあるコンテンツを見(jiàn)つけた場(chǎng)合は、admin@php.cn までご連絡(luò)ください。

ホットAIツール

Undress AI Tool

Undress AI Tool

脫衣畫(huà)像を無(wú)料で

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード寫(xiě)真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

寫(xiě)真から衣服を削除するオンライン AI ツール。

Clothoff.io

Clothoff.io

AI衣類(lèi)リムーバー

Video Face Swap

Video Face Swap

完全無(wú)料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡(jiǎn)単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無(wú)料のコードエディター

SublimeText3 中國(guó)語(yǔ)版

SublimeText3 中國(guó)語(yǔ)版

中國(guó)語(yǔ)版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強(qiáng)力な PHP 統(tǒng)合開(kāi)発環(huán)境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開(kāi)発ツール

SublimeText3 Mac版

SublimeText3 Mac版

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

コピーコミック(公式ウェブサイトの入り口)_COPYコミック(NBA)本物のオンライン読書(shū)ポータル コピーコミック(公式ウェブサイトの入り口)_COPYコミック(NBA)本物のオンライン読書(shū)ポータル Jun 05, 2025 pm 04:12 PM

コミックのコピーは間違いなく見(jiàn)逃せない寶物です。ここでは、情熱的で刺激的な競(jìng)爭(zhēng)力のあるストーリーからリラックスしたユーモラスな毎日のコメディまで、さまざまなスタイルのバスケットボールコミックを見(jiàn)つけることができます。クラシックを追體験したいか、新しい作品を発見(jiàn)したいかにかかわらず、漫畫(huà)をコピーすることであなたのニーズを満たすことができます。 Copy Comicsが提供する本物のオンライン読書(shū)ポータルを通じて、海賊版のリソースのトラブルに別れを告げ、高解像度とスムーズな読書(shū)體験を楽しんで、お?dú)荬巳毪辘违偿撺氓骷窑颔单荸`トし、本物のコミックの発展に貢獻(xiàn)できます。

UCブラウザまたはQQブラウザのどちらが良いですか? UCおよびQQブラウザーの詳細(xì)な比較と評(píng)価 UCブラウザまたはQQブラウザのどちらが良いですか? UCおよびQQブラウザーの詳細(xì)な比較と評(píng)価 May 22, 2025 pm 08:33 PM

UCブラウザまたはQQブラウザの選択は、ニーズに依存します。1。UCブラウザは、高速負(fù)荷とリッチなエンターテイメント機(jī)能を追求するユーザーに適しています。 2。QQブラウザは、Tencent製品との安定性とシームレスな接続が必要なユーザーに適しています。

トップ10 AIライティングソフトウェアランキングは、どのAIライティングソフトウェアが無(wú)料であるかを推奨しています トップ10 AIライティングソフトウェアランキングは、どのAIライティングソフトウェアが無(wú)料であるかを推奨しています Jun 04, 2025 pm 03:27 PM

2025年の最新の業(yè)界動(dòng)向と多次元評(píng)価データを組み合わせることで、以下は、一般的な創(chuàng)造、學(xué)術(shù)研究、商業(yè)マーケティングなどの主流のシナリオをカバーしながら、中國(guó)の最適化とローカリゼーションサービスを考慮しながら、包括的なAIライティングソフトウェアの推奨事項(xiàng)のトップ10です。

無(wú)料のコミックについては、NISコミックのオンラインで公式ページをご覧ください。 NIS Comicsログインページの無(wú)料エントリWebサイト 無(wú)料のコミックについては、NISコミックのオンラインで公式ページをご覧ください。 NIS Comicsログインページの無(wú)料エントリWebサイト Jun 12, 2025 pm 08:18 PM

コミック愛(ài)好家のために作成することに専念する沒(méi)入型の読書(shū)體験プラットフォームである素?cái)长圣偿撺氓?、自宅と海外で多?shù)の高品質(zhì)のコミックリソースを集めます。コミックリーディングプラットフォームであるだけでなく、コミックアーティストや読者をつなぎ、コミック文化を共有するコミュニティでもあります。 NES Comicsを使用すると、シンプルで直感的なインターフェイスデザインと強(qiáng)力な検索機(jī)能を通じて、お?dú)荬巳毪辘巫髌筏蚝?jiǎn)単に見(jiàn)つけて、スムーズで快適な読書(shū)體験を楽しむことができます。長(zhǎng)い待っていて退屈な作戦に別れを告げ、すぐに素?cái)长事?huà)の世界に入り、コミックの旅を始めましょう!

カエルマンオンライン視聴玄関マンカエルマン(ウェブページの入り口)オンラインで見(jiàn)る カエルマンオンライン視聴玄関マンカエルマン(ウェブページの入り口)オンラインで見(jiàn)る Jun 12, 2025 pm 08:06 PM

フロッグマンコミックは、豊かで多様なコミックリソースと便利でスムーズなオンライン読書(shū)體験を備えた多くのコミック愛(ài)好家にとって最初の選択肢となっています。それは活気のある池のようなもので、新鮮で興味深い物語(yǔ)が絶えず現(xiàn)れており、あなたが発見(jiàn)して探索するのを待っています。 Frog Man Comicsは、情熱的な冒険から甘い愛(ài)、ファンタジーやサイエンスフィクションからサスペンス推論まで、どんなジャンルが好きであっても、お?dú)荬巳毪辘巫髌筏蛞?jiàn)つけることができます。シンプルで直感的なインターフェイスデザインにより、簡(jiǎn)単に開(kāi)始したり、読みたい漫畫(huà)をすぐに見(jiàn)つけたり、エキサイティングなコミックの世界に沒(méi)頭したりできます。

Baoziコミック(入り口)_ Baoziコミック(新しい入り口)2025 Baoziコミック(入り口)_ Baoziコミック(新しい入り口)2025 Jun 05, 2025 pm 04:18 PM

ここでは、漫畫(huà)の広大な海を楽しみ、情熱的な若い男のコミックから繊細(xì)で感動(dòng)的な女の子のコミック、サスペンスで脳を燃やすミステリーコミックから、リラックスした面白い毎日のコミックまで、すべてがあり、常にあなたの心に觸れることができるものがあります。私たちは大量の本物のコミックリソースを持っているだけでなく、最新の作品を常に紹介し、更新して、お?dú)荬巳毪辘违偿撺氓颏扦毪坤痹绀iむことができるようにします。

b最新の登録アドレス_ Exchangeを登録する方法 b最新の登録アドレス_ Exchangeを登録する方法 May 26, 2025 pm 07:12 PM

2025b Anhuiの最新の公式ウェブサイトは、https://www.marketwebb.co/zh-cn/join?ref=507720986&amp; Type = Wenzi; Binance Exchangeは、北米、ヨーロッパ、臺(tái)灣、中東、香港、マレーシアを含む180か國(guó)と地域にサービスを提供するグローバルな暗號(hào)通貨取引所です。 600を超える暗號(hào)通貨を提供し、世界中に2億7000萬(wàn)人の登録ユーザーがいます。

Android電話(huà)でHuobiをダウンロードする方法は? Huobiダウンロードチュートリアル(ステップバイステップチュートリアル) Android電話(huà)でHuobiをダウンロードする方法は? Huobiダウンロードチュートリアル(ステップバイステップチュートリアル) Jun 12, 2025 pm 10:12 PM

Android攜帯電話(huà)のユーザーは、次の手順からHuobi/Huobiアプリをダウンロードしてインストールできます。1。ネットワークが安定しており、ストレージスペースで十分であることを確認(rèn)してください。 2. Huobi/Huobiの公式Webサイトからアプリをダウンロードし、ブラウザを使用して公式Webサイトにアクセスし、ダウンロードリンクをクリックするか、QRコードをスキャンするか、ApptreasureやHuawei App Marketなどのサードパーティのアプリケーションストアを検索してダウンロードしてください。 3.ダウンロードされた.apkファイルを見(jiàn)つけ、「不明なソースアプリ」のインストール許可を有効にし、インストールを完了するためのプロンプトに従ってください。

See all articles