0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

如何利用Linux工控機(jī)實(shí)現(xiàn)微信掃碼?

AGk5_ZLG_zhiyua ? 來(lái)源:未知 ? 作者:佚名 ? 2017-09-14 14:06 ? 次閱讀

移動(dòng)支付的普及越來(lái)越廣,像地鐵站的無(wú)人售貨機(jī),小區(qū)的快遞柜,停車(chē)場(chǎng)的充電樁等,這些設(shè)備大部分集成了掃碼支付功能。今天,我們就以項(xiàng)目的形式介紹如何為Linux工控機(jī)接入微信掃碼支付。

一、硬件環(huán)境

  • Linux工控機(jī):致遠(yuǎn)電子DCP-3000L工控機(jī),配套7寸LVDS液晶屏,分辨率800x480;

  • 服務(wù)器:64位Ubuntu主機(jī),具備上網(wǎng)功能;

  • 手機(jī)客戶端:微信客戶端,具備掃一掃識(shí)別二維碼功能。

整體硬件連接框架如圖 1所示:

圖1 硬件連接圖

二、演示效果

先看看最終的效果,客戶端使用Qt框架編寫(xiě),其啟動(dòng)界面如圖 2所示:

圖2 演示Demo主界面

點(diǎn)擊小鍵盤(pán),輸入支付金額,點(diǎn)擊確定后客戶端將與服務(wù)器進(jìn)行通信,拿到支付鏈接,本地生成支付二維碼,如圖 3所示:

圖3 生成支付二維碼

接下來(lái)打開(kāi)手機(jī)微信客戶端,使用掃一掃進(jìn)行掃碼,根據(jù)支付頁(yè)面提示輸入支付密碼,支付結(jié)果如圖 4所示:

圖4 支付結(jié)果

完成支付后,演示客戶端界面上將顯示支付成功字樣,如圖 5所示:

圖5 顯示支付結(jié)果

掃碼接入為何如何容易?服務(wù)器客戶應(yīng)該怎么處理?PHP是不是世界上最好的語(yǔ)言?說(shuō)好的源碼究竟在哪里?敬請(qǐng)關(guān)注本文以下章節(jié)。

三、系統(tǒng)流程

整個(gè)項(xiàng)目采用CS架構(gòu),分為嵌入式Linux客戶端、后臺(tái)服務(wù)器以及手機(jī)客戶端三部分,系統(tǒng)流程如圖 6所示:

圖6 系統(tǒng)流程圖

從系統(tǒng)流程圖中可以看到,我們需要編寫(xiě)客戶端和服務(wù)器端的代碼,客戶端我們使用的是QT框架,服務(wù)器端我們直接使用微信官方的支付SDK包。在客戶端與服務(wù)器的交互過(guò)程中,最主要的是拿到微信支付的鏈接地址以及訂單號(hào),鏈接地址為了生成二維碼圖片,訂單號(hào)為了查詢支付狀態(tài)。

四、服務(wù)器端實(shí)現(xiàn)

從微信官方下載SDK(文末有鏈接),有JAVA、.NET C#、PHP三種類(lèi)型的SDK提供,如圖 7所示:

圖7 微信SDK

這里我們選擇PHP版本進(jìn)行下載,服務(wù)器端環(huán)境為Ubuntu14.04系統(tǒng),采用nginx進(jìn)行搭建,端口號(hào)8080。(必答題:PHP是世界上___的語(yǔ)言

1、PHP+NGINX環(huán)境搭建

我們?cè)赨buntu主機(jī)上進(jìn)行nginx服務(wù)器的搭建,具體步驟為安裝-配置-啟動(dòng)。

安裝nginx服務(wù)器:

配置nginx服務(wù)器,為了不與其它服務(wù)器監(jiān)聽(tīng)端口號(hào)沖突,我們直接修改nginx服務(wù)器的配置,將默認(rèn)的80端口修改為8080,修改過(guò)程如下:

