<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                ``` <?php namespace weixin; class wxpay{ public static $config; /** * 統一下單配置參數 * @param unknown $params * @return unknown|boolean */ public static function getPayMsg($params){ $url = "https://api.mch.weixin.qq.com/pay/unifiedorder"; $nonce_str = self::createNoncestr(); $data = [ 'appid' => self::$config['APPID'], 'mch_id' => self::$config['MCHID'], 'nonce_str' => $nonce_str, 'spbill_create_ip' => self::get_client_ip(), ]; $data = array_merge($data,$params); $sign = self::getSign($data,false); $data["sign"] = $sign; $xml = self::arrayToXml($data); $response = self::postXmlCurl($xml, $url); $response = self::xmlToArray($response); $result = false; if(isset($response['prepay_id'])){ switch ($params['trade_type']){ case 'JSAPI': $result = self::getJsOrder($response['prepay_id']); break; case 'MWEB': $result = isset($response['mweb_url']) ? $response['mweb_url'] : false; break; case 'NATIVE': $result = isset($response['code_url']) ? $response['code_url'] : false; break; case 'APP': $result = self::getAppOrder($response['prepay_id']); break; } } return $result; } /** * 拼接公眾號支付所需參數 * @param string $prepayId * @return array */ private static function getJsOrder($prepayId){ $data = [ 'appId' => self::$config['APPID'], 'nonceStr' => self::createNoncestr(), 'package' => "prepay_id=".$prepayId, 'timeStamp' => time().'', 'signType' => 'MD5' ]; $sign = self::getSign($data, false); $data["paySign"] = $sign; return $data; } /** * 拼接App支付所需參數 * @param unknown $prepayId * @return unknown */ private static function getAppOrder($prepayId){ $data["appid"] = self::$config["APPID"]; $data["noncestr"] = self::createNoncestr(); $data["package"] = "Sign=WXPay"; $data["partnerid"] = self::$config['MCHID']; $data["prepayid"] = $prepayId; $data["timestamp"] = time(); $sign = self::getSign($data, false); $data["sign"] = $sign; return $data; } /** * 生成簽名 * @param array $Obj * @return string */ public static function getSign($Obj){ $Parameters = array(); foreach ($Obj as $k => $v){ if(strlen($v) > 0){ $Parameters[$k] = $v; } } //簽名步驟一:按字典序排序參數 ksort($Parameters); $String = self::formatBizQueryParaMap($Parameters, false); //echo '【string1】'.$String.'</br>'; //簽名步驟二:在string后加入KEY $String = $String."&key=".self::$config['APIKEY']; //echo "【string2】".$String."</br>"; //簽名步驟三:MD5加密 $String = md5($String); //echo "【string3】 ".$String."</br>"; //簽名步驟四:所有字符轉為大寫 $result_ = strtoupper($String); //echo "【result】 ".$result_."</br>"; return $result_; } /** * 作用:產生隨機字符串,不長于32位 */ private static function createNoncestr( $length = 32 ){ $chars = "abcdefghijklmnopqrstuvwxyz0123456789"; $str =""; for ( $i = 0; $i < $length; $i++ ) { $str.= substr($chars, mt_rand(0, strlen($chars)-1), 1); } return $str; } //數組轉xml private static function arrayToXml($arr){ $xml = "<xml>"; foreach ($arr as $key=>$val){ if (is_numeric($val)){ $xml.="<".$key.">".$val."</".$key.">"; }else{ $xml.="<".$key."><![CDATA[".$val."]]></".$key.">"; } } $xml.="</xml>"; return $xml; } /** * 作用:將xml轉為array */ private static function xmlToArray($xml){ //將XML轉為array $array_data = json_decode(json_encode(simplexml_load_string($xml, 'SimpleXMLElement', LIBXML_NOCDATA)), true); return $array_data; } /** * 作用:以post方式提交xml到對應的接口url */ private static function postXmlCurl($xml,$url,$second=30){ //初始化curl $ch = curl_init(); //設置超時 curl_setopt($ch, CURLOPT_TIMEOUT, $second); //這里設置代理,如果有的話 //curl_setopt($ch,CURLOPT_PROXY, '8.8.8.8'); //curl_setopt($ch,CURLOPT_PROXYPORT, 8080); curl_setopt($ch,CURLOPT_URL, $url); curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,FALSE); curl_setopt($ch,CURLOPT_SSL_VERIFYHOST,FALSE); //設置header curl_setopt($ch, CURLOPT_HEADER, FALSE); //要求結果為字符串且輸出到屏幕上 curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE); //post提交方式 curl_setopt($ch, CURLOPT_POST, TRUE); curl_setopt($ch, CURLOPT_POSTFIELDS, $xml); //運行curl $data = curl_exec($ch); //返回結果 if($data){ curl_close($ch); return $data; } } /* 獲取當前服務器的IP */ private static function get_client_ip(){ if ($_SERVER['REMOTE_ADDR']) { $cip = $_SERVER['REMOTE_ADDR']; } elseif (getenv("REMOTE_ADDR")) { $cip = getenv("REMOTE_ADDR"); } elseif (getenv("HTTP_CLIENT_IP")) { $cip = getenv("HTTP_CLIENT_IP"); } else { $cip = "unknown"; } return $cip; } /** * 作用:格式化參數,簽名過程需要使用 */ private static function formatBizQueryParaMap($paraMap, $urlencode){ $buff = ""; ksort($paraMap); foreach ($paraMap as $k => $v){ if($urlencode){ $v = urlencode($v); } $buff .= $k . "=" . $v . "&"; } $reqPar = ''; if (strlen($buff) > 0){ $reqPar = substr($buff, 0, strlen($buff)-1); } return $reqPar; } } ```
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看