0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

如何利用Linux工控机实现微信扫码?

AGk5_ZLG_zhiyua 来源:未知 作者:佚名 2017-09-14 14:06 次阅读

移动支付的普及越来越广,像地铁站的无人售货机,小区的快递柜,停车场的充电桩等,这些设备大部分集成了扫码支付功能。今天,我们就以项目的形式介绍如何为Linux工控机接入微信扫码支付。

一、硬件环境

  • Linux工控机:致远电子DCP-3000L工控机,配套7寸LVDS液晶屏,分辨率800x480;

  • 服务器:64位Ubuntu主机,具备上网功能;

  • 手机客户端:微信客户端,具备扫一扫识别二维码功能。

整体硬件连接框架如图 1所示:

图1 硬件连接图

二、演示效果

先看看最终的效果,客户端使用Qt框架编写,其启动界面如图 2所示:

图2 演示Demo主界面

点击小键盘,输入支付金额,点击确定后客户端将与服务器进行通信,拿到支付链接,本地生成支付二维码,如图 3所示:

图3 生成支付二维码

接下来打开手机微信客户端,使用扫一扫进行扫码,根据支付页面提示输入支付密码,支付结果如图 4所示:

图4 支付结果

完成支付后,演示客户端界面上将显示支付成功字样,如图 5所示:

图5 显示支付结果

扫码接入为何如何容易?服务器客户应该怎么处理?PHP是不是世界上最好的语言?说好的源码究竟在哪里?敬请关注本文以下章节。

三、系统流程

整个项目采用CS架构,分为嵌入式Linux客户端、后台服务器以及手机客户端三部分,系统流程如图 6所示:

图6 系统流程图

从系统流程图中可以看到,我们需要编写客户端和服务器端的代码,客户端我们使用的是QT框架,服务器端我们直接使用微信官方的支付SDK包。在客户端与服务器的交互过程中,最主要的是拿到微信支付的链接地址以及订单号,链接地址为了生成二维码图片,订单号为了查询支付状态。

四、服务器端实现

从微信官方下载SDK(文末有链接),有JAVA、.NET C#、PHP三种类型的SDK提供,如图 7所示:

图7 微信SDK