啟動(dòng)nginx服務(wù)器:

由于我們使用的是微信官方SDK的PHP版本,所以我們需要為系統(tǒng)裝上PHP環(huán)境,同時(shí)需要修改nginx服務(wù)器的配置,使其支持PHP。

安裝PHP環(huán)境比較簡(jiǎn)單,Ubuntu 14.04中的安裝命令如下:

接下來(lái)修改nginx服務(wù)器配置,使其支持PHP:

在/usr/share/nginx/html目錄下新建index.php,重啟php5-fpm和nginx進(jìn)行測(cè)試:

打開(kāi)本地瀏覽器,輸入地址localhost:8080即可看到對(duì)應(yīng)PHP頁(yè)面,如圖 8所示,此時(shí)PHP+NGINX環(huán)境搭建已完成。

圖8 PHP+NGINX測(cè)試結(jié)果

2、微信SDK安裝及修改

將下載好的微信支付PHP版本的SDK進(jìn)行解壓,并將相關(guān)文件拷貝到nginx服務(wù)器根目錄(默認(rèn)為/usr/share/nginx/html,可通過(guò)修改/etc/nginx/sitesavailable/default的root參數(shù)進(jìn)行指定,這里我們使用默認(rèn)參數(shù)):

本地瀏覽器中輸入地址服務(wù)器地址,可以看到微信SDK已經(jīng)運(yùn)行起來(lái)了,如圖 9所示:

圖9 微信SDK頁(yè)面

接下來(lái)我們需要對(duì)SDK進(jìn)行修改,主要是替換商戶信息,SSL服務(wù)端驗(yàn)證禁用,支付接口實(shí)現(xiàn),查詢接口實(shí)現(xiàn)等。

  • 替換商戶信息

要使用微信支付,必須先開(kāi)通公眾號(hào)或企業(yè)號(hào)微信支付的相關(guān)功能,這里不對(duì)如何開(kāi)通做過(guò)多說(shuō)明,在開(kāi)通微信支付后,微信會(huì)提供商戶信息,如商戶號(hào)、支付秘鑰等。我們需要替換/lib/WxPay.Config.php文件的商戶信息(SDK中的文件,已經(jīng)被我們拷貝到nginx服務(wù)器根目錄),修改的位置如下:

  • SSL服務(wù)端驗(yàn)證禁用

下載的SDK包為V3版本,在低版本的SSL庫(kù)上運(yùn)行會(huì)出現(xiàn)錯(cuò)誤,我們直接禁用SSL服務(wù)端驗(yàn)證功能,修改/lib/WxPay.Api.php文件,將postXmlCurl函數(shù)中的SSL服務(wù)端驗(yàn)證功能禁用,修改如下:

  • 支付接口實(shí)現(xiàn)

掃碼支付接口位于/example/native.php文件中,原生SDK包中有示例代碼,我們對(duì)其進(jìn)行修改,實(shí)現(xiàn)的執(zhí)行流程為獲取輸入金額→請(qǐng)求微信支付鏈接→下發(fā)鏈接地址及訂單號(hào),這里我們使用了分隔符簡(jiǎn)單進(jìn)行數(shù)據(jù)的封裝,實(shí)際應(yīng)用中可以加入JSON或XML格式的響應(yīng)報(bào)文。修改后的代碼如下:

  • 查詢接口實(shí)現(xiàn)

訂單查詢接口位于/example/orderquery.php文件中,我們對(duì)其進(jìn)行修改,當(dāng)客戶端POST訂單號(hào)到該接口后,將進(jìn)行相應(yīng)訂單號(hào)的支付狀態(tài)查詢,然后返回支付狀態(tài)。修改后代碼如下:

以上四步完成了微信SDK的安裝和修改,同時(shí)實(shí)現(xiàn)了支付接口以及查詢接口,至此,服務(wù)器部署已完成。

五、客戶端實(shí)現(xiàn)

