微信SDK功能一步搞定

作者: 75afc06dcc73 | 来源:发表于2017-07-25 19:20 被阅读500次

前言:
~* 之前写过一篇轻松搞定iOS微信支付/订单查询反响不错,但是在后续的使用中发现了一个问题。那就是无法与微信的其它业务共存,比如登录、分享。这可怎么办啊。
后来经过测试发现微信SDK的所有功能都使用了同一个block做为回调函数(全世界都知道的事还要你bb),于是DWWXSDK就出现了。DWWXSDK基于最新版微信SDK(目前是1.7.8),支持微信登录、微信分享、微信支付&订单查询。*

一个挑事性的微笑.jpg

DWWXSDK如何使用:

  • 首先到GitHub(点击GitHub即可跳转到仓库)下载最新的代码

    github仓库截图.png
  • 将Demo文件中的DWWXSDK文件夹导入到自己的项目中,进行这一步之前必须先将微信SDK成功集成到项目中。

  • 在项目的AppDelegate.m文件中按照以下样式加入代码


    AppDelegate.png
  • 在info.plist文件中按照以下样式加入key|value


    info.png
DWWXSDK方法的具体使用
  • 支付

     DWWXSDK *wxsdk = [DWWXSDK wxSDK];
     NSString *xmlString = [wxsdk dw_obtainWXPayXmlAppid:@"appid" 
                                                    mch_id:@"商户号"
                                                    partnerKey:@"商户Key密钥"
                                                    body:@"商品描述"
                                                    out_trade_no:@"商户订单号"     
                                                    total_fee:[@"订单总金额,单位为分" intValue] 
                                                    notify_url:@"接收微信支付异步通知回调地址,通知url必须为直接可访问的url,不能携带参数"];
    [wxsdk dw_wxRequestType:DWWXPayMoney xmlString:xmlString 
                                         success:^(BOOL success) {
      NSLog(@"支付成功");
                                         }result:^(DWWXOperatingResult operatingResult, 
                                                    NSString *error,
                                                    NSString *errorMsg) {
      NSLog(@"错误码:%ld\n%@\n错误Log:%@", (unsigned long)operatingResult, error, errorMsg);
    }];
    
  • 订单查询

    DWWXSDK *wxsdk = [DWWXSDK wxSDK];
    NSString *xmlString = [wxsdk dw_obtainWXQueryOrderXmlAppid:@"appid" 
                                                         mch_id:@"商户号"
                                                         partnerKey:@"商户Key密钥"
                                                         out_trade_no:@"查询的订单号"];
    
     [wxsdk dw_wxRequestType:DWWXOrderquery xmlString:xmlString 
                                            success:^(BOOL success) {
      NSLog(@"此订单已支付成功");
                                            } result:^(DWWXOperatingResult operatingResult, 
                                                       NSString *error, 
                                                       NSString *errorMsg) {
      NSLog(@"错误码:%ld\n%@\n错误Log:%@", (unsigned long)operatingResult, error, errorMsg);
    }];
    
  • 分享文本内容(各种分享都大同小异,此处以文本为例)

    DWWXSDK *wxsdk = [DWWXSDK wxSDK];
    [wxsdk dw_wxShareMsg:@"测试分享文本" 
              wxShareScene:DWWXShareSession
              wxShareSuccess:^(BOOL success) {
      NSLog(@"分享成功");
        } wxShareResultError:^(DWWXOperatingResult operatingResult, 
                               NSString *error,
                               NSString *errorMsg) {
      NSLog(@"%ld\n%@\n%@", (unsigned long)operatingResult, error, errorMsg);
    }];
    
分享.png
  • 登录(登录授权成功之后直接返回用户信息)

    DWWXSDK *wxsdk = [DWWXSDK wxSDK];
    [wxsdk dw_wxLoginOAuthWXAppid:@"appid"
                         wxSecret:@"秘钥" 
                         wxState:@"用于保持请求和回调的状态,授权请求后原样带回给第三方。该参数可用于防止csrf攻击(跨站请求伪造攻击),建议第三方带上该参数,可设置为简单的随机数加session进行校验" 
                         successBlock:^(DWWeChatProfileModel *profileModel) {
      NSLog(@"%@\n%@\n%@", profileModel.nickname, profileModel.headimgurl, profileModel.unionid);
                          } errorBlock:^(NSError *error, NSInteger errcode, NSString *errmsg) {
      NSLog(@"%@\n%ld\n%@", error, (long)errcode, errmsg);
    }];
    
  • 单独获取用户信息(必须是在已经获取登录授权之后调用此接口,否则之后走error)

    DWWXSDK *wxsdk = [DWWXSDK wxSDK];
    [wxsdk dw_wxLoginUserInfoWXAppid:@"appid"
                             successBlock:^(DWWeChatProfileModel *profileModel) {
      NSLog(@"%@\n%@\n%@", profileModel.nickname, profileModel.headimgurl, profileModel.unionid);
    } errorBlock:^(NSInteger errcode, NSString *errmsg) {
      NSLog(@"%ld\n%@", (long)errcode, errmsg);
    }];
    
  • 刷新或续期access_token使用

    DWWXSDK *wxsdk = [DWWXSDK wxSDK];
    [wxsdk dw_wxLoginUpDataAccessTokenWXAppid:@"appid"
              successBlock:^(NSString *access_token, 
                             CGFloat expires_in, 
                             NSString *refresh_token, 
                             NSString *openid, 
                             NSString *scope) {
      NSLog(@"%@\n%f\n%@\n%@\n%@", access_token, expires_in, refresh_token, openid, scope);
    } errorBlock:^(NSInteger errcode, NSString *errmsg) {
      NSLog(@"%ld\n%@", (long)errcode, errmsg);
    }];
    
QQ群.png.jpeg

相关文章

网友评论

  • 秋天的橘子:你好, 问一下,微信的sdk分享10s的视频到朋友圈可以吗?小视频类型,不是url的类型。
    75afc06dcc73:@秋天的橘子 目前没有看到有这样的api。

本文标题:微信SDK功能一步搞定

本文链接:https://www.haomeiwen.com/subject/xmhgkxtx.html