前言:
~* 之前写过一篇轻松搞定iOS微信支付/订单查询反响不错,但是在后续的使用中发现了一个问题。那就是无法与微信的其它业务共存,比如登录、分享。这可怎么办啊。
后来经过测试发现微信SDK的所有功能都使用了同一个block做为回调函数(全世界都知道的事还要你bb
),于是DWWXSDK就出现了。DWWXSDK基于最新版微信SDK(目前是1.7.8
),支持微信登录、微信分享、微信支付&订单查询。*
![](https://img.haomeiwen.com/i1335361/67d3f9ebee855a70.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); }];
![](https://img.haomeiwen.com/i1335361/ec0dc0e79eeec7bd.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); }];
![](https://img.haomeiwen.com/i1335361/d14394999af9995b.jpeg)
网友评论