iOS微信支付流程及实现
来源:互联网 发布:java培训工资 编辑:程序博客网 时间:2024/05/02 00:34
文章出自http://www.iashes.com/2015-07-722.html 在此鸣谢~~
1,首先下载微信的Demo,不用下载静态库等文件,这个demo不仅有静态库等文件,还有人写好的获取随机串,加密加签,获取时间戳等方法。 下载完之后需要导入两个文件夹: 1>,lib 2>,SDKExport 文件夹名可以自己随便改,add到自己的project里边就行了。 SDKExport里边主要是微信的静态库和一些对象,用来分配和请求分享,登陆,支付等。如果原来的项目中有微信的这个skd,就不用再导入的,三个文件:libWeChatSDK.a,WXApi.h,WXApiObject.h。 lib里边主要又一些XML的解析和上传,因为微信支付是给服务器发xml文件的,还有payRequsestHandler.mm文件主要处理加签和随机随机串的生成,IP的生成等。 微信支付时候必须安装客户端,而且需要给微信服务器传递一个当前机器DNS所分配的IP地址。所以要获取当前的IP地址,payRequsestHandler文件里边都有。 下载完之后会发现payRequsestHandler.mm是MRC的,所以需要修改一下,让它的状态在arc中运行。 TARGETS->Build Phases->Compile Sources下边找到payRequsestHandler.mm文件,然后Flags里边修改成-fno-objc-arc (如果里边没有发现这个mm文件,在sources里边add -> Other添加一下) 然后将即便alloc的aoturelease都改成init,ARC不需要自己自动释放。
XMLHelper *xml = [[XMLHelperalloc] init];
PayReq* req = [[PayReqalloc] init];
我这里整理了skd可处理库,下载:http://pan.baidu.com/s/1pJBpz9x
2,然后添加几个系统依赖库:
libc++.dylib
SystemConfiguration.framework
libz.dylib
libsqlite3.0.dylib
完了在工程TARGETS->INFO->URL Types下边添加微信appkey,appke是自己在开放平台申请应用时候微信生成的,每一个应用对应一个appkey,也就是bundle ID。
3,
4,在自己要支付的页面viewcontroller.h文件里边:
点击按钮进行支付:
按钮方法:
//支付已经完成了,主要是好多细节,看看payRequsestHandler类中怎么分配支付配置的,例如商户ID,商户的KEY,等:
.mm文件里边主要是给微信设置的规则进行遵循,例如:
支付成功返回页面在delegate里边进行判断。
切记在微信开发平台申请应用的Bundle ID和自己工程的Bundle ID必须是相同的。
微信支付是双重加签的,返回的结果是:
官网列出了微信的支付流程:
商户系统和微信支付系统主要交互说明:
步骤1:用户在商户APP中选择商品,提交订单,选择微信支付。
步骤2:商户后台收到用户支付单,调用微信支付统一下单接口。参见【统一下单API】。
步骤3:统一下单接口返回正常的prepay_id,再按签名规范重新生成签名后,将数据传输给APP。参与签名的字段名为appId,partnerId,prepayId,nonceStr,timeStamp,package。注意:package的值格式为Sign=WXPay
步骤4:商户APP调起微信支付。api参见本章节【app端开发步骤说明】
步骤5:商户后台接收支付通知。api参见【支付结果通知API】
步骤6:商户后台查询支付结果。,api参见【查询订单API】
- iOS微信支付流程及实现
- 微信支付流程(IOS)
- iOS - 微信支付流程
- iOS 微信支付流程
- iOS: 实现微信支付
- iOS --微信支付基本流程
- iOS之“微信支付”开发流程
- iOS 微信支付 开发流程
- iOS 微信支付开发流程
- iOS 微信支付 开发流程
- 微信支付流程及集成教程
- 微信支付开发流程及注意事项
- 微信支付流程及注意要点
- iOS开发之第三方支付微信支付教程,史上最新最全第三方微信支付方式实现、微信集成教程,微信实现流程
- java微信支付实现流程
- 微信支付客户端实现流程
- PHP实现微信支付(jsapi支付)流程
- ThinkPHP中实现微信支付(jsapi支付)流程
- 使用GDB调试android模拟器
- 关于layoutSubviews那些事
- 【ecshop 资料】ecshop对数据库测试数据进行清除操作。老杨ecshop原创
- centos 利用crontab定时任务设计
- 《兄弟》读后感
- iOS微信支付流程及实现
- Storm-HDFS整合过程中问题解决
- HDU 3127 (DP)
- Hive快速入门
- Could not find the python development headers
- APP气泡聊天框
- js获取url中的某个参数
- 简单实现单选多选(GrideView实现单选,ListView实现多选),横向ListView
- JS开发HTML5游戏《神奇的六边形》(二)