微信支付开发(5) 订单查询_PHP教程
本文介绍微信支付中订单查询功能的实现。
作者:方倍工作室
地址:http://www.cnblogs.com/txw1958/p/wxpay-order-query.html
一、订单查询
因为某一方技术的原因,可能导致商户在预期时间内都收不到最终支付通知,此时商户可以通过该API来查询订单的详细支付状态。
订单查询API的URL为:
https://api.weixin.qq.com/pay/orderquery?access_token=xxxxxx
URL中的参数只包含目前微信公众平台凭证access_token,而订单查询的真正数据是放在PostData中的,格式如下:
<span>{ </span>"appid" : "wwwwb4f85f3a797777", "package" : "out_trade_no=11122&partner=1900090055&sign=4e8d0df3da0c3d0df38f", "timestamp" : "1369745073", "app_signature" : "53cca9d47b883bd4a5c85a9300df3da0cb48565c", "sign_method" : "sha1"<span> }</span>
上述内容参数说明如表所示。
参数 |
说明 |
appid |
公众平台账户的AppId; |
package |
查询订单的关键信息数据,包含第三方唯一订单号out_trade_no、财付通商户身仹标识partner(即前文所述的partnerid)、签名sign,其中sign是对参数字典序排序并使用&联合起来,最后加上&key=partnerkey(唯一分配),进行md5运算,再转成全大写,最终得到sign |
timestamp |
linux时间戳; |
app_signature |
根据支付签名(paySign)生成方法中所讲的签名方式生成的,参加签名字段为:appid、appkey、package、timestamp; |
sign_method |
签名方法(不计入签名生成); |
二、实现细节
1. 获得access token
这个很容易,参考微信公众平台开发(26) ACCESS TOKEN
代码如下:
<span>1</span> <span>$appid</span> = "wx0000000000000000"<span>; </span><span>2</span> <span>$appsecret</span> = "e76050733c695748537fc4d4c21d0e2c"<span>; </span><span>3</span> <span>$url</span> = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=<span>$appid</span>&secret=<span>$appsecret</span>"<span>; </span><span>4</span> <span>$result</span> = https_request(<span>$url</span><span>); </span><span>5</span> <span>$jsoninfo</span> = json_decode(<span>$result</span>, <span>true</span><span>); </span><span>6</span> <span>$access_token</span> = <span>$jsoninfo</span>["access_token"];
2. 参数生成
appid: 直接赋值
timestamp:程序直接获取
<span>$timestamp</span> = <span>time</span>();
sign_method:这里为sha1
难点1:package 值的获得
先要获得sign
sign是out_trade_no,partner,key(partnerkey)三项信息的字典序排序,再MD5运算,再转为大写
<span>$sign</span>= <span>strtoupper</span>(<span>md5</span>("out_trade_no=JfuKdiBig4zZnE4n&partner=1234567890&key=ebf5cf381de2d716d432bfda34fa9e57"));
package 是查询订单的关键信息数据,包含第三方唯一订单号 out_trade_no、财付通商户身仹标识 partner(即前文所述的 partnerid) 、签名 sign
<span>$package</span> = "out_trade_no=JfuKdiBig4zZnE4n&partner=1234567890&sign=".<span>$sign</span>;
难点2:获得app_signature
app_signature 依然是根据支付签名(paySign)生成方法中所讲的签名方式生成的,参加签名字段为:appid、appkey、package、timestamp;
<span>$obj</span>['appid'] = "wx0000000000000000"<span>; </span><span>$obj</span>['appkey'] = "8mruTNOGeX8OVUlIYxIyw6kxCRvdJENpWpw8mruTNOGeX8OVUlIYxIyw6kxCRvdJENpWpw8mruTNOGeX8OVUlIYxIyw6kxCRvdJENpWpw8mruTNOGeX8OVUlIYxIyw6k"<span>; </span><span>$obj</span>['package'] = <span>$package</span><span>; </span><span>$obj</span>['timestamp'] = <span>$timestamp</span><span>; </span><span>$WxPayHelper</span> = <span>new</span><span> WxPayHelper(); </span><span>//</span><span>get_biz_sign函数受保护,需要先取消一下,否则会报错</span> <span>$app_signature</span> = <span>$WxPayHelper</span>->get_biz_sign(<span>$obj</span>);
这样各项参数都获得了
3.提交查询
<span>$jsonmenu</span> = '<span> { "appid" : "wx0000000000000000", "package" : "</span>'.<span>$package</span>.'<span>", "timestamp" : "</span>'.<span>$timestamp</span>.'<span>", "app_signature" : "</span>'.<span>$app_signature</span>.'<span>", "sign_method" : "sha1" } </span>'<span>; </span><span>$url</span> = "https://api.weixin.qq.com/pay/orderquery?access_token=".<span>$access_token</span><span>; </span><span>$result</span> = https_request(<span>$url</span>, <span>$jsonmenu</span><span>); </span><span>var_dump</span>(<span>$result</span>);
完整代码如下所示:
<span> 1</span> <span>include_once</span>("WxPayHelper.php"<span>); </span><span> 2</span> <span> 3</span> <span>//</span><span>1. 获取access token</span> <span> 4</span> <span>$appid</span> = "wx0000000000000000"<span>; </span><span> 5</span> <span>$appsecret</span> = "e76050733ce76050733ce76050733cdd"<span>; </span><span> 6</span> <span>$url</span> = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=<span>$appid</span>&secret=<span>$appsecret</span>"<span>; </span><span> 7</span> <span>$result</span> = https_request(<span>$url</span><span>); </span><span> 8</span> <span>$jsoninfo</span> = json_decode(<span>$result</span>, <span>true</span><span>); </span><span> 9</span> <span>$access_token</span> = <span>$jsoninfo</span>["access_token"<span>]; </span><span>10</span> <span>11</span> <span>12</span> <span>//</span><span>2.准备参数</span> <span>13</span> <span>$timestamp</span> = <span>time</span><span>(); </span><span>14</span> <span>$sign</span>= <span>strtoupper</span>(<span>md5</span>("out_trade_no=JfuKdiBig4zZnE4n&partner=1234567890&key=asdfasdfasdfasdfasdfasdfasdfasdf"<span>)); </span><span>15</span> <span>$package</span> = "out_trade_no=JfuKdiBig4zZnE4n&partner=1234567890&sign=".<span>$sign</span><span>; </span><span>16</span> <span>17</span> <span>//</span><span>2.1构造最麻烦的app_signature</span> <span>18</span> <span>$obj</span>['appid'] = "wx0000000000000000"<span>; </span><span>19</span> <span>$obj</span>['appkey'] = "8mruTNOGeX8OVUlIYxIyw6kxCRvdJENpWpw8mruTNOGeX8OVUlIYxIyw6kxCRvdJENpWpw8mruTNOGeX8OVUlIYxIyw6kxCRvdJENpWpw8mruTNOGeX8OVUlIYxIyw6k"<span>; </span><span>20</span> <span>$obj</span>['package'] = <span>$package</span><span>; </span><span>21</span> <span>$obj</span>['timestamp'] = <span>$timestamp</span><span>; </span><span>22</span> <span>$WxPayHelper</span> = <span>new</span><span> WxPayHelper(); </span><span>23</span> <span>//</span><span>get_biz_sign函数受保护,需要先取消一下,否则会报错</span> <span>24</span> <span>$app_signature</span> = <span>$WxPayHelper</span>->get_biz_sign(<span>$obj</span><span>); </span><span>25</span> <span>26</span> <span>//</span><span>3. 将构造的json提交给微信服务器,查询</span> <span>27</span> <span>$jsonmenu</span> = ' <span>28</span> <span>{ </span><span>29</span> <span> "appid" : "wx0000000000000000", </span><span>30</span> "package" : "'.<span>$package</span>.'<span>", </span><span>31</span> "timestamp" : "'.<span>$timestamp</span>.'<span>", </span><span>32</span> "app_signature" : "'.<span>$app_signature</span>.'<span>", </span><span>33</span> <span> "sign_method" : "sha1" </span><span>34</span> <span>} </span><span>35</span> '<span>; </span><span>36</span> <span>37</span> <span>$url</span> = "https://api.weixin.qq.com/pay/orderquery?access_token=".<span>$access_token</span><span>; </span><span>38</span> <span>$result</span> = https_request(<span>$url</span>, <span>$jsonmenu</span><span>); </span><span>39</span> <span>var_dump</span>(<span>$result</span><span>); </span><span>40</span> <span>41</span> <span>function</span> https_request(<span>$url</span>, <span>$data</span> = <span>null</span><span>){ </span><span>42</span> <span>$curl</span> =<span> curl_init(); </span><span>43</span> curl_setopt(<span>$curl</span>, CURLOPT_URL, <span>$url</span><span>); </span><span>44</span> curl_setopt(<span>$curl</span>, CURLOPT_SSL_VERIFYPEER, <span>FALSE</span><span>); </span><span>45</span> curl_setopt(<span>$curl</span>, CURLOPT_SSL_VERIFYHOST, <span>FALSE</span><span>); </span><span>46</span> <span>if</span> (!<span>empty</span>(<span>$data</span><span>)){ </span><span>47</span> curl_setopt(<span>$curl</span>, CURLOPT_POST, 1<span>); </span><span>48</span> curl_setopt(<span>$curl</span>, CURLOPT_POSTFIELDS, <span>$data</span><span>); </span><span>49</span> <span> } </span><span>50</span> curl_setopt(<span>$curl</span>, CURLOPT_RETURNTRANSFER, 1<span>); </span><span>51</span> <span>$output</span> = curl_exec(<span>$curl</span><span>); </span><span>52</span> curl_close(<span>$curl</span><span>); </span><span>53</span> <span>return</span> <span>$output</span><span>; </span><span>54</span> }
三、订单结果
上述程序执行后,获得订单结果如下
<span>{ </span>"errcode": 0<span>, </span>"errmsg": "ok"<span>, </span>"order_info"<span>: { </span>"ret_code": 0<span>, </span>"ret_msg": ""<span>, </span>"input_charset": "GBK"<span>, </span>"trade_state": "0"<span>, </span>"trade_mode": "1"<span>, </span>"partner": "1234567890"<span>, </span>"bank_type": "CMB_FP"<span>, </span>"bank_billno": "201405273540085997"<span>, </span>"total_fee": "1"<span>, </span>"fee_type": "1"<span>, </span>"transaction_id": "1218614901201405273313473135"<span>, </span>"out_trade_no": "JfuKdiBig4zZnE4n"<span>, </span>"is_split": "false"<span>, </span>"is_refund": "false"<span>, </span>"attach": ""<span>, </span>"time_end": "20140527194139"<span>, </span>"transport_fee": "0"<span>, </span>"product_fee": "1"<span>, </span>"discount": "0"<span>, </span>"rmb_total_fee": ""<span> } }</span>
各个字段的含义如表所示。
参数 |
说明 |
ret_code |
查询结果状态码,0表明成功,其他表明错误; |
ret_msg |
查询结果出错信息; |
input_charset |
返回信息中的编码方式; |
trade_state |
订单状态,0为成功,其他为失败; |
trade_mode |
交易模式,1为即时到帐,其他保留; |
partner |
财付通商户号,即前文的partnerid; |
bank_type |
银行类型; |
bank_billno |
银行订单号; |
total_fee |
总金额,单位为分; |
fee_type |
币种,1为人民币; |
transaction_id |
财付通订单号; |
out_trade_no |
第三方订单号; |
is_split |
是否分账,false为无分账,true为有分账; |
is_refund |
是否退款,false为无退款,ture为退款; |
attach |
商户数据包,即生成订单package时商户填入的attach; |
time_end |
支付完成时间; |
transport_fee |
物流费用,单位为分; |
product_fee |
物品费用,单位为分; |
discount |
折扣价格,单位为分; |
rmb_total_fee |
换算成人民币之后的总金额,单位为分,一般看total_fee即可。 |
如果程序有误,会在errcode和errmsg描述出来。

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen



