当前位置:首页 > > 充电吧
[导读]应广大Qt好友的要求,记录下我自己开发的qt for android中如何集成微信,在自己搞这个的时候,还是转了不少弯头,其实最简单的方法就是看官方文档,但是要有java基础才行,我当初是研究的别人j

应广大Qt好友的要求,记录下我自己开发的qt for android中如何集成微信,在自己搞这个的时候,还是转了不少弯头,其实最简单的方法就是看官方文档,但是要有java基础才行,我当初是研究的别人java的原生支付demo,所以版本有点老,但是不影响正常支付。好了,进入正题,使用qt来进行微信支付,其实就是要用java原生的实现,只不过qt相当于一个外用调用者,只管调用支付集成的方法就可以了,具体实现还是要用java来写,这个可以看下别人安卓的文档,了解搭建环境之类的问题,这里我就不累赘了,可以看下我的另外一篇博客转载于别人的,内附demo,安卓集成微信支付:点击打开链接, 不想看的可以看我下面的内容:

如果你已经成功集成了微信登录和分享,那么此文将助你快速集成微信支付,此文基于微信支付SDK3.1.1,也就是目前为止最新的SDK
1)微信官方的集成文档

2)微信官方资源下载


  

不过我相信,即便你看了微信的官方文档,你依然不知道微信支付怎么集成,因为微信支付的官方文档简直太.....

如果你已经准备好了资源包,接下来正式开始集成

我们需要的资源其实有以下几样,在开始前,就这些转备好吧
1)微信支付的APPID
2)微信支付依赖包 >>> libammsdk.jar
3)一个Activity类 >>> WXPayEntryActivity.java

这里需要特别说明一下,这个Activity类,直接从上下载到的范例代码中copy到自己的工程中即可,这个页面是在你调起微信支付完成支付(或取消或失败)后,再回到你的App时会调用的一个页面。页面的布局可以是你自定义的布局,直接放图讲解:

先说一下这个类的路径,网上也有一大堆介绍了,我直接放图,路径一定,而且必须是这样的:


在这个类中需要注意的地方有两个:

1、这个类中的布局是可以自定义的,如果你不需要展示什么布局,而是要跳转页面,把这段代码删除即可


2、回调结果的处理,下面是官方的处理方式,直接给了一个dialog,很多人会摸不着头脑,如果你不需要这个dialog,直接删除就好了,不需要把官方demo中的布局和资源都复制过来


  下面是我自定义的处理方式,比较简单,就是土司显示了一下支付结果,如果你需要支付成功后跳转,那么直接在这里startActivity即可,别忘记最后要将这个页面finish()


 

这个类中的其余的回调方法,我们都不需要去操作

然后我们就可以开始支付了,支付很简单,真的很简单


这是微信支付需要我们携带的参数,对于新人来说,可能比较困惑的是我怎么生成这些参数呢?其实这些参数都是服务器返回给我们的,APPID我们可以自己保存在本地一份,其余的都是服务器返回给我们的,大概介绍一下流程:



最后,服务器返回给我们微信支付的参数后,我们就可以愉快的支付了,这里是关键一步,注意!!

至此我们已经可以调起微信支付页面来支付了

最后还有一个需要注意的是,很多人被这一步坑了,就是关于微信开放平台签名的问题。其实只要你手机上的程序的签名和你在微信平台登记的签名一致即可,无论是debug版本,还是release版本


把上面的看懂后,基本上是没有其它问题的,下面将重点是介绍Qt如何发挥它的用武之地,要用到Qt调用java集成的接口,就要学会Qt写Jni代码 ,这里写下我接口方法实现:


因为我这边实现的微信支付签名是自己本地客户端实现的,所以必须要自己传送一个货币,也就是money过去,这个money一定要在后面*100,微信官方是100等于一分钱。其中图中的重点就是我红框圈起来的就是需要调用的方法,而wXPayPort就是Qt这边调用了,调用的时候带上一个货币即可,下面来看看我的wXPayPort的java实现,这个是需要自己用java原生来写的,


     首先并不是直接调用startPay()方法的,而是先调用wXPayPort,然后开启一个线程来启动微信支付程序,因为写了很久,当时也未来的及记录,所以为什么要开启一个线程来调用,具体好像是Qt所在的进程来拉起java微信支付进程会导致崩溃,所以需要开启一个java线程来拉起java本身的所构建出来的微信支付进程,当调用这一步后,就是生成签名的时候了,其实生成签名应该由服务器来做,这里就不累赘了,具体调用后的执行可以查看PayActivity.java这个类文件(都是官方Demo文件),下面列一下客户端生成签名需要注意的地方:


 1、notify_url必须是要服务器那边知道的支付地址,我这边是测试地址,

2、montyValue必须是一个string,不能是int,否则会报错,还有程序调用不能为0.01,必须要乘以100。

3、sing就是签名,所以一般签名这堆配置其实不应该由客户端做,只需要服务器传送给你sign签名即可,有了sign签名就可以进行支付了。

后续将会贴出一个专门用于Qt支付的demo出来,如有更好建议,还望多多评论

完整demo:Qt微信支付Demo

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

LED驱动电源的输入包括高压工频交流(即市电)、低压直流、高压直流、低压高频交流(如电子变压器的输出)等。

关键字: 驱动电源

在工业自动化蓬勃发展的当下,工业电机作为核心动力设备,其驱动电源的性能直接关系到整个系统的稳定性和可靠性。其中,反电动势抑制与过流保护是驱动电源设计中至关重要的两个环节,集成化方案的设计成为提升电机驱动性能的关键。

关键字: 工业电机 驱动电源

LED 驱动电源作为 LED 照明系统的 “心脏”,其稳定性直接决定了整个照明设备的使用寿命。然而,在实际应用中,LED 驱动电源易损坏的问题却十分常见,不仅增加了维护成本,还影响了用户体验。要解决这一问题,需从设计、生...

关键字: 驱动电源 照明系统 散热

根据LED驱动电源的公式,电感内电流波动大小和电感值成反比,输出纹波和输出电容值成反比。所以加大电感值和输出电容值可以减小纹波。

关键字: LED 设计 驱动电源

电动汽车(EV)作为新能源汽车的重要代表,正逐渐成为全球汽车产业的重要发展方向。电动汽车的核心技术之一是电机驱动控制系统,而绝缘栅双极型晶体管(IGBT)作为电机驱动系统中的关键元件,其性能直接影响到电动汽车的动力性能和...

关键字: 电动汽车 新能源 驱动电源

在现代城市建设中,街道及停车场照明作为基础设施的重要组成部分,其质量和效率直接关系到城市的公共安全、居民生活质量和能源利用效率。随着科技的进步,高亮度白光发光二极管(LED)因其独特的优势逐渐取代传统光源,成为大功率区域...

关键字: 发光二极管 驱动电源 LED

LED通用照明设计工程师会遇到许多挑战,如功率密度、功率因数校正(PFC)、空间受限和可靠性等。

关键字: LED 驱动电源 功率因数校正

在LED照明技术日益普及的今天,LED驱动电源的电磁干扰(EMI)问题成为了一个不可忽视的挑战。电磁干扰不仅会影响LED灯具的正常工作,还可能对周围电子设备造成不利影响,甚至引发系统故障。因此,采取有效的硬件措施来解决L...

关键字: LED照明技术 电磁干扰 驱动电源

开关电源具有效率高的特性,而且开关电源的变压器体积比串联稳压型电源的要小得多,电源电路比较整洁,整机重量也有所下降,所以,现在的LED驱动电源

关键字: LED 驱动电源 开关电源

LED驱动电源是把电源供应转换为特定的电压电流以驱动LED发光的电压转换器,通常情况下:LED驱动电源的输入包括高压工频交流(即市电)、低压直流、高压直流、低压高频交流(如电子变压器的输出)等。

关键字: LED 隧道灯 驱动电源
关闭