ios开发创建appid 微信有两个appid怎么解决

请登陆后使用
只需一步,快速开始
吧友自助信息发布区,请自行甄别
查看: 36801|回复: 122
IOS平台制作属于自己APPLE ID的微信6.0多开版本详细教程,超简 ..
下午5点下班,刚回来没多久看到很多童鞋私信要求写一个微信多开的制作教程出来,我也是通过百度上的文章自己摸索出来的,就匆匆忙忙写了这么一篇出来,抱歉让大家久等了;
首先声明:内容可以通过百度搜索出来,不过百度上面写的可能不是那么详细,我加了很多配图以方便大家参照;
另外下边写的制作方法仅仅只是多种制作方法中的一种,还有其它的方法可以制作(比如说,要修改的两个文件大家可以提前解压出来,每修改一个版本内容后就往压缩包里拖一次,直接覆盖压缩包里的源文件,更新压缩包后重命名为ipa文件即可制作完成,但这种应该不太适合新手,所以写了这么一个邋遢的教程)
下面直接切入正题:
使用工具:plistEditor、WinRar(当然WinZip、7-zip等支持zip压缩格式的压缩软件都行)、itools(PP助手、xx助手之类的也行),程序大家自行百度下载吧,很好找(直接放出来万一哪位童鞋说有毒我也蛋疼不是?),本例中我使用WinRar和iTools来进行演示:
在自己的IOS设备上用自己的APPLE ID下载微信6.0(此步骤无图)
电脑上用iTools连接手机,打开“应用程序”,找到你安装的微信,单击“备份”—“备份程序”(不需要勾选“备份程序—含文档”那项)—在弹出的“另存为”对话框中选择备份出来的安装文件存放路径,确定并导出(本例中使用“桌面\微信多开”路径,吧友们自行替代自己的路径)
--说明:为什么要从自己的手机中导出微信安装包呢?这样是为了有强迫症的童鞋保证自己手机里安装的全是基于自己APPLE ID的官方程序
1.gif (103.62 KB, 下载次数: 299)
19:45 上传
Ps:如果不在乎是不是自己的APPLE ID制作出来的多开版本,那么第一、二步可以忽略,你只需要有一个微信的ipa安装包即可
复制刚才导出的微信安装包“微信(v6.0.0.17).ipa”到当前文件夹为“微信(v6.0.0.17)-A.ipa”,选中后按F2键重命名,将其后缀名改为.zip;注意此时正常更改后,该文件的图标为变成一个压缩包;如果文件的图标和重命名前一样,没有变为压缩包图标,参看下边说明;
4.gif (14.61 KB, 下载次数: 325)
19:59 上传
--有些童鞋的电脑设置里默认把文件的扩展名隐藏了,开启方法:计算机(我的电脑)—工具—文件夹选项—在弹出的标签卡中选择“查看”—“隐藏已知文件类型的扩展名”前的勾去掉—确定即可
2.gif (12.01 KB, 下载次数: 295)
19:59 上传
3.gif (31.15 KB, 下载次数: 324)
19:59 上传
双击“微信(v6.0.0.17)-A.zip”,按路径找到“微信(v6.0.0.17)-A.zip\Payload\MicroMessenger.app\Info.plist”,选中该文件,然后解压到“桌面\微信多开”文件夹中,然后双击打开解压出来的Info.plist,此时会让你选择打开该文件的程序文件,勾选“始终使用选择的程序打开这种文件”(主要是为了下次在压缩包中直接修改而不用在解压后修改),点击右下方的浏览,选中“桌面\微信多开\plistEditor.exe”,点击打开,再在上一级对话框中点确定,此时plistEditor已打开了该文件;关闭plistEditor程序并删除解压出来的Info.plist
此步骤是为了让你在制作下一个多开微信时可以直接在压缩包内调用plistEditor程序进行编辑;
5.gif (41.4 KB, 下载次数: 334)
20:11 上传
6.gif (44.45 KB, 下载次数: 319)
20:11 上传
直接在压缩包中找到“微信(v6.0.0.17)-A.zip\Payload\MicroMessenger.app\Info.plist”文件并双击,此时电脑自动使用plistEditor程序打开了Info.plist文件。Ctrl+F查找,输入“CFBundleDisplayName”,点查找会看到查找到的位置的下一行文本是“&string&微信&/string&”,将此处的“微信”更改为“微信A”(用以区分各个微信,可以自行修改);再搜索“CFBundleIdentifier”,在查找到的位置的下一行“&string&com.tencent.xin&/string&”中,将“com.tencent.xin”更改为“com.tencent.xinA”;此字段是IOS手机APP软件的区别代码,只要这个代码不同,手机就会认为是2个不同的软件。这就是多开的核心和关键。
7.gif (26.57 KB, 下载次数: 331)
20:23 上传
8.gif (5.92 KB, 下载次数: 294)
20:23 上传
关闭plistEditor软件,此时plistEditor会询问我们是否保存,一定要保存。然后WinRar会问我们:文件“Info.plist”已经被修改,你希望在压缩文件中更新它吗?此时一定要点“是”,然后WinRar就会将我们修改过的Info.plist更新到压缩包里了;
9.gif (5.54 KB, 下载次数: 318)
20:26 上传
10.gif (7.07 KB, 下载次数: 294)
20:26 上传
双击“微信(v6.0.0.17)-A.zip”,直接在压缩包中找到“微信(v6.0.0.17)-A.zip\Payload\MicroMessenger.app\zh_CN.lproj\infoPlist.strings”文件并解压到“桌面\微信多开”文件夹中,双击打开解压出来的“infoPlist.strings”文件,按第四步操作使用plistEditor程序打开,关闭plistEditor程序并删除解压出来的infoPlist.strings;
此步骤是为了让你在制作下一个多开微信时可以直接在压缩包内调用plistEditor程序进行编辑;此步骤不配图,参看第四步;
直接在压缩包中找到“微信(v6.0.0.17)-A.zip\Payload\MicroMessenger.app\zh_CN.lproj\infoPlist.strings”文件并双击,在plistEditor程序中查找“CFBundleDisplayName”字段,将下一行文本中的“微信”更改为“微信A”;(这个字段的内容将成为手机里显示APP的文字,此例中我更改为“微信A”,大家可以凭自己喜好自行定义)
11.gif (33.24 KB, 下载次数: 319)
20:36 上传
关闭plistEditor软件,此时plistEditor会询问我们是否保存,保存。然后WinRar会问我们:文件“infoPlist.strings”已经被修改,你希望在压缩文件中更新它吗?此时一定要点“是”,然后WinRar就会将我们修改过的infoPlist.strings更新到压缩包里了;
修改了压缩包内的“Info.plist”和“infoPlist.strings”文件,此时所有的修改内容就已经改好了;OK,选中“微信(v6.0.0.17)-A.zip”重命名,将其扩展名改回.ipa,此时第一个多开的微信安装包就已经制作完成了,下一步就需要你通过iTools(或其它助手类工具)把它安装到手机里去了;(我自己只制作了三个给小号用,大家可以从第一张图上看到,APPLE ID都是我自己的)
大家制作好了第一个多开版本后,只需要按第三、第五、第六、第八、第九、第十个步骤就可以制作下一个多开版本了;
需要注意的是,每个版本的那三个字段一定要不一样,不然安装时会出问题;
另外:此种方法制作的多开版目前只适用于已越狱设备,且安装时不需要更改系统日期;另外多开版本的微信各个微信的消息推送是没问题的,但外部程序调用时只调用最后一个安装的微信(不确定是不是最后一个,至少我的是),请大家知悉!这个问题目前暂时无法解决,等待哪位大神出解决方案吧
写了那么多,其实很多步骤在有基础的童鞋看到是很拖沓的了;写的比较仓促,有疏漏的地方大家尽量包涵下了;
最后,希望有需要的童鞋都能成功制作出自己的微信多开程序
---------------------------------------------------------------------------------------------
有很多吧友反映未越狱的设备安装时会出现验证失败的问题,刚有找同事的未越狱手机进行测试,结果证实未越狱的设备在安装时确实会出现验证失败的情况的,原因是因为IPA需要进行授权重签;
网上查了些资料,现在未越狱的微信多开版本都需要更改系统日期,原因是因为IOS会对未越狱设备中的应用进行授权检测,其制作需要开发者帐号、企业签名、Mac设备等对IPA程序进行授权重新签名,很遗憾上述条件目前都不满足;
昨天发帖的时候未在非越狱设备中进行测试,误导了部分吧友,对此深表歉意!
<p id="rate_825" onmouseover="showTip(this)" tip="复杂的样子&果果 + 1
" class="mtn mbn">
<p id="rate_937" onmouseover="showTip(this)" tip="&果果 + 1
" class="mtn mbn">
<p id="rate_113" onmouseover="showTip(this)" tip="按照楼主的方法果然成了,谢谢大神分享&果果 + 1
" class="mtn mbn">
<p id="rate_194" onmouseover="showTip(this)" tip="支持码字!&果果 + 1
" class="mtn mbn">
<p id="rate_753" onmouseover="showTip(this)" tip="&果果 + 1
" class="mtn mbn">
感谢分享,都看明白了,微信号也买好了,就差IPAD了
论坛找的别人150开的在没越狱的也可以用,但是不喜欢他的图标,他怎么搞的啊,求修改方法,你的8,1下越狱也99%进不去,是什么情况引起的
不过现在的8,1越狱好多软件不承认吗 越狱了显示没越狱 但是 有cyida 了的
能安装插件了
但是你的微信方法 还是卡在 数据载入99 然后失败
马克。今天没果了
8.1越狱后微信登陆后每次载入数据都卡在99%
这个方法现在做了还能正常安装吗
如果设备已经越狱的话是可以的,未越狱的暂时不行
<p id="rate_774" onmouseover="showTip(this)" tip="还是谢谢,想要未越狱的方法&果果 + 1
" class="mtn mbn">
楼主看这个帖子,缺少一步呢,难怪我怎么安装不上,但是不知道是哪一步,那个吧友也不肯分享
这个制作完需要改时间吗,我淘宝买的那个需要改时间到9月20号,有时候把时间改回来再打开就闪退,重启后也会
好东西要支持 收藏
真不错我看懂了
支持,好贴。
<p id="rate_997" onmouseover="showTip(this)" tip="你的帖子对我太有用了,太谢谢你了&果果 + 1
" class="mtn mbn">
这个制作完需要改时间吗,我淘宝买的那个需要改时间到9月20号,有时候把时间改回来再打开就闪退,重启后也会
不需要的,至少我制作了三个安装,10月9号的时候安装也不需要改时间
<p id="rate_997" onmouseover="showTip(this)" tip="你的帖子对我太有用了,太谢谢你了&果果 + 1
" class="mtn mbn">
对不起, 您仅能在
21:08:45 后才能对该用户评分!
俺是安卓的 但是顶你
<p id="rate_997" onmouseover="showTip(this)" tip="你的帖子对我太有用了,太谢谢你了&果果 + 1
" class="mtn mbn">
不需要的,至少我制作了三个安装,10月9号的时候安装也不需要改时间
那请问楼主知道为什么别人那里的需要改时间吗,如果这个也像淘宝卖的那样最后还是需要改时间,那我就不折腾去弄了
那请问楼主知道为什么别人那里的需要改时间吗,如果这个也像淘宝卖的那样最后还是需要改时间,那我就不折 ...
别人的为什么要改时间我也不知道,但这个方法制作的不需要改日期我是能肯定的
好复杂&&懒得看
流B,不越狱的话,是不是刷到IOS8的也有救了。有此神器,准备入一个MINI3
流B,不越狱的话,是不是刷到IOS8的也有救了。有此神器,准备入一个MINI3
IOS8我没升级,升级了就不能越狱了,我受不鸟
Powered byPages: 1/6
主题 : 微信支付如果遇到跳转只有一个确定请看这里
级别: 新手上路
可可豆: 30 CB
威望: 30 点
在线时间: 39(时)
发自: Web Page
来源于&&分类
微信支付如果遇到跳转只有一个确定请看这里&&&
今天在联调微信支付,不得不说,和它比起来,阿里的支付sdk真的是太好用了。果然和后端同学在联调的时候发现跳转后出现了这一画面。这种什么也没有的界面真的是让人抓狂了,点击后返回的状态竟然是-2,用户取消。原本以为是自己的问题,耐着性子配合了@&#160;的demo来调试,最终总结如下:首先确认 是传递接口的字段导致的问题。是传递接口的字段导致的问题。是传递接口的字段导致的问题。说几个可能出现问题的点。第一步获取prepayId,这一步往往都不会有什么错误,根着官方文档都不会出现什么问题,坑在第二步发送跳转1、注意一下 nonceStr 需要是第一步里生成的 nonceStr,而不是重新生成。2、sign 需要重新针对5个字段进行签名:partnerId prepayId package nonceStr timeStamp &#160;不需要传入appid或者openid需要传入appid3、package = @&Sign=WXPay& 注意服务器传来的&=&会不会被转义成 %3D4、sign的确需要大写,不像之前有些帖子说的要小写。基本我遇到的坑就是这些,欢迎大家讨论。@狂龙天使 的demo地址内容更新:by luohuasheng0225我补充一坑:1、如果你app同时使用了友盟分享(含微信分享)和微信支付。如果你没有处理好这个两个SDK register的顺序,那就很不幸,也会出现这种情况。(如何出现这种情况,请看我的测试步骤:1、杀掉微信进程、2、删除自己开发的app、3、重新同步自己的app到设备,点击微信支付)两者register的顺序:如果是先调用微信registerApp、然后调用友盟的 [UMSocialWechatHandler setWXAppId:WXAppID appSecret:[NSString stringWithBundleNameForKey:@&WXAppSecret&] url:url] ,然后按照我测试的步骤,应该就会出现。解决办法:改变两者的register步骤。先调用友盟,然后调用微信。 内容更新:by yutiandesan补充一点,时间戳需要为10位,之前后台给的是13位,也是只有一个确定按钮,并且ret=-2 [ 此帖被zepto在 18:06重新编辑 ]
级别: 新手上路
可可豆: 30 CB
威望: 30 点
在线时间: 39(时)
发自: Web Page
更新一下修正一下之前的错误描述
级别: 新手上路
UID: 460886
可可豆: 19 CB
威望: 19 点
在线时间: 16(时)
发自: Web Page
顶一下!!
级别: 新手上路
UID: 312556
可可豆: 21 CB
威望: 19 点
在线时间: 22(时)
发自: Web Page
顶一下,虽然我的问题还么有解决////
级别: 新手上路
可可豆: 101 CB
威望: 1 点
在线时间: 32(时)
发自: Web Page
我补充一坑:1、如果你app同时使用了友盟分享(含微信分享)和微信支付。如果你没有处理好这个两个SDK register的顺序,那就很不幸,也会出现这种情况。(如何出现这种情况,请看我的测试步骤:1、杀掉微信进程、2、删除自己开发的app、3、重新同步自己的app到设备,点击微信支付)两者register的顺序:如果是先调用微信registerApp、然后调用友盟的 [UMSocialWechatHandler setWXAppId:WXAppID appSecret:[NSString stringWithBundleNameForKey:@&WXAppSecret&] url:url] ,然后按照我测试的步骤,应该就会出现。解决办法:改变两者的register步骤。先调用友盟,然后调用微信。
级别: 骑士
UID: 321946
可可豆: 1081 CB
威望: 1083 点
在线时间: 1567(时)
发自: Web Page
级别: 新手上路
UID: 393966
可可豆: 16 CB
威望: 10 点
在线时间: 101(时)
发自: Web Page
验证过二次签名了&&&&为什么跳转到微信还是只有一个确定按钮
级别: 新手上路
UID: 419183
可可豆: 79 CB
威望: 76 点
在线时间: 113(时)
发自: Web Page
问个问题啊。xocde升级到7后,微信支付的回调方法为什么不执行了?-(void) onResp:(BaseResp*)resp这个方法没有执行
级别: 新手上路
UID: 512291
可可豆: 105 CB
威望: 97 点
在线时间: 7(时)
发自: Web Page
这是单独接的微信支付嘛?为毛不接聚合支付呢?所有通道一次性搞定额。。。。
移动端第三方支付平台—爱贝云计费/home.html
级别: 新手上路
UID: 487047
可可豆: 206 CB
威望: 189 点
在线时间: 176(时)
发自: Web Page
回 楼主(zepto) 的帖子
话说lz我用官方文demo调试,第一步就错,返回app没有支付权限,是不是申请那边的问题啊?
Pages: 1/6
关注本帖(如果有新回复会站内信通知您)
个人IDP证书一年费用? 正确答案:99美金
发帖、回帖都会得到可观的积分奖励。
按"Ctrl+Enter"直接提交
关注CocoaChina
关注微信 每日推荐
扫一扫 浏览移动版/s/1dD16ybv
第一,你需要有微信开发平台的开发者账号,(网址https://open./,或者自行百度“微信open”,支付宝支付同理,下同),并将你要集成的应用在你的开发者账号中注册,并获取支付权限(一般这步不需要程序员考虑,都是客户自己获取的,你只需要知道,没有支付权限的应用,不可以集成支付)。
第二,注册完你的应用,通过审核之后,你会获得开放平台给你发放属于这个应用的AppID和AppSecret
第三,在开发平台的资源中心(或者叫文档中心,SDK中心什么的),下载IOS的SDK(文档也可以下载下来方便查阅)。我这次的Demo是之前集成过ShareSDK的分享和第三方登录,所以直接用的ShareSDK中的微信SDK。
(ps,这里之前网友有过用ShareSDK中的微信SDK不支持支付功能,我这里是可以支付的,应该是Mob集成好了,如果你下载的不能用的话,可以去微信官方下载官方的SDK,10M左右的样子,把ShareSDK中的微信SDK替换掉,替换的时候要注意,不能只替换文件,要看好工程中Target选项卡里的文件路径是否删除了旧文件路径,否则的话可能旧文件路径会覆盖新文件路径,导致替换没有效果或者崩溃。)
第四,将下载好的SDK拷贝到工程文件夹中,然后再工程中AddFilesTo“你的工程”,
(这里注意,Add的时候要勾选CopyItemsIfNeeed,否则可能会出现找不到路径这种烦人的错误)
第五,配置你的工程。
1.添加系统依赖库,(这里我用了ShareSDK,所以也连Share必须的系统库也一并添加了),方法—点击工程名—Target—BuildPhases—Link Binary With Libraries—点击+号搜索你需要的系统库,并添加
SystemConfiguration.framework
QuartzCore.framework
CoreTelephony.framework
libicucore.dylib(ps,这里因为可能你的Xcode是Xcode7,所以这里的.dylib可能会在你的系统库里显示.tbd)正常添加就好
libz.1.2.5.dylib
Security.framework
JavaScriptCore.framework
libstdc++.dylib
CoreText.framework
libsqlite3.dylib
ImageIO.framework (shareSDK新浪必须依赖库)
AdSupport.framework(shareSDK新浪必须依赖库)
2.配置工程的URL Types中的URL Schemes,
这个URL Schemes是用来调起第三方客户端支付或分享或授权之后回到你的程序的标识
方法:点击工程名—Target—Info—URL Types—点击+号,在URL Schemes栏中填入你在第二步中获取到的APPID(图见上一步,自己找一下info选项卡)
3.如果是Xcode7需要在Info.Plist文件中加入字段LSApplicationQueriesSchemes,为Array类型,然后在里面添加两个小选项,分别为weixin和wechat(Xcode7http请求适配Xcode7的问ti请自行百度)
第六、开始写代码了!
1.将Demo中的WXPay文件夹拷贝到工程文件夹中,然后Add到工程目录
2.在AppDelegate.h中#import相关头文件,在AppDelegate.m文件中的application:(UIApplication *)applicationdidFinishLaunchingWithOptions:(NSDictionary *)launchOptions
方法中添加[WXApi registerApp:APP_ID withDescription:@"demo 2.0"];(这里的APPID就是你第二步获取的APPID,一般建议写成宏。@“demo2.0”不需要修改),我的demo里在这个方法里还注册了shareSDK,希望大家不要有疑惑。
3.在AppDelegate.m中加入这两个方法:
-(BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url;
- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation;
具体方法里的代码如何书写请看Demo中的注释。
4.配置完AppDelegate文件之后,向你的工程中拷贝入Demo中的UIViewController+WeChatAndAliPayMethod类目,并Add到工程中,
在你需要用到支付的页面引用这个类目。(详情请见Demo的ViewController页面方法和代码,仔细观看注释和理解代码之后微信支付的集成就完成了)
PS.支付宝集成和微信支付集成大同小异,如果你集成了微信支付,你会发现支付宝集成更简单。
第一步,将支付宝支付的SDK拷贝到工程文件夹中,然后Add到工程目录,
(ps。这里注意一下,我demo里ThirdParty下的AliPay那些文件都是需要你在这一步拷贝的东西。)
尤其是openssl和Util还有那两个.a文件。因为支付宝的开发文档写的实在是不怎么样,乱七八糟的,都没有直接给你要添加的SDK包,这些东西都是从官方的demo里抽出来的。具体你们可以下载官方demo看一看。
第二步、Add完SDK包之后,引入所需的系统库。调用UIViewController+WeChatAndAliPayMethod这个类目中的支付宝支付方法即可。(注意看我Demo中的代码和注释)
PS。如果你在集成支付宝的时候可能会遇到&openssl/xxx.h&not found的错误,(你平时用别的SDK的时候也可能会遇到),这一般情况是Xcode找不到这些文件的路径。在这里,你可以在Targets中的BuildSettings中的Header Search Paths选项卡中添加openssl的路径。(这里注意,你可以直接将文件夹直接拖进去,但是这时候你会发现路径是带双引号””的,一定要删除左右的双引号才可以)
重点:Demo里有两个存放关键几个宏的文件,payRequsesrHandler.h和AliPayNeedDEF.h,这两个文件里面的内容你们要自己填写自己的数据。具体如何获取这些数据我的注释写的很明白了。仔细看一下就好。
还有,你们在调用我的支付类目中的方法的同时,要写一个监听,来通知你是否支付成功。这个在我的代码注释里写的很清楚,这里就不多赘述了。
& 开源中国(OSChina.NET) |
开源中国社区(OSChina.net)是工信部
指定的官方社区微信公众号授权登录的APPID 可以在APP内授权登录使用么?
[问题点数:50分]
微信公众号授权登录的APPID 可以在APP内授权登录使用么?
[问题点数:50分]
不显示删除回复
显示所有回复
显示星级回复
显示得分回复
只显示楼主
匿名用户不能发表回复!|
每天回帖即可获得10分可用分!小技巧:
你还可以输入10000个字符
(Ctrl+Enter)
请遵守CSDN,不得违反国家法律法规。
转载文章请注明出自“CSDN(www.csdn.net)”。如是商业用途请联系原作者。iOS开发支付集成之微信支付 - 简书
下载简书移动应用
写了12243字,被382人关注,获得了306个喜欢
iOS开发支付集成之微信支付
这一篇是《iOS开发之支付》这一部分的继,第三篇,微信支付。在集成的时候建议都要去下载最新版的SDK,因为我知道的前不久支付宝,银联都更新了一次,微信的不太清楚更新了没。
在被支付宝、银联坑过之后,发现其实微信支付的集成并没有想象中的那么困难,像支付宝那样简单地调用个方法就行,重要的难的部分都是后台来做的。微信支付也是需要签名的,也跟支付宝一样,可以在客户端签名,也可以在后台签名(当然,为了安全还是推荐在服务器上做签名,逻辑也比较好理解)。
集成前首先要看看文档,还有也是需要好好看看的。
ps:注册APP这样的事一般的是经理给你做好的,这个可以忽略,如果需要做的话,可以。
这个流程和的流程都差不多,理解了其实是一样的。
微信支付流程
首先需要理清楚流程:
用户使用APP客户端,选择商品下单。
商户客户端(就是你做的APP)将用户的商品数据传给商户服务器,请求生成支付订单。
商户后台调用统一下单API向微信的服务器发送请求,微信服务器生成预付单,并生成一个prepay_id返回给商户后台。
商户后台将这个prepay_id返回给商户客户端。
用户点击确认支付,这时候商户客户端调用SDK打开微信客户端,进行微信支付。
微信客户端向微信服务器发起支付请求并返回支付结果(他们之间交互用的就是prepay_id这个参数,微信的服务器要验证微信客户端传过去的参数是否跟第三步中生成的那个id一致)。
用户输入支付密码后,微信客户端提交支付授权,跟微信服务器交互,完成支付
微信服务器给微信客户端发送支付结果提示,并异步给商户服务器发送支付结果通知。
商户客户端通过支付结果回调接口查询支付结果,并向后台检查支付结果是否正确,后台返回支付结果。
商户客户端显示支付结果,完成订单,发货。
虽然看起来有点多,但是理解起来并不复杂,跟我们平时手机上买东西是一样的。我们客户端需要做的就是
调起微信客户端发起支付
显示支付结果
首先是要,
微信SDK下载
建议头文件和示例都下载出来看看。(吐槽下,官方的示例难看死了,看的眼晕!注释都没几个。。。鄙视之)
导入微信支付SDK库
导入上面那个iOS头文件和库下载下载出来的SDK包的就行啦,我这里的是SDK1.6.2. 然后需要链接上依赖库,在Target —& BuildPhases —& Link Binary With Libraries— 点击+号 -& 搜索你需要的系统库。
SystemConfiguration.framework
libsqlite3.0.tbd
CoreTelephony.framework
QuartzCore.framework
设置URL Scheme
在注册微信平台APP的时候,会给一个唯一识别标识符(APPID),在里面说得很清楚了,需要填在URL Schemes这个地方,
URL scheme
在Appdelegate中注册APPID
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
// Override point for customization after application launch.
向微信终端注册ID,这里的APPID一般建议写成宏,容易维护。@“测试demo”不需用管。这里的id是假的,需要改这里还有target里面的URL Type
[WXApi registerApp:@"wxd930ea5d5a258f4f" withDescription:@"测试demo"];
return YES;
处理微信通过URL启动时传递的数据
//前面的两个方法被iOS9弃用了,如果是Xcode7.2网上的话会出现无法进入进入微信的onResp回调方法,就是这个原因。本来我是不想写着两个旧方法的,但是一看官方的demo上写的这两个,我就也写了。。。。
//9.0前的方法,为了适配低版本 保留
- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url{
return [WXApi handleOpenURL:url delegate:self];
- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation{
return [WXApi handleOpenURL:url delegate:self];
//9.0后的方法
- (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary&NSString *,id& *)options{
//这里判断是否发起的请求为微信支付,如果是的话,用WXApi的方法调起微信客户端的支付页面(://pay 之前的那串字符串就是你的APPID,)
[WXApi handleOpenURL:url delegate:self];
//微信SDK自带的方法,处理从微信客户端完成操作后返回程序之后的回调方法,显示支付结果的
-(void) onResp:(BaseResp*)resp
//启动微信支付的response
NSString *payResoult = [NSString stringWithFormat:@errcode:%d, resp.errCode];
if([resp isKindOfClass:[PayResp class]]){
//支付返回结果,实际支付结果需要去微信服务器端查询
switch (resp.errCode) {
payResoult = @支付结果:成功!;
payResoult = @支付结果:失败!;
payResoult = @用户已经退出支付!;
payResoult = [NSString stringWithFormat:@支付结果:失败!retcode = %d, retstr = %@, resp.errCode,resp.errStr];
最重要的来了!!
调用微信支付前,需要下单、签名等操作,以便获取微信支付所必要的参数。为了提高安全性,下单、签名操作一般是在后台完成,在前台做的话被捕获改信息就不开心了。。。。。
需要的参数包括:appid、partid(商户号)、prepayid(预支付订单ID)、noncestr(参与签名的随机字符串)、timestamp(参与签名的时间戳)、sign(签名字符串)这六个。在点击支付的控制器中使用核心代码来调起微信客户端支付,这些个参数都是后台传给你的。 加上了注释,应该很好理解的。
#pragma mark 微信支付方法
- (void)WXPay{
//需要创建这个支付对象
PayReq *req
= [[PayReq alloc] init];
//由用户微信号和AppID组成的唯一标识,用于校验微信用户
req.openID = @"";
// 商家id,在注册的时候给的
req.partnerId = @"";
// 预支付订单这个是后台跟微信服务器交互后,微信服务器传给你们服务器的,你们服务器再传给你
req.prepayId
// 根据财付通文档填写的数据和签名
//这个比较特殊,是固定的,只能是即req.package = Sign=WXPay
req.package
// 随机编码,为了防止重复的,在后台生成
req.nonceStr
// 这个是时间戳,也是在后台生成的,为了验证支付的
NSString * stamp = @"";
req.timeStamp = stamp.intV
// 这个签名也是后台做的
req.sign = @"";
//发送请求到微信,等待微信返回onResp
[WXApi sendReq:req];
这个JSON里面的数据(上面的参数)就是后台需要传给你的,至于怎么来,也有后台的文档,让他去看下就行啦~~~
"appid": "wxb4ba3c02aa476ea1",
"noncestr": "d1e6ecda9f50da607c971c",
"package": "Sign=WXPay",
"partnerid": "",
"prepayid": "wx35e3753eda1f",
"timestamp": "",
"sign": "F6DEE4ADDA"
到这里,不出意外的话应该都能正常的支付了。流程最重要,理解了就知道怎么做了,强烈建议需要做的朋友们先理理思路,不要急着下手。
PS:这篇文章中,签名都是在后台做的,如果需要在你客户端做,可以参考下,和,他们的签名在客户端做的,写的也比较详细了。
可能遇到的问题
1.如果支付完成后,一直留在微信,那就检查下URLType中的Scheme设置问题。
2.能够打开微信客户端,但是打开后只有中间一个白色的 “确定按钮”,点击后会回到客户端上,如果是这样,那应该是prepayid 参数的问题,过期了,或者不是真实的id。代码没有问题的。特别注意的是,微信要两次签名,两次~~~~
3.如果APP里面使用了友盟或者ShareSDK做分享,那就不用再导入SDK了,否则会出现一些诡异的问题,例如无法调起手机微信客户端、无法调起微信客户端web页面,调起了但是一闪而过。。。这都基本上都是因为分享的SDK里面已经包括了微信的SDK。所以如果出现诡异的错误了看看是不是两个冲突了!
4.微信支付的单位是分,被坑过的人都知道了。。。。哎,
如果在集成过程中遇到什么问题,大家可以一起讨论下,我记录这些如果有什么错误的话也请告诉我!谢谢!
如果您觉得文章对您有用,不需要打赏,点个喜欢,关注我一下就是对我最大的支持!
打开微信“扫一扫”,打开网页后点击屏幕右上角分享按钮
被以下专题收入,发现更多相似内容:
如果你是程序员,或者有一颗喜欢写程序的心,喜欢分享技术干货、项目经验、程序员日常囧事等等,欢迎投稿《程序员》专题。
投稿须知:
...
· 134211人关注
分享 iOS 开发的知识,解决大家遇到的问题,讨论iOS开发的前沿,欢迎大家投稿~
· 23688人关注
· 5662人关注
如果您觉得文章对您有用,不需要打赏,点个喜欢,关注我一下就是对我最大的支持!
选择支付方式:

我要回帖

更多关于 ios开发创建appid 的文章

 

随机推荐