• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >微信公众号 > 详解iOS微信支付开发案例代码

详解iOS微信支付开发案例代码

作者:匿名 字体:[增加 减小] 来源:互联网

匿名通过本文主要向大家介绍了ios,微信支付等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com
这篇文章主要为大家详细介绍了iOS微信支付开发案例,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

微信支付有很多坑的,官方提供的文档一点都不全面,而且demo也比较”羞涩”难懂。很多注意的细节都没有体现出来,走了很多弯路。于是,系统的开发流程如下。(完整的demo附在博客最后面)这里面包括微信支付开发和支付宝开发调用客户端的兼容处理。(两次签名放在移动端,博客中没提到没安装微信客户端的情况,也很简单[WXApi sendReq:request]调用这个方法的返回值为0即可判断。)

一、环境配置

1、首先是https协议访问,在plist设置白名单

详解iOS微信支付开发案例代码

2、当你工程中有微信分享、收藏、支付、登录等,需要在“Info.plist”里增加如下代码(LSApplicationQueriesSchemes)

详解iOS微信支付开发案例代码

3、解决bitcode编译不过问题

详解iOS微信支付开发案例代码

4、设置URL types

详解iOS微信支付开发案例代码

5、导入SDK(可从微信官方的demo移植过来)

详解iOS微信支付开发案例代码

6、导入系统依赖库

详解iOS微信支付开发案例代码

7、特别要注意的是

微信支付是以分为单位的,也就是说,如果你支付金额是保留两位小数,支付的金额必须*100后再传给微信支付平台,其他的依次类推。

二、代码开发

1、在程序入口(即applegate.m)需要进行的操作

详解iOS微信支付开发案例代码

2、增加如下代理方法,否则不回调微信客服端(也是在delegate.m文件中)

详解iOS微信支付开发案例代码

3、微信支付成功的回调函数

这个有必要说明下,官方文档是这样说明的:不能以客服端支付成功的结果就直接当做是订单支付成功的结果,要以服务器返回的订单状态为准,也就是说,客服端支付成功后,微信支付平台会给服务器发送支付成功的消息,后台修改订单状态,重新返回给客户端。简单就是,支付成功要发送给特定的视图控制器(带有微信支付功能的视图控制器)发送通知,让这个特定的视图控制去请求服务器订单的住状态。这个回调函数必须写在delegate.m中!!!

详解iOS微信支付开发案例代码

4、特定视图控制器的代码(带有微信支付功能的视图控制器)
4.1 提交预支付订单获得预订单id(这个过程必须经过两次签名,分别是不带参数签名和携带参数签名,当然,这些方法都已经在payRequsestHandler类封装好了,你只需要传参数调用方法就可以了)这个也是点击支付按钮的动作方法

详解iOS微信支付开发案例代码

4.2得到预支付订单,那么就可以调微信支付的客服端(4.2和4.1代码是连续的)

详解iOS微信支付开发案例代码

附带sign参数签名的独立封装的两个方法,没用payRequsestHandler封装的方法,自己写的,因为用了出现问题(问题截图如下),先代码截图,后面再提供可直接复制黏贴的代码块
问题截图:(相信很多人遇到过,100%是sign签名的问题)

详解iOS微信支付开发案例代码

方法一:

详解iOS微信支付开发案例代码

方法二:

详解iOS微信支付开发案例代码

4.3 上面的代码就可以完全解决微信支付问题,剩下最后一个步骤,支付成功返回app调用delegate的-(void)onResp:(BaseResp*)resp方法,那么这里要发送通知给特定的视图控制器,让他去请求后台的订单状态。这里要说明的是,你从那个界面调的微信支付后,返回还是在原处。只是回调方法必须在delegate中,所以必须在回调方法发送成功的通知。那么要在特定的视图控制器的视图即将出现的方法中,监听到这个通知,然后请求后台的订单状态。这里需要注意的是,需要重写dealloc方法,移除通知。

详解iOS微信支付开发案例代码

三、支付宝和微信支付的回调客户端的代理方法的兼容处理

详解iOS微信支付开发案例代码

四、demo

可供复制黏贴的代码(sign签名)

-(NSString )createMD5SingForPay:(NSString )appid_key partnerid:(NSString)partnerid_key prepayid:(NSString )prepayid_key package:(NSString )package_key noncestr:(NSString)noncestr_key timestamp:(UInt32)timestamp_key 
{ 
NSMutableDictionary *signParams = [NSMutableDictionary dictionary]; 
[signParams setObject:appid_key forKey:@”appid”]; 
[signParams setObject:noncestr_key forKey:@”noncestr”]; 
[signParams setObject:package_key forKey:@”package”]; 
[signParams setObject:partnerid_key forKey:@”partnerid”]; 
[signParams setObject:prepayid_key forKey:@”prepayid”]; 
[signParams setObject:[NSString stringWithFormat:@”%u”,(unsigned int)timestamp_key] forKey:@”timestamp”];
NSMutableString *contentString =[NSMutableString string]; 
NSArray *keys = [signParams allKeys]; 
//按字母顺序排序 
NSArray *sortedArray = [keys sortedArrayUsingComparator:^NSComparisonResult(id obj1, id obj2) {
return [obj1 compare:obj2 options:NSNumericSearch]; 
}]; 
//拼接字符串 
for (NSString *categoryId in sortedArray) { 
if ( ![[signParams objectForKey:categoryId] isEqualToString:@”“] 
&& ![[signParams objectForKey:categoryId] isEqualToString:@”sign”] 
&& ![[signParams objectForKey:categoryId] isEqualToString:@”key”] 
) 
{ 
[contentString appendFormat:@”%@=%@&”, categoryId, [signParams objectForKey:categoryId]];
} 
} 
//添加商户



 
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • iOS版微信聊天记录查看器步骤详解
  • IOS微信开发支付的步骤详解
  • ios关闭微信打赏功能背后:微信的崛起与苹果的隐忧
  • iOS版微信公众平台赞赏功能关闭后你必须要知道的四点
  • IOS实现微信授权登录功能实例代码
  • 详解iOS微信支付开发案例代码
  • iOS开发之微信聊天页面实现
  • iOS实现类似微信和支付宝的密码输入框(UIKeyInput协议)

相关文章

  • C#开发微信门户及应用微信门户应用管理系统功能介绍
  • C#开发微信门户及应用在微信菜单中采用重定向获取用户数据
  • 微信公众号支付(一)如何获取用户openId
  • java微信开发之上传下载多媒体文件
  • PC端用.NET微信开发实现扫码注册和登录功能详解
  • 推荐10款服务端接收源码(收藏)
  • 关于微信支付PHP SDK之微信公众号支付实现代码
  • .NET微信公众号开发(5.0微信支付)实例详解
  • 关于参数名的10篇课程推荐
  • JAVA微信开发新手必看的接入指南介绍

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • C#开发微信门户及应用-微信小店商品管理接口的封装和测试
    • 关于微信自定义分享功能的实现代码
    • 有关微信网页开发的文章推荐10篇
    • java微信开发API服务器接入详解
    • 图文详解Android集成微信登录的步骤
    • 微信开发的简单问题讨论
    • 微信开发入门(八)页面路由
    • iOS实现类似微信和支付宝的密码输入框(UIKeyInput协议)
    • C#微信开发系列-启用开发者模式
    • C#开发微信门户及应用-微信企业号的消息发送(文本、图片、文件、语音、视频、图文消息等)

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有