In WeChat können Benutzer ihr Zahlungspasswort eingeben, um Einkäufe zu tätigen. Aber wie können sie ihr Zahlungspasswort abrufen, wenn sie es vergessen? Benutzer müssen zu „Meine Dienste – Wallet – Zahlungseinstellungen“ gehen, um ihr Zahlungspasswort wiederherzustellen, wenn sie es vergessen. In dieser Einführung erfahren Sie, wie Sie Ihr Zahlungskennwort abrufen können, wenn Sie es vergessen haben. Im Folgenden finden Sie eine detaillierte Einführung. Schauen Sie also mal rein! Tutorial zur WeChat-Nutzung. Wie finde ich das WeChat-Zahlungspasswort? Antwort: „Meine Service-Wallet-Zahlungseinstellungen – Zahlungspasswort vergessen“: 1. Klicken Sie zunächst auf „Mein“. 2. Klicken Sie auf den Dienst darin. 3. Klicken Sie auf die darin enthaltene Brieftasche. 4. Suchen Sie nach den Zahlungseinstellungen. 5. Klicken Sie auf Zahlungspasswort vergessen. 6. Geben Sie Ihre eigenen Informationen zur Überprüfung ein. 7. Geben Sie anschließend das neue Zahlungspasswort ein, um es zu ändern.

