1、首先在微信開放平臺上創(chuàng)建應(yīng)用,并按照開放平臺上的步驟把SDK接入,配置環(huán)境(這些步驟微信開放平臺寫的很清楚,下面我主要寫一些開放平臺沒有,或者需要注意的地方)
2、導(dǎo)入頭文件#import "WXApi.h"(如果報錯,則是缺少某些類庫或者靜態(tài)庫和頭文件路徑?jīng)]有設(shè)置好,請仔細查看并按照開放平臺的步驟檢查
3、注冊
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
[WXApi registerApp:@"此處是你在微信開放平臺上創(chuàng)建的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以上實現(xiàn)下面的方法(也就是說,如果app要兼容iOS 8.0以上,則步驟4的兩個方法和這個方法都要實現(xiàn))
//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、微信代理方法的實現(xiàn)
//發(fā)起支付請求回調(diào)
-(void)onReq:(BaseReq *)req{
}
//支付結(jié)果回調(diào)
-(void)onResp:(BaseResp *)resp{
if ([resp isKindOfClass:[PayResp class]]){
PayResp *response = (PayResp*)resp;
//response.errCode
// WXSuccess = 0, /**< 成功 */
// WXErrCodeCommon = -1, /**< 普通錯誤類型 */
// WXErrCodeUserCancel = -2, /**< 用戶點擊取消并返回 */
// WXErrCodeSentFail = -3, /**< 發(fā)送失敗 */
// WXErrCodeAuthDeny = -4, /**< 授權(quán)失敗 */
// WXErrCodeUnsupport = -5, /**< 微信不支持 */
}
}
7、發(fā)起支付
//下面幾個參數(shù)由后臺返回,移動端不做處理
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文件中設(shè)置URL scheme,并且這個值是唯一的(最好填寫bundel id 或者開放平臺上的app ID),詳細步驟在微信開放平臺的接入文檔有