客戶端使用Qt框架編寫(xiě),其中需要處理的幾個(gè)關(guān)鍵點(diǎn)有二維碼圖片生成、網(wǎng)絡(luò)通信及數(shù)據(jù)解析,下面介紹各個(gè)部分實(shí)現(xiàn)的重點(diǎn)。

1、二維碼圖片生成

我們使用了開(kāi)源的QRencode進(jìn)行二維碼圖片的生成,可以將QRencode的源碼集成進(jìn)Qt工程中調(diào)用,也可以使用編譯好的QRencode可執(zhí)行文件進(jìn)行調(diào)用。

這里我們直接編譯QRencode源碼,編譯依賴(lài)zlib以及l(fā)ibpng庫(kù),為了編譯方便,源碼包中提供了一個(gè)自動(dòng)化編譯腳本,編譯過(guò)程如下:

編譯完成后,可以得到qrencode二維碼生成工具,其大致用法如下:

在Qt中調(diào)用該工具顯示二維碼的代碼如下:

2、網(wǎng)絡(luò)通信及數(shù)據(jù)解析

我們使用了Qt的QNetworkRequest模塊進(jìn)行網(wǎng)絡(luò)通信,將相關(guān)功能封裝成Post函數(shù)供調(diào)用,與服務(wù)器交互及數(shù)據(jù)解析的代碼如下:

這里說(shuō)明下硬件連接方式,首先服務(wù)器為Ubuntu主機(jī),工控機(jī)通過(guò)網(wǎng)線將百兆網(wǎng)口與服務(wù)器直連,形成一個(gè)局域網(wǎng)。而本項(xiàng)目中服務(wù)器局域網(wǎng)地址為192.168.1.164,所以在源碼中直接指定了服務(wù)器地址,當(dāng)使用無(wú)線上網(wǎng)時(shí)可以修改服務(wù)器地址為遠(yuǎn)程服務(wù)器的公網(wǎng)IP地址重大消息:DCP-3000L工控機(jī)自帶4G無(wú)線上網(wǎng)功能,同時(shí)具備全網(wǎng)通撥號(hào)守護(hù)腳本,支持?jǐn)嗑€重?fù)?,流量異?a target="_blank">檢測(cè),三網(wǎng)自動(dòng)識(shí)別。

客戶端剩下的就是界面的邏輯處理啦,在第一小節(jié)部分我們已經(jīng)看到了演示的效果,就不在詳細(xì)介紹了。項(xiàng)目中支付完成后是顯示支付完成并等待下一次支付,而在實(shí)際應(yīng)用中往往是進(jìn)行硬件操作,如打開(kāi)繼電器開(kāi)關(guān),播放音樂(lè)等等。至此,微信掃碼支付已介紹完畢,源碼往下拉。

六、說(shuō)好的源碼

源碼github地址:

https://github.com/kp339/qt-wxpay.git

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 嵌入式系統(tǒng)
    +關(guān)注

    關(guān)注

    41

    文章

    3552

    瀏覽量

    129111
  • 微信
    +關(guān)注

    關(guān)注

    6

    文章

    509

    瀏覽量

    26483
  • 掃碼器
    +關(guān)注

    關(guān)注

    0

    文章

    78

    瀏覽量

    5785

原文標(biāo)題:【工程師必讀】如何實(shí)現(xiàn)微信掃碼支付?