Lösung zum Vergessen des WeChat-Zahlungskennworts: 1. Öffnen Sie die WeChat-App und klicken Sie auf „I“ in der unteren rechten Ecke, um die Seite des persönlichen Zentrums aufzurufen. 2. Klicken Sie auf der Seite des persönlichen Zentrums auf „Bezahlen“, um die Zahlungsseite aufzurufen Klicken Sie auf der Zahlungsseite oben rechts auf „…“, um die Zahlungsverwaltungsseite aufzurufen. 4. Suchen Sie auf der Zahlungsverwaltungsseite nach „Zahlungskennwort vergessen“ und klicken Sie darauf Nach erfolgreicher Überprüfung können Sie die Methode „Abrufen durch Wischen Ihres Gesichts“ oder „Abrufen durch Verifizieren der Bankkarteninformationen“ wählen, um Ihr Passwort usw. abzurufen.

In der Meituan-App zum Mitnehmen werden zahlreiche Lebensmittel- und Snackläden angeboten, und alle Mobiltelefonbenutzer melden sich über ihre Konten an. Fügen Sie Ihre persönliche Lieferadresse und Kontaktnummer hinzu, um den bequemsten Abholservice zu genießen. Öffnen Sie die Startseite der Software, geben Sie Produktschlüsselwörter ein und suchen Sie online, um die entsprechenden Produktergebnisse zu finden, um zu kaufen und eine Bestellung aufzugeben. Die Plattform empfiehlt Ihnen außerdem Dutzende nahegelegener Restaurants mit guten Bewertungen basierend auf der Lieferadresse Der Shop kann auch verschiedene Zahlungsmethoden einrichten, um die Bestellung sofort abzuschließen. Es gibt auch rote Umschläge zum Mitnehmen Verschiedene Beträge zur Nutzung. Jetzt ist der Editor im Detail für Meituan-Takeout-Nutzer verfügbar. Wir zeigen Ihnen, wie Sie die WeChat-Zahlung einrichten. 1. Nachdem Sie das Produkt ausgewählt haben, senden Sie die Bestellung ab und klicken Sie auf Jetzt