这里我们选择PHP版本进行下载,服务器端环境为Ubuntu14.04系统,采用nginx进行搭建,端口号8080。(必答题:PHP是世界上___的语言

1、PHP+NGINX环境搭建

我们在Ubuntu主机上进行nginx服务器的搭建,具体步骤为安装-配置-启动。

安装nginx服务器:

配置nginx服务器,为了不与其它服务器监听端口号冲突,我们直接修改nginx服务器的配置,将默认的80端口修改为8080,修改过程如下:

启动nginx服务器:

由于我们使用的是微信官方SDK的PHP版本,所以我们需要为系统装上PHP环境,同时需要修改nginx服务器的配置,使其支持PHP。

安装PHP环境比较简单,Ubuntu 14.04中的安装命令如下:

接下来修改nginx服务器配置,使其支持PHP:

在/usr/share/nginx/html目录下新建index.php,重启php5-fpm和nginx进行测试:

打开本地浏览器,输入地址localhost:8080即可看到对应PHP页面,如图 8所示,此时PHP+NGINX环境搭建已完成。

图8 PHP+NGINX测试结果

2、微信SDK安装及修改

将下载好的微信支付PHP版本的SDK进行解压,并将相关文件拷贝到nginx服务器根目录(默认为/usr/share/nginx/html,可通过修改/etc/nginx/sitesavailable/default的root参数进行指定,这里我们使用默认参数):

本地浏览器中输入地址服务器地址,可以看到微信SDK已经运行起来了,如图 9所示:

图9 微信SDK页面

接下来我们需要对SDK进行修改,主要是替换商户信息,SSL服务端验证禁用,支付接口实现,查询接口实现等。

  • 替换商户信息

要使用微信支付,必须先开通公众号或企业号微信支付的相关功能,这里不对如何开通做过多说明,在开通微信支付后,微信会提供商户信息,如商户号、支付秘钥等。我们需要替换/lib/WxPay.Config.php文件的商户信息(SDK中的文件,已经被我们拷贝到nginx服务器根目录),修改的位置如下:

  • SSL服务端验证禁用

下载的SDK包为V3版本,在低版本的SSL库上运行会出现错误,我们直接禁用SSL服务端验证功能,修改/lib/WxPay.Api.php文件,将postXmlCurl函数中的SSL服务端验证功能禁用,修改如下:

  • 支付接口实现

扫码支付接口位于/example/native.php文件中,原生SDK包中有示例代码,我们对其进行修改,实现的执行流程为获取输入金额→请求微信支付链接→下发链接地址及订单号,这里我们使用了分隔符简单进行数据的封装,实际应用中可以加入JSON或XML格式的响应报文。修改后的代码如下:

  • 查询接口实现

订单查询接口位于/example/orderquery.php文件中,我们对其进行修改,当客户端POST订单号到该接口后,将进行相应订单号的支付状态查询,然后返回支付状态。修改后代码如下:

以上四步完成了微信SDK的安装和修改,同时实现了支付接口以及查询接口,至此,服务器部署已完成。

五、客户端实现

客户端使用Qt框架编写,其中需要处理的几个关键点有二维码图片生成、网络通信及数据解析,下面介绍各个部分实现的重点。

1、二维码图片生成

我们使用了开源的QRencode进行二维码图片的生成,可以将QRencode的源码集成进Qt工程中调用,也可以使用编译好的QRencode可执行文件进行调用。

这里我们直接编译QRencode源码,编译依赖zlib以及libpng库,为了编译方便,源码包中提供了一个自动化编译脚本,编译过程如下:

编译完成后,可以得到qrencode二维码生成工具,其大致用法如下:

在Qt中调用该工具显示二维码的代码如下:

2、网络通信及数据解析

我们使用了Qt的QNetworkRequest模块进行网络通信,将相关功能封装成Post函数供调用,与服务器交互及数据解析的代码如下:

这里说明下硬件连接方式,首先服务器为Ubuntu主机,工控机通过网线将百兆网口与服务器直连,形成一个局域网。而本项目中服务器局域网地址为192.168.1.164,所以在源码中直接指定了服务器地址,当使用无线上网时可以修改服务器地址为远程服务器的公网IP地址重大消息:DCP-3000L工控机自带4G无线上网功能,同时具备全网通拨号守护脚本,支持断线重拨,流量异常检测,三网自动识别。

客户端剩下的就是界面的逻辑处理啦,在第一小节部分我们已经看到了演示的效果,就不在详细介绍了。项目中支付完成后是显示支付完成并等待下一次支付,而在实际应用中往往是进行硬件操作,如打开继电器开关,播放音乐等等。至此,微信扫码支付已介绍完毕,源码往下拉。

六、说好的源码

源码github地址:

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

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 嵌入式系统
    +关注

    关注

    41

    文章

    3593

    浏览量

    129491
  • 微信
    +关注

    关注

    6

    文章

    511

    浏览量

    26578
  • 扫码器
    +关注

    关注

    0

    文章

    94

    浏览量

    5839

原文标题:【工程师必读】如何实现微信扫码支付?

文章出处:【微信号:ZLG_zhiyuan,微信公众号:ZLG致远电子】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    解析嵌入式工控机与传统工控机之间的不同

    近年来嵌入式工控机迅速成熟,应用范围越来越广泛,在一定程度上,在某些领域,传统的工控机已经被新型的嵌入式控所替代。当前,嵌入式工控机在应用数量上远远超过了各种传统
    发表于 11-26 10:01 2869次阅读

    支付发布了搭载器、双面屏版“青蛙Pro”

    8月26日,支付在重庆智博会上正式发布了搭载器、双面屏的智能商业硬件“青蛙Pro”。
    的头像 发表于 08-29 14:13 3617次阅读

    工控机的维护保养

    工控机是一种能够适应复杂工作环境的工业计算机,工控机的机箱、主板等都是为了能适应长时间不间断工作而设计的。为了更好地使用工控机,使工控机保持良好的工作性能,在日常使用中必须对
    发表于 06-14 10:23 2719次阅读

    工控机如何实现多屏显示

    本期上海研强给大家分享的是工控机如何实现多屏显示,希望看完本篇文章您能对工控机有一个全新的认识!
    发表于 07-09 16:55 5719次阅读

    工控机在卷烟条码标签读器系统中的应用浅析

    本期上海研强小编给大家分享的是工控机在卷烟条码标签读器系统中的应用 ,希望看完本篇文章您能对工控机有一个全新的认识! 读器系统的应用,随着现在各行各业快速分拣的需求,被广泛应用。今
    发表于 07-28 17:16 900次阅读

    工控机的技术要求 工控机的系统有哪些

     工控机是为工业控制领域而设计的计算机,相比于普通个人电脑,需要具备更高的稳定性、可靠性和抗干扰能力。以下是工控机的主要技术要求:   处理器:工控机需要具备高性能的处理器,能够处理复杂的控制任务和数据处理。   存
    发表于 03-15 14:39 2581次阅读

    工控机的用途介绍

    主要用途和介绍: 1.工业自动化:工控机可以用于各种工业自动化控制系统,如自动化生产线、机器人控制等。通过连接各种传感器和执行器,工控机可以实现对工业设备的智能化控制和优化。 2.数据采集和处理:
    发表于 04-14 11:09 1443次阅读

    解析嵌入式工控机与传统工控机的区别

    嵌入式工控机工控机的应用中日趋成熟,开始在一些领域取代传统工控机。而随着嵌入式技术的发展,嵌入式工控机的应用也越来越广泛,成为工控机发展趋
    的头像 发表于 08-17 09:26 1145次阅读
    解析嵌入式<b class='flag-5'>工控机</b>与传统<b class='flag-5'>工控机</b>的区别

    工控机蓝屏原因及解决方法

    很多客户在使用工控机的时候会遇到工控机蓝屏的故障,其实造成工控机蓝屏的原因有很多,在此扼要分析一下工控机蓝屏的主要因素以及解决方法。希望这些方法在大家遇到
    的头像 发表于 09-13 08:09 1941次阅读
    <b class='flag-5'>工控机</b>蓝屏原因及解决方法

    什么是上架式工控机?研华上架式工控机有哪些?

    工控机按放置方式可以分为上架式工控机、嵌入式工控机、壁挂式工控机、桌面式工控机等。选择哪种放置方式的工控
    的头像 发表于 09-20 10:14 1126次阅读
    什么是上架式<b class='flag-5'>工控机</b>?研华上架式<b class='flag-5'>工控机</b>有哪些?

    工控机的技术要求 工控机的系统有哪些

    工控机的技术要求工控机是为工业控制领域而设计的计算机,相比于普通个人电脑,需要具备更高的稳定性、可靠性和抗干扰能力。以下是工控机的主要技术要求:处理器:工控机需要具备高性能的处理器,能
    的头像 发表于 11-11 08:07 1407次阅读
    <b class='flag-5'>工控机</b>的技术要求 <b class='flag-5'>工控机</b>的系统有哪些

    工控机的用途与介绍-研华工控机

    工控机(Industrial Personal Computer—IPC)是专为工业环境设计的计算机,其核心目的是对工业生产中的机器设备、流程和数据参数进行监测与控制。工控机在硬件配置上与普通
    的头像 发表于 03-21 11:02 1298次阅读
    <b class='flag-5'>工控机</b>的用途与介绍-研华<b class='flag-5'>工控机</b>

    工控机如何利用U盘装系统

    实际应用中,由于各种原因,工控机系统可能会出现故障或需要更新,此时利用U盘进行系统安装成为了一种高效、便捷的解决方案。本文将详细介绍工控机如何利用U盘装系统的步骤和注意事项。
    的头像 发表于 06-12 11:18 1826次阅读

    工控机怎么编程?工控机是如何控制设备的?

    工控机是工业控制的核心设备,在不断智能化的今天,工控机发挥了重要作用。为增进大家对工控机的认识,本文将对工控机和电脑的区别、工控机控制设备的
    的头像 发表于 10-31 12:41 332次阅读

    手持式的枪连接到工控机上使用,实现产品

    在当今的自动化生产线和仓储管理中,手持式枪已成为不可或缺的工具。它以其高效、准确的特点,为产品的追踪、管理和销售提供了极大的便利。本文将介绍如何将手持式枪连接到
    的头像 发表于 12-04 14:30 211次阅读
    手持式的<b class='flag-5'>扫</b><b class='flag-5'>码</b>枪连接到<b class='flag-5'>工控机</b>上使用,<b class='flag-5'>实现</b>产品<b class='flag-5'>扫</b><b class='flag-5'>码</b>