Rumah pembangunan bahagian belakang tutorial php php一个文件搞定微信jssdk配置

php一个文件搞定微信jssdk配置

May 29, 2018 pm 03:54 PM
php WeChat

这篇文章主要为大家详细介绍了php如何利用一个文件搞定微信jssdk配置,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

php一个文件搞定微信jssdk配置:

包括缓存,包括https通讯,获取微信access_token,签名什么的都有。但是防范性编程做得比较少,商业用的话,需要完善下代码。

使用姿势


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

^ajax(Common.ServerUrl + "GetWX.php", {

 data: {

  Type: "config",

  url: location.href.split('#')[0]

 },

 dataType: 'json',

 type: 'get',

 timeout: 5000,

 success: function(data) {

  wx.config({

   debug: true, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。

   appId: '……', // 必填,公众号的唯一标识

   timestamp: data.timestamp, // 必填,生成签名的时间戳

   nonceStr: data.nonceStr, // 必填,生成签名的随机串

   signature: data.signature, // 必填,签名,见附录1

   jsApiList: ["getLocation"] // 必填,需要使用的JS接口列表,所有JS接口列表见附录2

  });

 }

})

wx.ready(function() {

 wx.getLocation({

  type: 'wgs84', // 默认为wgs84的gps坐标,如果要返回直接给openLocation用的火星坐标,可传入'gcj02'

  success: function(res) {

   var latitude = res.latitude; // 纬度,浮点数,范围为90 ~ -90

   var longitude = res.longitude; // 经度,浮点数,范围为180 ~ -180。

   plus2.storage.setItem("latitude", latitude);

   plus2.storage.setItem("longitude", longitude);

  }

 });

});

Salin selepas log masuk


服务端

GetWX.php


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

90

91

92

93

94

95

<?php

 include "lib/Cache.php";

 define($APPID, "……");

 define($SECRET, "……")

 if($_GET['Type'] == "access_token"){

//  echo getAccess_token();

 }

 else if($_GET['Type'] == "jsapi_ticket"){

//  echo getJsapi_ticket();

 }

 else if($_GET['Type'] == "config"){

  $jsapi_ticket = getJsapi_ticket();

  $nonceStr = "x".rand(10000,100000)."x"; //随机字符串

  $timestamp = time(); //时间戳

  $url = $_GET['url'];

  $signature = getSignature($jsapi_ticket,$nonceStr, $timestamp, $url);

 

  $result = array("jsapi_ticket"=>$jsapi_ticket, "nonceStr"=>$nonceStr,"timestamp"=>$timestamp,"url"=>$url,"signature"=>$signature);

  echo json_encode($result);

 }

 

 function getSignature($jsapi_ticket,$noncestr, $timestamp, $url){

  $string1 = "jsapi_ticket=".$jsapi_ticket."&noncestr=".$noncestr."&timestamp=".$timestamp."&url=".$url;

  $sha1 = sha1($string1);

  return $sha1;

 }

 

 function getJsapi_ticket(){

  $cache = new Cache();

  $cache = new Cache(7000, 'cache/'); //需要创建cache文件夹存储缓存文件。

  //从缓存从读取键值 $key 的数据

  $jsapi_ticket = $cache -> get("jsapi_ticket");

  $access_token = getAccess_token();

  //如果没有缓存数据

  if ($jsapi_ticket == false) {

   $access_token = getAccess_token();

   $url = 'https://api.weixin.qq.com/cgi-bin/ticket/getticket';

   $data = array('type'=>'jsapi','access_token'=>$access_token);

   $header = array();

   $response = json_decode(curl_https($url, $data, $header, 5));

   $jsapi_ticket = $response->ticket;

   //写入键值 $key 的数据

   $cache -> put("jsapi_ticket", $jsapi_ticket);

  }

  return $jsapi_ticket;

 }

 

 function getAccess_token(){

  $cache = new Cache();

  $cache = new Cache(7000, 'cache/');

  //从缓存从读取键值 $key 的数据

  $access_token = $cache -> get("access_token");

 

  //如果没有缓存数据

  if ($access_token == false) {

   $url = 'https://api.weixin.qq.com/cgi-bin/token';

   $data = array('grant_type'=>'client_credential','appid'=>$APPID,'secret'=>$SECRET);

   $header = array();

 

   $response = json_decode(curl_https($url, $data, $header, 5));

   $access_token = $response->access_token;

   //写入键值 $key 的数据

   $cache -> put("access_token", $access_token);

  }

  return $access_token;

 }

 

 /** curl 获取 https 请求

 * @param String $url 请求的url

 * @param Array $data 要發送的數據

 * @param Array $header 请求时发送的header

 * @param int $timeout 超时时间,默认30s

 */

 function curl_https($url, $data=array(), $header=array(), $timeout=30){

  $ch = curl_init();

  curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); // 跳过证书检查

  curl_setopt($ch, CURLOPT_URL, $url);

  curl_setopt($ch, CURLOPT_HTTPHEADER, $header);

  curl_setopt($ch, CURLOPT_POST, true);

  curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($data));

  curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

  curl_setopt($ch, CURLOPT_TIMEOUT, $timeout);

 

  $response = curl_exec($ch);

 

  if($error=curl_error($ch)){

  die($error);

  }

 

  curl_close($ch);

 

  return $response;

 

 }

