1、首先在微信开放平台上创建应用,并按照开放平台上的步骤把SDK接入,配置环境(这些步骤微信开放平台写的很清楚,下面我主要写一些开放平台没有,或者需要注意的地方)
2、导入头文件#import "WXApi.h"(如果报错,则是缺少某些类库或者静态库和头文件路径没有设置好,请仔细查看并按照开放平台的步骤检查
3、注册
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
[WXApi registerApp:@"此处是你在微信开放平台上创建的app的appid"];
}
4、iOS 8.0以下重写下面两个方法
-(BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url{
if([url.scheme isEqualToString:@"此处是上面开放平台步骤中的URL scheme的值"]){
return [WXApi handleOpenURL:url delegate:self];
}
return YES;
}
-(BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation{
if([url.scheme isEqualToString:@"此处是上面开放平台步骤中的URL scheme的值"]){
return [WXApi handleOpenURL:url delegate:self];
}
return YES;
}
5、iOS 9.0以上实现下面的方法(也就是说,如果app要兼容iOS 8.0以上,则步骤4的两个方法和这个方法都要实现)
//iOS9.0以上使用
- (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary<NSString*, id> *)options {
if ([url.scheme isEqualToString:@"URL scheme 的值"]) {
return [WXApi handleOpenURL:url delegate:self];
}
return YES;
}
6、微信代理方法的实现
//发起支付请求回调
-(void)onReq:(BaseReq *)req{
}
//支付结果回调
-(void)onResp:(BaseResp *)resp{
if ([resp isKindOfClass:[PayResp class]]){
PayResp *response = (PayResp*)resp;
//response.errCode
// WXSuccess = 0, /**< 成功 */
// WXErrCodeCommon = -1, /**< 普通错误类型 */
// WXErrCodeUserCancel = -2, /**< 用户点击取消并返回 */
// WXErrCodeSentFail = -3, /**< 发送失败 */
// WXErrCodeAuthDeny = -4, /**< 授权失败 */
// WXErrCodeUnsupport = -5, /**< 微信不支持 */
}
}
7、发起支付
//下面几个参数由后台返回,移动端不做处理
PayReq *request = [[PayReq alloc] init];
request.partnerId = sign[@"partnerid"];
request.prepayId= sign[@"prepayid"];
request.package = sign[@"package"];
request.nonceStr= sign[@"noncestr"];
request.timeStamp= [sign[@"timestamp"] intValue];
request.sign= sign[@"sign"];
[WXApi sendReq:request];
注意:为了支付完成后能成功返回app,需要在info.plist文件中设置URL scheme,并且这个值是唯一的(最好填写bundel id 或者开放平台上的app ID),详细步骤在微信开放平台的接入文档有