iOS集成微信支付的一些坑:onResp不回调、只显示一个确定按钮、闪回

原创 2016年03月03日 18:36:06

iOS集成微信支付总体来说还是比较容易的(如果没有那些坑的话),所有文档都在:

    https://pay.weixin.qq.com/wiki/doc/api/app.php?chapter=8_1


甚至只要看:

    https://pay.weixin.qq.com/wiki/doc/api/app.php?chapter=8_3 

    https://pay.weixin.qq.com/wiki/doc/api/app.php?chapter=8_5

这两部分就可以搞定。

遇到的大部分问题来自于另一个非常常用的第三方:友盟分享


关于

已经集成了友盟分享

只要下载微信sdk,并复制到友盟目录下的UMSocial_Sdk_Extra_Frameworks/Wechat文件夹中,替换存在文件。



关于

发起支付之后只显示一个确定按钮



就是这样,没有任何错误提示,断点返回的Url Schemes,也只有一个ret=-2,官方文档解释为:

  “无需处理。发生场景:用户不支付了,点击取消,返回APP。”


遇到这个问题,基本就是发起请求的参数传错了。

PayReq *request = [[[PayReq alloc] init] autorelease];
request.partnerId = @"10000100";
request.prepayId= @"1101000000140415649af9fc314aa427";
request.package = @"Sign=WXPay";
request.nonceStr= @"a462b76e7436e98e0ed6e13c64b4fd1c";
request.timeStamp= @"1397527777";
request.sign= @"582282D72DD2B03AD892830965F428CB16E7A256";
[WXApi sendReq:request];


对照文档仔细排查吧,一定要注意大小写,另外,sign签名时,参数名要用小些(此处官方文档有错误,文档写的用驼峰那种:https://pay.weixin.qq.com/wiki/doc/api/app.php?chapter=8_3 步骤3-参与签名的字段名,此处感谢 @挨踢实习生) 。


关于

闪回


发起支付后,打开微信,然后立即返回到了你的程序。

原因是项目同时集成了友盟,注册微信的方法写在了初始化友盟分享的前面,调换一下位置即可。

//向微信注册,需要写到初始化友盟分享的后面
[WXApi registerApp:@"wx000000000" withDescription:@"**weixinpay"];  //你的微信appid



关于

onResp不回调


这个问题依然来自跟友盟分享的冲突。虽然友盟提供了一个

+(BOOL)handleOpenURL:(NSURL *)url wxApiDelegate:(id<WXApiDelegate>)wxApiDelegate;
方法,但是通过此方法注册的delegate并没有被回调(这个有可能在不同系统版本,友盟sdk版本上效果不同)。


解决方法就是判断一下回调是不是微信支付:

//url Schemes回调
- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url
{
    return [self applicationOpenURL:url];
}

- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation
{
    return [self applicationOpenURL:url];
}

- (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary*)options
{
    return [self applicationOpenURL:url];
}

- (BOOL)applicationOpenURL:(NSURL *)url
{
    if([[url absoluteString] rangeOfString:@"wx000000000000://pay"].location == 0) //你的微信开发者appid
        return [WXApi handleOpenURL:url delegate:[WXApiManager sharedManager]];
    else
        return [UMSocialSnsService handleOpenURL:url wxApiDelegate:[WXApiManager sharedManager]];
}


如过你遇到其他问题,欢迎加微信探讨:lofocus



版权声明:本文为博主原创文章,未经博主允许不得转载。博主微信:lofocus https://blog.csdn.net/cuibo1123/article/details/50790357

IOS微信第三方支付onResp方法不被回调的解决办法

首先是关于关于IOS微信的支付分享或登录   成功调起客户端操作之后,返回你的应用之后onResp:方法不被执行的问题。 //这里说明一下,上次的集成告诉大家在Appdelegate.m里加...
  • autom_lishun
  • autom_lishun
  • 2016-09-08 10:23:29
  • 1901

iOS之微信支付开发

因为项目需求,支付方式添加了微信支付。之前做过银联的支付,所以,感觉不会太难。 使用的SDK为1.7.是13年12月份的,还是手动管理内存。 实际支付的代码不难,就是几个配置,因为项目之前做过微信分享...
  • ralbatr
  • ralbatr
  • 2015-04-20 17:54:56
  • 20132

iOS-微信支付总结

前言:在iOS开发中,常常会涉及到支付功能,而微信支付是必不可少的,这里笔者就简单整理了一下微信支付的流程,即使分享也是对自己学习的总结。一. 微信集成的基本流程(所需资料由公司提供)微信商户申请步骤...
  • Scorpio_27
  • Scorpio_27
  • 2016-09-12 17:09:07
  • 1570

微信分享成功后回调问题

如何让我们的App接收到微信的反馈?
  • ly985557461
  • ly985557461
  • 2014-06-30 22:02:04
  • 22613

iOS微信分享不触发回调函数onResp()解决方法

iOS微信分享不触发回调函数onResp()解决方法此问题最近困扰了我三天,检查项目代码与网上方法对照,并没有发现不对的地方,跟断点调试,只发现微信分享后微信端并没有给应用反馈,onResp()没有触...
  • czis912
  • czis912
  • 2017-03-10 11:20:45
  • 5092

iOS第三方微信登录时不走回调方法

ios 开发中第三方微信登录时,使用真机测试,授权登录按钮点击后不走微信demo的 -(void)onResp:(BaseResp*)resp 回调方法不走,无法判断是否成功 查看网上...
  • COOL_BEAR_XX
  • COOL_BEAR_XX
  • 2016-09-21 17:56:49
  • 6752

微信第三方登录无法回调到onResp方法中

公司项目需要接入微信,真是几经周折,一直解决不了问题,参考微信开放平台,也突破不了,但是通过前期新浪的接入,我已得知,整个接入过程中,就这一个关口,只要突破这个关口,成功马上会向我走来,我现在所需要的...
  • sinat_22657459
  • sinat_22657459
  • 2014-10-30 12:06:54
  • 7451

ShareSDK微信支付成功不调用onResp、openURL、handleOpenURL等方法

ShareSDK最新的是3.x版本,以前老的2.x需要更新,可能出现的问题:微信支付成功不调用onResp、openURL、handleOpenURL等方法...
  • lilinoscar
  • lilinoscar
  • 2016-01-08 11:18:23
  • 62509

微信支付不回调支付成功的方法,这是为什么

如果你是Xcode7.2,或者IOS9.2的话,可能会遇见在微信客户端操作返回程序之后不能执行微信的onResp回调方法的问题,就是因为一下这两个方法被废弃掉了,所以我的新demo替换了一个新的方法在...
  • prl18353364833
  • prl18353364833
  • 2016-08-04 10:33:00
  • 3200

app接入支付宝后,支付成功后,回调不响应

1.在支付时使用的是[[AlipaySDK defaultService] payOrder: fromScheme: callback:^(NSDictionary *resultDic) { NS...
  • jacob_ios
  • jacob_ios
  • 2016-09-04 16:07:17
  • 5401
收藏助手
不良信息举报
您举报文章:iOS集成微信支付的一些坑:onResp不回调、只显示一个确定按钮、闪回
举报原因:
原因补充:

(最多只允许输入30个字)