微信支付(转载二)

简介: 微信支付现在主要集成在:1、移动应用开发  2、网站应用开发  3、公众账号开发        本篇主要针对移动应用App集成微信支付,实际项目坑点分享! 一、既予之、与共之:平台资源   1、微信开放平台:https://open.

 微信支付现在主要集成在:1、移动应用开发  2、网站应用开发  3、公众账号开发

       本篇主要针对移动应用App集成微信支付,实际项目坑点分享!

一、既予之、与共之:平台资源

 

1、微信开放平台:https://open.weixin.qq.com/

2、微信公众平台:https://mp.weixin.qq.com/

3、微信支付指引和资源中心:微信支付接入指南和资源下载中心<强力推荐阅读>

https://open.weixin.qq.com/cgi-bin/frame?t=resource/res_main_tmpl&lang=zh_CN

4、微信公众平台支付接口调试工具沙箱地址:可通过沙箱测试验证签名的有效性

http://mp.weixin.qq.com/debug/cgi-bin/readtmpl?t=pay/index

5、公众平台开发者问答系统:在开发过程中有遇到什么问题,都可以上该平台上找找是否有你需要的答案和解决方案。

http://mp.weixin.qq.com/qa/index.php?qa=questions

6、推荐两个蛮给力的博主:

      柳峰:http://blog.csdn.net/lyq8479  

<我接触微信公众平台,第一个公众号的开发都是看他的博客进行学习的,小吕强力推荐>   开发语言:JAVA

      方倍工作室:http://www.cnblogs.com/txw1958/    开发语言:PHP

7、小吕在开发微信支付过程中收集的资源一篓筐<SDK /支付DEMO / IOS、Android接口文档 V1.7最新版 /SDK API文档 / Android应用包名签名APK工具>:免费下载址:http://download.csdn.net/detail/l416112167/7665807

 

二、本篇将不用代码等来介绍微信支付的整个流程过程,因为

        1、小吕已提供了上面的平台资源链接、基本上只要你静下心稍微阅读第一个链接和第七个下载链接中小吕提供的【微信支付】APP支付(Android)接口文档V1.7.doc

 <小吕阅读过v1.2版、v1.5版、v1.7版 其中阅读完1.7版后 解决了我在前面版本阅读中所有的疑问> 就可以非常清晰的了解整个支付接口调用流程,毕竟为官方文档,小吕也不可能会写的比官方文档还详细。

        2、小吕觉得微信提供的demo程序代码也比较清晰。各位可自行下载查看。

 

        3、下面是APP支付(Android)接口文档V1.7.doc文档中最具有代表性的几张截图展示:

               图1、APP 支付的用户交互:

           图2、更直观详细的交互时序图:

 

           图3、文档书签截图:

                     

 

 

      整个微信支付开发过程给我的小结就是:文档虽详细、坑点却不少<特别是针对Android开发者>。

 

 

三、避开坑点,慷慨大道我走来:

       坑点1:运行官方的demo程序为什么还是没调出支付界面?

正确运行demo调出微信支付界面效果如下:

        

 

那为什么有些同事运行demo程序提示能获取到prepayid成功  但是却始终没有见到如上图的支付UI,就提示微信支付结果:-1 呢?

PS:这里备注说明一下:微信支付常见有3种支付结果code返回

resp.errCode==  0 :表示支付成功

resp.errCode== -1 :表示支付失败

resp.errCode== -2 :表示取消支付

原因:运行时没有使用、配置demo程序sdk demo工程目录中的debug.keystore文件

运行sdk  demo工程正确步骤:

1、解压sdk demo工程压缩包,并导入到workspace,如下图:

      

 

2、选择Eclipse顶部菜单Window->Preferences,在弹出的对话框中,选择Android目录下的Build,如下图:

          

 

指定Custom debugkeystore选项的路径为sdk demo工程目录中的debug.keystore文件,如下图:

并应用该配置。

 

3、运行该sdk_sample工程。

 

 

         坑点2:项目中(非sdk demo程序)调用微信支付接口wxApi.sendReq(mPayRed)不起作用,还是调不出支付界面

问题产生原因分析:

1、首先需要确保商户在微信开放平台上的申请审核流程是否已完成。必须要在所有流程审核通过后才能进行开发调式。即用户能拿到appid/appsecret/appkey/partnerkey。

2、Android应用需要在开放平台绑定应用包名和应用签名后才能正常使用。填写不正确将无法正常调起支付。

     <IOS应用不需要这一过程>

    签名工具下载地址:

https://open.weixin.qq.com/zh_CN/htmledition/res/dev/download/sdk/Gen_Signature_Android.apk

注意:比如我们的客户商户是用的自己的生产环境.keystore签名文件对apk进行的签名,然后使用微信提供的包名签名工具生成的应用签名字符串与应用包名绑定后,那么Android开发者在调试应用时也须要使用客户商户的.keystone文件对apk进行签名后才能调试程序,不然无法调起支付。<这点非常重要,小吕就被坑在这里>

可以使用Gen_Signature_Android.apk 校验应用签名字符串是否和商户填写的一致 如下图:

3、校验订单详情package的扩展字符串定义、app_signature的生成规则、添加prepayid再次签名这三个过程是否都正确,可通过沙箱测试验证签名的有效性, 沙箱地址:

http://mp.weixin.qq.com/debug/cgi-bin/readtmpl?t=pay/index

4、签名过程不可更改参数名称<一个非常低级的错误,但也是要注意的一个点>:

这里小吕就有遇到这样一个乌龙,算是自己挖了坑给自己跳了

在添加prepayid再次签名的过程中:如下图

 

因为签名后返回给APP的json字符串中有一个参数名为package,通常在手机端我们会将json字符串解析成java bean对象,但是package在java中是一个关键字,所以小吕想啊、在返回的json字符串中把package换个名字叫做packageValue吧,这样就方便我直接把json解析成java对象了。就这样问题就来啦,因为在签名生成sign的过程中原本叫做package的参数变成了packageValue,因此签名生成的sign值自然就是错误的,最终导致支付调不起。

 

 

         坑点3:支付成功后无法跳转到相应的通知Activity界面。

原文地址:http://blog.csdn.net/janice0529/article/details/38051987

相关文章
|
数据库
分布式集群时钟同步问题及解决方案
分布式集群时钟同步问题及解决方案
720 1
|
消息中间件 数据采集 运维
Kafka监控数据采集
上篇文章讲解了运维平台的整体设计,对各个部分并未深入介绍,今天将比较重要的一环——监控数据来源进行讲解。
685 0
|
移动开发 小程序
uniapp自定义tabbar,中间凸起(支持H5、微信小程序)
uniapp自定义tabbar,中间凸起(支持H5、微信小程序)
uniapp自定义tabbar,中间凸起(支持H5、微信小程序)
|
存储 弹性计算 运维
【内含干货PPT下载】DTCC 2020 | 阿里云王涛:阿里巴巴电商数据库上云实践
第十一届中国数据库技术大会(DTCC2020),在北京隆重召开。大会以“架构革新 高效可控”为主题,重点围绕数据架构、AI与大数据、传统企业数据库实践和国产开源数据库等内容展开分享和探讨。在数据库智能运维专场上,邀请了阿里云数据库高级技术专家王涛为大家介绍阿里巴巴电商数据库上云的选择、思考与实践。阿里巴巴电商数据库原先是在自己独立的IDC维护的,伴随着阿里巴巴上云项目,数据库轻松实现上云。阿里云云原生管控以及云原生数据库技术可以帮助业务实现平滑上云目标,进而实现资源最大化成本最优化的目标。阿里巴巴希望利用阿里云的技术体系,帮助客户大规模上云,打造自己的运维管控平台。
3195 0
【内含干货PPT下载】DTCC 2020 | 阿里云王涛:阿里巴巴电商数据库上云实践
|
5月前
|
运维 监控 安全
【案例分享】中国通号卡斯柯公司:ZABBIX如何破解轨道交通监控难题
本文根据2023上海峰会上朱林贤的演讲整理,聚焦中国通号卡斯柯公司如何借助Zabbix实现轨道交通信号系统的智能化管理。作为中外合资企业,卡斯柯通过统一平台整合设备监控,大幅降低成本并提升灵活性,成功应用于国内外项目。文章探讨了传统监控系统的痛点、研发维护经验及国产化与开源技术挑战,为行业转型提供了宝贵启示。未来,开放协作将是推动轨道交通智能化发展的关键。
203 0
|
5月前
|
人工智能 前端开发 Java
2025 开发必备:精选免费 AI 辅助工具,效率狂飙不停
2025年,AI技术深度融入编程领域,诞生了多款免费且功能强大的辅助工具。通义灵码精通200多种语言,可快速生成代码框架,提升开发效率超10%,还为新手提供学习指导。Google Gemini Code Assist每月完成18万次代码补全,支持智能交互与代码审查,优化团队协作。飞算JavaAI专注Java全流程开发,从需求分析到代码生成实现十倍提效。这些工具大幅降低编程门槛,助力开发者高效高质完成任务。
|
前端开发 JavaScript API
使用 JavaScript 实现图片上传
使用 JavaScript 实现图片上传
282 1
|
11月前
|
Rust 前端开发 JavaScript
Tauri 开发实践— Tauri 怎么样
Tauri 是一个用于构建高效、小型二进制文件的框架,适用于所有主流桌面及移动平台。开发人员可以利用任何可编译为 HTML、JavaScript 和 CSS 的前端框架构建应用,并借助 Rust、Swift 或 Kotlin 进行后端开发。Tauri 采用三层架构,包括 tauri-app、WRY(跨平台 Webview 库)和 TAO(跨平台窗口管理器)。相较于 Electron,Tauri 使用系统内置浏览器引擎执行 Web APP,具有更小的资源占用和更高性能。详情见:[Tauri 官网](https://tauri.app/)。
879 0
Tauri 开发实践— Tauri 怎么样
|
Python
NumPy 数学函数库详解
【8月更文第30天】NumPy(Numerical Python)是 Python 中用于科学计算的核心库之一,它提供了大量的高性能数学函数,并且是其他许多科学计算库的基础。本文将详细介绍 NumPy 中的数学函数,包括统计函数、线性代数函数以及傅里叶变换等功能。
263 0
|
缓存 安全 Java
Java反射常见面试题最新总结
Java反射常见面试题总结
426 0

热门文章

最新文章