Home > Backend Development > PHP Tutorial > PHP WeChat public platform development class example_PHP tutorial

PHP WeChat public platform development class example_PHP tutorial

WBOY
Release: 2016-07-13 09:58:32
Original
956 people have browsed it

php WeChat public platform development class example

The ThinkWechat.php class file is as follows:

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

96

97

98

99

100

101

102

103

104

105

106

107

108

109

110

111

112

113

114

115

116

117

118

119

120

121

122

123

124

125

126

127

128

129

130

131

132

133

134

135

136

137

138

139

140

141

142

class Wechat {

/**

* Data or response data pushed by WeChat

* @var array

*/

private $data = array();

/**

* Construction method, used to instantiate WeChat SDK

* @param string $token TOKEN set by WeChat open platform

*/

public function __construct($token) {

$this->auth($token) || exit;

if(!empty($_GET['echostr'])){

exit($_GET['echostr']);

} else {

try

{

$xml = file_get_contents("php://input");

$xml = new SimpleXMLElement($xml);

$xml || exit;

foreach ($xml as $key => $value) {

$this->data[$key] = strval($value);

}

}catch(Exception $e){

}

}

}

/**

* Get data pushed by WeChat

* @return array Data converted to array

*/

public function request(){

return $this->data;

}

/**

* * Respond to messages sent by WeChat (automatic reply)

* @param string $to receives username

* @param string $from sender username

* @param array $content reply information, text information is string type

* @param string $type message type

* @param string $flag Whether the new standard has just received the information

* @return string XML string

*/

public function response($content, $type = 'text', $flag = 0){

/* Basic data */

$this->data = array(

'ToUserName' => $this->data['FromUserName'],

'FromUserName' => $this->data['ToUserName'],

'CreateTime' => time(),

'MsgType' => $type,

);

/* Add type data */

$this->$type($content);

/* Add status */

$this->data['FuncFlag'] = $flag;

/* Convert data to XML */

$xml = new SimpleXMLElement('');

$this->data2xml($xml, $this->data);

exit($xml->asXML());

}

/**

* Reply to text message

* @param string $content The message to reply

*/

private function text($content){

$this->data['Content'] = $content;

}

/**

* Reply to music message

* @param string $content The music to reply to

*/

private function music($music){

list(

$music['Title'],

$music['Description'],

$music['MusicUrl'],

$music['HQMusicUrl']

) = $music;

$this->data['Music'] = $music;

}

/**

* Reply to graphic messages

* @param string $news The graphic and text content to be replied to

*/

private function news($news){

$articles = array();

foreach ($news as $key => $value) {

list(

$articles[$key]['Title'],

$articles[$key]['Description'],

$articles[$key]['PicUrl'],

$articles[$key]['Url']

) = $value;

if($key >= 9) { break; } //Only 10 news updates are allowed at most

}

$this->data['ArticleCount'] = count($articles);

$this->data['Articles'] = $articles;

}

/**

* Data XML encoding

* @param object $xml XML object

* @param mixed $data data

* @param string $item Node name when numerically indexed

* @return string

*/

private function data2xml($xml, $data, $item = 'item') {

foreach ($data as $key => $value) {

/* Specify the default numeric key */

is_numeric($key) && $key = $item;

/* Add child element */

if(is_array($value) || is_object($value)){

$child = $xml->addChild($key);

$this->data2xml($child, $value, $item);

} else {

if(is_numeric($value)){

$child = $xml->addChild($key, $value);

} else {

$child = $xml->addChild($key);

$node = dom_import_simplexml($child);

$node->appendChild($node->ownerDocument->createCDATASection($value));

}

}

}

}

/**

* Perform signature authentication on the data to ensure it is the data sent by WeChat

* @param string $token TOKEN set by WeChat open platform

* @return boolean true-signature is correct, false-signature is wrong

*/

private function auth($token){

if(empty($_GET['signature'])) return;

/* Get data */

$data = array($_GET['timestamp'], $_GET['nonce'], $token);

$sign = $_GET['signature'];

/* Dictionary sort the data */

sort($data,SORT_STRING);

/* Generate signature */

$signature = sha1(implode($data));

return $signature === $sign;

}

}

www.bkjia.comtruehttp: //www.bkjia.com/PHPjc/977616.htmlTechArticlephp WeChat public platform development class example ThinkWechat.php class file is as follows: 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 4...
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template