文章出處:【微信號(hào):ZLG_zhiyuan,微信公眾號(hào):ZLG致遠(yuǎn)電子】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    支付發(fā)布了搭載器、雙面屏版“青蛙Pro”

    8月26日,支付在重慶智博會(huì)上正式發(fā)布了搭載器、雙面屏的智能商業(yè)硬件“青蛙Pro”。
    的頭像 發(fā)表于 08-29 14:13 ?3578次閱讀

    工控機(jī)的作用與特點(diǎn)

    就是工業(yè)控制計(jì)算機(jī),工控機(jī)是一種采用總線結(jié)構(gòu)對(duì)生產(chǎn)過(guò)程及機(jī)電設(shè)備、工藝裝備進(jìn)行檢測(cè)與控制的工具總稱(chēng)。那么到底工控機(jī)是什么樣的呢?本文就給大家介紹下工控機(jī)的作用是什么,以及工控機(jī)的特點(diǎn)有
    發(fā)表于 05-13 16:17 ?1.4w次閱讀

    工控機(jī)的來(lái)電自啟如何設(shè)置

    工控機(jī)在出廠前未設(shè)置來(lái)電自啟,在使用中要實(shí)現(xiàn)來(lái)電自啟,只需對(duì)工控機(jī)BIOS進(jìn)行設(shè)置即可。
    發(fā)表于 06-03 10:49 ?2.6w次閱讀

    工控機(jī)的維護(hù)保養(yǎng)

    工控機(jī)是一種能夠適應(yīng)復(fù)雜工作環(huán)境的工業(yè)計(jì)算機(jī),工控機(jī)的機(jī)箱、主板等都是為了能適應(yīng)長(zhǎng)時(shí)間不間斷工作而設(shè)計(jì)的。為了更好地使用工控機(jī),使工控機(jī)保持良好的工作性能,在日常使用中必須對(duì)
    發(fā)表于 06-14 10:23 ?2649次閱讀

    工控機(jī)如何實(shí)現(xiàn)多屏顯示

    本期上海研強(qiáng)給大家分享的是工控機(jī)如何實(shí)現(xiàn)多屏顯示,希望看完本篇文章您能對(duì)工控機(jī)有一個(gè)全新的認(rèn)識(shí)!
    發(fā)表于 07-09 16:55 ?5629次閱讀

    工控機(jī)在卷煙條碼標(biāo)簽讀器系統(tǒng)中的應(yīng)用淺析

    本期上海研強(qiáng)小編給大家分享的是工控機(jī)在卷煙條碼標(biāo)簽讀器系統(tǒng)中的應(yīng)用?,希望看完本篇文章您能對(duì)工控機(jī)有一個(gè)全新的認(rèn)識(shí)! 讀器系統(tǒng)的應(yīng)用,隨著現(xiàn)在各行各業(yè)快速分揀的需求,被廣泛應(yīng)用。今
    發(fā)表于 07-28 17:16 ?873次閱讀

    工控機(jī)的技術(shù)要求 工控機(jī)的系統(tǒng)有哪些

     工控機(jī)是為工業(yè)控制領(lǐng)域而設(shè)計(jì)的計(jì)算機(jī),相比于普通個(gè)人電腦,需要具備更高的穩(wěn)定性、可靠性和抗干擾能力。以下是工控機(jī)的主要技術(shù)要求:   處理器:工控機(jī)需要具備高性能的處理器,能夠處理復(fù)雜的控制任務(wù)和數(shù)據(jù)處理。   存
    發(fā)表于 03-15 14:39 ?2483次閱讀

    工控機(jī)的用途介紹

    主要用途和介紹: 1.工業(yè)自動(dòng)化:工控機(jī)可以用于各種工業(yè)自動(dòng)化控制系統(tǒng),如自動(dòng)化生產(chǎn)線、機(jī)器人控制等。通過(guò)連接各種傳感器和執(zhí)行器,工控機(jī)可以實(shí)現(xiàn)對(duì)工業(yè)設(shè)備的智能化控制和優(yōu)化。 2.數(shù)據(jù)采集和處理:
    發(fā)表于 04-14 11:09 ?1364次閱讀

    解析嵌入式工控機(jī)與傳統(tǒng)工控機(jī)的區(qū)別

    嵌入式工控機(jī)工控機(jī)的應(yīng)用中日趨成熟,開(kāi)始在一些領(lǐng)域取代傳統(tǒng)工控機(jī)。而隨著嵌入式技術(shù)的發(fā)展,嵌入式工控機(jī)的應(yīng)用也越來(lái)越廣泛,成為工控機(jī)發(fā)展趨
    的頭像 發(fā)表于 08-17 09:26 ?1066次閱讀
    解析嵌入式<b class='flag-5'>工控機(jī)</b>與傳統(tǒng)<b class='flag-5'>工控機(jī)</b>的區(qū)別

    工控機(jī)藍(lán)屏原因及解決方法

    很多客戶在使用工控機(jī)的時(shí)候會(huì)遇到工控機(jī)藍(lán)屏的故障,其實(shí)造成工控機(jī)藍(lán)屏的原因有很多,在此扼要分析一下工控機(jī)藍(lán)屏的主要因素以及解決方法。希望這些方法在大家遇到
    的頭像 發(fā)表于 09-13 08:09 ?1798次閱讀
    <b class='flag-5'>工控機(jī)</b>藍(lán)屏原因及解決方法

    什么是上架式工控機(jī)?研華上架式工控機(jī)有哪些?

    工控機(jī)按放置方式可以分為上架式工控機(jī)、嵌入式工控機(jī)、壁掛式工控機(jī)、桌面式工控機(jī)等。選擇哪種放置方式的工控
    的頭像 發(fā)表于 09-20 10:14 ?1060次閱讀
    什么是上架式<b class='flag-5'>工控機(jī)</b>?研華上架式<b class='flag-5'>工控機(jī)</b>有哪些?

    工控機(jī)的技術(shù)要求 工控機(jī)的系統(tǒng)有哪些

    工控機(jī)的技術(shù)要求工控機(jī)是為工業(yè)控制領(lǐng)域而設(shè)計(jì)的計(jì)算機(jī),相比于普通個(gè)人電腦,需要具備更高的穩(wěn)定性、可靠性和抗干擾能力。以下是工控機(jī)的主要技術(shù)要求:處理器:工控機(jī)需要具備高性能的處理器,能
    的頭像 發(fā)表于 11-11 08:07 ?1296次閱讀
    <b class='flag-5'>工控機(jī)</b>的技術(shù)要求 <b class='flag-5'>工控機(jī)</b>的系統(tǒng)有哪些

    工控機(jī)的用途與介紹-研華工控機(jī)

    工控機(jī)(Industrial Personal Computer—IPC)是專(zhuān)為工業(yè)環(huán)境設(shè)計(jì)的計(jì)算機(jī),其核心目的是對(duì)工業(yè)生產(chǎn)中的機(jī)器設(shè)備、流程和數(shù)據(jù)參數(shù)進(jìn)行監(jiān)測(cè)與控制。工控機(jī)在硬件配置上與普通
    的頭像 發(fā)表于 03-21 11:02 ?1146次閱讀
    <b class='flag-5'>工控機(jī)</b>的用途與介紹-研華<b class='flag-5'>工控機(jī)</b>

    聚徽觸控-嵌入式工控機(jī)與傳統(tǒng)工控機(jī)有什么不同

    嵌入式工控機(jī)得到了飛速的發(fā)展,其應(yīng)用領(lǐng)域也愈發(fā)廣泛。在某些行業(yè)和場(chǎng)景中,傳統(tǒng)的工控機(jī)已經(jīng)被新型的嵌入式工控機(jī)所替代。如今,嵌入式工控機(jī)的應(yīng)用數(shù)量已遠(yuǎn)超過(guò)各種傳統(tǒng)
    的頭像 發(fā)表于 07-24 09:31 ?336次閱讀

    工控機(jī)怎么編程?工控機(jī)是如何控制設(shè)備的?

    工控機(jī)是工業(yè)控制的核心設(shè)備,在不斷智能化的今天,工控機(jī)發(fā)揮了重要作用。為增進(jìn)大家對(duì)工控機(jī)的認(rèn)識(shí),本文將對(duì)工控機(jī)和電腦的區(qū)別、工控機(jī)控制設(shè)備的
    的頭像 發(fā)表于 10-31 12:41 ?141次閱讀