Schritte zum Festlegen der Abzugsreihenfolge für die WeChat-Zahlung: 1. Öffnen Sie die WeChat-App, klicken Sie auf die Benutzeroberfläche „Ich“, klicken Sie auf „Dienste“ und dann auf „Einziehen und Bezahlen“. 2. Klicken Sie auf „Verwendung priorisieren“. Zahlungsmethode“ unter dem Zahlungscode auf der Inkasso- und Zahlungsschnittstelle; 3. Wählen Sie die gewünschte bevorzugte Zahlungsmethode aus.

Wenn jeder nichts zu tun hat, wird er sich dafür entscheiden, die Xianyu-Plattform zu durchsuchen. Jeder kann feststellen, dass es auf dieser Plattform eine große Anzahl von Produkten gibt, die es jedem ermöglichen, verschiedene gebrauchte Produkte zu sehen Es gibt absolut kein Problem mit der Qualität dieser Produkte, sodass jeder sie mit Vertrauen kaufen kann. Die Preise sind sehr erschwinglich und es ist für Verkäufer dennoch durchaus möglich, sie persönlich kennenzulernen Solange alle ordnungsgemäß verhandeln, können Sie sich für die Durchführung von Transaktionen entscheiden, und wenn alle hier bezahlen, möchten sie die Zahlung über WeChat durchführen, aber es scheint, dass die Plattform dies nicht erlaubt um herauszufinden, wie die konkrete Situation ist. Xianyu

WeChat Pay muss nicht an eine Bankkarte gebunden sein. WeChat-Zahlungen können ohne Bindung einer Bankkarte verwendet werden, vorausgesetzt, dass die Echtnamen-Authentifizierung durchgeführt wird, können Sie WeChat-Änderungen zum Versenden roter Umschläge, Überweisungen, Geldeinziehungen und WeChat-Zahlungen verwenden andere Operationen. Es ist zu beachten, dass WeChat kein Bargeld abheben kann, wenn es nicht an eine Bankkarte gebunden ist, und dass es Beschränkungen für Belege, Zahlungen, Überweisungen usw. gibt, mit einem Maximum von 200 Yuan für eine einzelne Transaktion und täglich und einem Maximum von 500 Yuan pro Monat.

Alibaba 1688 ist eine Einkaufs- und Großhandelswebsite, und die Artikel dort sind viel günstiger als bei Taobao. Wie nutzt Alibaba die WeChat-Zahlung? Der Herausgeber hat einige relevante Inhalte zusammengestellt, die Sie mit Ihnen teilen können. Freunde in Not können vorbeikommen und einen Blick darauf werfen. Wie nutzt Alibaba WeChat zum Bezahlen? Antwort: WeChat-Zahlung kann vorerst nicht verwendet werden gehen Sie zu [Alipay, gestaffelte Zahlung], Kassierer] kann ausgewählt werden;

1. Zuerst müssen wir die WeChat-App auf dem Mobiltelefon öffnen und dann klicken, um uns beim WeChat-Konto anzumelden, um die WeChat-Homepage aufzurufen. 2. Klicken Sie auf die Schaltfläche [Ich] in der unteren rechten Ecke der WeChat-Startseite und wählen Sie dann die Option [Zahlung] aus. Wir klicken, um die Zahlungsseite aufzurufen. 3. Nachdem Sie die Seite [Zahlung] aufgerufen haben, klicken Sie auf die Option [Wallet], um sie aufzurufen, und klicken Sie dann auf [Rechnung] in der oberen rechten Ecke der Seite [Wallet].
