本文實例講述了php版微信小店API二次開發及使用方法。分享給大家供大家參考,具體如下:
1. weixiaodian.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
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
143
144
|
<?php class wXd { public $AppID = "" ; public $AppSecret = "" ; public $OutPut = "" ; public $AccessToken = "" ; public $ID = "" ; public $HandleAT = array (); public $Logistics = array (); public function __construct( $ID = '0' ){ $this ->ID = $ID ; $this ->sLogisticsList(); } public function cUrlRequest( $url , $data = null){ $curl = curl_init(); curl_setopt( $curl , CURLOPT_URL, $url ); curl_setopt( $curl , CURLOPT_SSL_VERIFYPEER, FALSE); curl_setopt( $curl , CURLOPT_SSL_VERIFYHOST, FALSE); if (! empty ( $data )){ curl_setopt( $curl , CURLOPT_POST, 1); curl_setopt( $curl , CURLOPT_POSTFIELDS, $data ); } curl_setopt( $curl , CURLOPT_RETURNTRANSFER, 1); $output = curl_exec( $curl ); curl_close( $curl ); return $output ; } //獲取ACCESSTOKEN public function sAcessToken(){ $this ->HandleAT = $this ->gAccessToken(); if ( $this ->HandleAT->expire_time < time()){ $appid = $this ->AppID; $appsecret = $this ->AppSecret; $url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=" . $appid . "&secret=" . $appsecret ; $result = https_request( $url ); //echo '<pre>'; var_dump($result);die; $jsoninfo = json_decode( $result , true); $access_token = $jsoninfo [ "access_token" ]; $this ->pAccessToken( $access_token ); return $access_token ; } else { return $this ->HandleAT->access_token; } } //保存ACCESSTOKEN public function pAccessToken( $accesstoken ){ $Path = $_SERVER [ 'DOCUMENT_ROOT' ]. "/jSon_file/access_token_" . $this ->ID. ".json" ; //print_r($Path); if (! file_exists ( $Path )){ touch( $Path ); chmod ( $Path ,0777); } $data [ 'expire_time' ] = time() + 7000; $data [ 'access_token' ] = $accesstoken ; $fp = fopen ( $Path , "w" ); fwrite( $fp , json_encode( $data )); fclose( $fp ); } //讀取ACCESSTOKEN public function gAccessToken(){ $Path = $_SERVER [ 'DOCUMENT_ROOT' ]. "/jSon_file/access_token_" . $this ->ID. ".json" ; if (! file_exists ( $Path )){ $data [ 'expire_time' ] = 0; $data [ 'access_token' ] = '' ; } else { $data = json_decode( file_get_contents ( $Path )); //print_r($data); } return $data ; } //獲取所有商品 public function gStateProduct( $state = 0){ //https://api.weixin.qq.com/merchant/getbystatus?access_token=ACCESS_TOKEN //{"status": 0} $this ->AccessToken = $this ->sAcessToken(); $url = "https://api.weixin.qq.com/merchant/getbystatus?access_token=" . $this ->AccessToken; //print_r($this->AccessToken); $ResData = $this ->cUrlRequest( $url , '{"status": ' . $state . '}' ); //echo "<pre>"; print_r( json_decode( $ResData ) ); } //設置微小店物流支持列表 public function sLogisticsList(){ $this ->Logistics[ 'Fsearch_code' ] = "郵政EMS" ; $this ->Logistics[ '002shentong' ] = "申通快遞" ; $this ->Logistics[ '066zhongtong' ] = "中通速遞" ; $this ->Logistics[ '056yuantong' ] = "圓通速遞" ; $this ->Logistics[ '042tiantian' ] = "天天快遞" ; $this ->Logistics[ '003shunfeng' ] = "順豐速運" ; $this ->Logistics[ '059Yunda' ] = "韻達快運" ; $this ->Logistics[ '064zhaijisong' ] = "宅急送" ; $this ->Logistics[ '020huitong' ] = "匯通快運" ; $this ->Logistics[ 'zj001yixun' ] = "易迅快遞" ; } //獲取訂單詳情 public function gOrderInfo( $order ){ $this ->AccessToken = $this ->sAcessToken(); //print_r($this->AccessToken); $url = "https://api.weixin.qq.com/merchant/order/getbyid?access_token=" . $this ->AccessToken; $ResData = $this ->cUrlRequest( $url , '{"order_id": "' . $order . '"}' ); //$url = "https://api.weixin.qq.com/merchant/order/getbyfilter?access_token=".$this->AccessToken; //$ResData = $this->cUrlRequest($url,'{"status": 2}'); print_r( json_decode( $ResData ) ); } //查詢全部訂單 public function gOrderAll( $data = array ()){ $this ->AccessToken = $this ->sAcessToken(); $url = "https://api.weixin.qq.com/merchant/order/getbyfilter?access_token=" . $this ->AccessToken; if (! empty ( $data )){ $data = json_encode( $data ); } else { $firstday = strtotime ( date ( "Y-m-01" ,time())); $data = array ( 'begintime' => $firstday , 'endtime' => strtotime ( "$firstday +1 month -1 day" )); $data = json_encode( $data ); } $ResData = $this ->cUrlRequest( $url , $data ); print_r( json_decode( $ResData ) ); } //設置訂單發貨 public function sOrderDelivery( $data = array ( "need_delivery" => '0' )){ $this ->AccessToken = $this ->sAcessToken(); $url = "https://api.weixin.qq.com/merchant/order/setdelivery?access_token=" . $this ->AccessToken; if (! empty ( $data )){ $data = json_encode( $data ); } else { $data = array ( "need_delivery" => '0' ); $data = json_encode( $data ); } $ResData = $this ->cUrlRequest( $url , $data ); print_r( json_decode( $ResData ) ); } //關閉訂單 public function sOrderClose( $order ){ $this ->AccessToken = $this ->sAcessToken(); $url = "https://api.weixin.qq.com/merchant/order/close?access_token=" . $this ->AccessToken; $ResData = $this ->cUrlRequest( $url , '{"order_id": "' . $order . '"}' ); print_r( json_decode( $ResData ) ); } } |
2. 頁面執行代碼
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
<?php include_once 'class/weixiaodian.php' ; $wXd = new wXd(); echo "<pre>" ; //查詢全部商品 $wXd ->gStateProduct(); //獲取訂單信息 $wXd ->gOrderInfo( '12963133879983601645' ); //關閉訂單 $wXd ->sOrderClose( '12963133879983600740' ); //發貨訂單設置 $data [ 'need_delivery' ] = '1' ; $data [ 'order_id' ] = '12963133879983600667' ; $data [ 'delivery_company' ] = '059Yunda' ; $data [ 'delivery_track_no' ] = '1000464090326' ; $wXd ->sOrderDelivery( $data ); //獲取所有訂單 $wXd ->gOrderAll(); echo "</pre>" ; |
希望本文所述對大家PHP程序設計有所幫助。