?>

Salin selepas log masuk


Cache.php
不知道哪位写的源代码~


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

<?php

class Cache {

 private $cache_path;

 //path for the cache

 private $cache_expire;

 //seconds that the cache expires

 

 //cache constructor, optional expiring time and cache path

 public function Cache($exp_time = 3600, $path = "cache/") {

  $this -> cache_expire = $exp_time;

  $this -> cache_path = $path;

 }

 

 //returns the filename for the cache

 private function fileName($key) {

  return $this -> cache_path . md5($key);

 }

 

 //creates new cache files with the given data, $key== name of the cache, data the info/values to store

 public function put($key, $data) {

  $values = serialize($data);

  $filename = $this -> fileName($key);

  $file = fopen($filename, 'w');

  if ($file) {//able to create the file

   fwrite($file, $values);

   fclose($file);

  } else

   return false;

 }

 

 //returns cache for the given key

 public function get($key) {

  $filename = $this -> fileName($key);

  if (!file_exists($filename) || !is_readable($filename)) {//can't read the cache

   return false;

  }

  if (time() < (filemtime($filename) + $this -> cache_expire)) {//cache for the key not expired

   $file = fopen($filename, "r");

   // read data file

   if ($file) {//able to open the file

    $data = fread($file, filesize($filename));

    fclose($file);

    return unserialize($data);

    //return the values

   } else

    return false;

  } else

   return false;

  //was expired you need to create new

 }

 

}

?>

Salin selepas log masuk


以上就是本文的全部内容,希望对大家的学习有所帮助。


相关推荐:

php一个文件搞定微信jssdk配置的实例代码详解

phpmyadmin 装配 nginx 配置 cookie 配置

php环境配置及调试配置的方


Atas ialah kandungan terperinci php一个文件搞定微信jssdk配置. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Tag artikel panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Panduan Pemasangan dan Naik Taraf PHP 8.4 untuk Ubuntu dan Debian Panduan Pemasangan dan Naik Taraf PHP 8.4 untuk Ubuntu dan Debian Dec 24, 2024 pm 04:42 PM

Panduan Pemasangan dan Naik Taraf PHP 8.4 untuk Ubuntu dan Debian

Tutorial Generasi Imej DeepSeek Tutorial Generasi Imej DeepSeek Feb 19, 2025 pm 04:15 PM

Tutorial Generasi Imej DeepSeek

Cara Menyediakan Kod Visual Studio (Kod VS) untuk Pembangunan PHP Cara Menyediakan Kod Visual Studio (Kod VS) untuk Pembangunan PHP Dec 20, 2024 am 11:31 AM

Cara Menyediakan Kod Visual Studio (Kod VS) untuk Pembangunan PHP

Bagaimana anda menghuraikan dan memproses HTML/XML dalam PHP? Bagaimana anda menghuraikan dan memproses HTML/XML dalam PHP? Feb 07, 2025 am 11:57 AM

Bagaimana anda menghuraikan dan memproses HTML/XML dalam PHP?

Laman Web Platform Perdagangan Laman Web Gateio Cina. Laman Web Platform Perdagangan Laman Web Gateio Cina. Feb 21, 2025 pm 03:06 PM

Laman Web Platform Perdagangan Laman Web Gateio Cina.

Program PHP untuk mengira vokal dalam rentetan Program PHP untuk mengira vokal dalam rentetan Feb 07, 2025 pm 12:12 PM

Program PHP untuk mengira vokal dalam rentetan

GATEIO EXCHANGE Versi lama Gateio Exchange App Versi Lama Saluran Muat turun GATEIO EXCHANGE Versi lama Gateio Exchange App Versi Lama Saluran Muat turun Mar 04, 2025 pm 11:36 PM

GATEIO EXCHANGE Versi lama Gateio Exchange App Versi Lama Saluran Muat turun

Pintu Masuk Masuk Log Masuk Masuk. Pintu Masuk Masuk Log Masuk Masuk. Mar 04, 2025 pm 04:51 PM

Pintu Masuk Masuk Log Masuk Masuk.

See all articles