欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

iOS開發(fā)微信支付的方法

 更新時間:2022年01月27日 10:29:36   作者:Frank_春兒  
這篇文章主要為大家詳細介紹了iOS開發(fā)微信支付的方法,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下

本文實例為大家分享了iOS開發(fā)微信支付的具體代碼,供大家參考,具體內(nèi)容如下

首先我們到微信開放平臺,下載相應的SDK。微信的官方文檔感覺說的很簡單,沒有支付寶那么詳細,在這里說下集成SDK到我們的工程中。

下載好demol后(最新版本SDKSample_v2.0.2_V3pay),看到有個SDKExport的文件;

你可以直接將這個文件夾添加到你的工程中,或者你自己新建一個文件夾,將里面那三個文件粘貼到你新建的文件夾中,并添加到你的工程中;

接下來就是添加相應地庫文件;

我們看到demol中有個WXApiManager.h和WXApiManager.m文件,因為他里面會用到,所以這里我們直接將demol中的這兩個文件也拖進我們工程中;

庫文件添加好之后,就是實現(xiàn)我們的微信支付功能;

點擊支付的button,完成支付;

引入頭文件:

#import "ViewController.h"
#import "WXApiObject.h"
#import "WXApi.h"

- (void)viewDidLoad {
? ? [super viewDidLoad];

? ? UIButton * btn = [UIButton buttonWithType:UIButtonTypeCustom];
? ? btn.frame =CGRectMake(100, 100, 100, 50);
? ? [btn setTitle:@"點擊支付" forState:UIControlStateNormal];
? ? btn.backgroundColor = [UIColor magentaColor];
? ? [btn addTarget:self action:@selector(weixinPay) forControlEvents:UIControlEventTouchUpInside];
? ? [self.view addSubview:btn];

}
//在這里我們要判斷用戶是否安裝微信,如果未安裝是不能夠支付,因為微信不支持網(wǎng)頁支付,不像支付寶那樣,如果用戶未安裝支付寶,它會自動跳轉網(wǎng)頁支付,如果安裝,則會跳轉到支付寶客戶端進行支付;微信則不可以,所以要判斷下;
- (void)weixinPay {
//判斷用戶是否安裝微信
? if ([WXApi isWXAppInstalled]) {
? ? ? ? ?NSString *res = [self doClickZhiFu];
? ? ? ? ?if( ![@"" isEqual:res] ){
? ? ? ? UIAlertView *alter = [[UIAlertView alloc] initWithTitle:@"支付失敗" message:res delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil];
? ? ? ? [alter show];
? ? ? ? ?}
? ? ? }else{
? ? ? //未安裝微信給出提示信息
? ? ? ? ?MBProgressHUD * hud = [MBProgressHUD showHUDAddedTo:self.view animated:YES];
? ? ? ? ? ? hud.mode = MBProgressHUDModeText;
? ? ? ? ? ? hud.labelText = @"您未安裝微信,請選擇其他方式支付!";
? ? ? ? ? ? hud.labelFont = [UIFont systemFontOfSize:13];
? ? ? ? ? ? hud.removeFromSuperViewOnHide = YES;
? ? ? ? ? ? hud.color = [UIColor grayColor];
? ? ? ? ? ? hud.minSize = CGSizeMake(300, 100);
? ? ? ? ? ? [hud hide:YES afterDelay:2];

? ? ? ?}


}

- (NSString *)doClickZhiFu
{
? ? //============================================================
? ? // V3&V4支付流程實現(xiàn)
? ? // 注意:參數(shù)配置請查看服務器端Demo
? ? // 更新時間:2015年11月20日
? ? //============================================================
? ? //在那里使用的url是微信里面的,在實際開發(fā)中,換成我們自己的url即可,讓后臺返回的參數(shù)就按照微信里面的來,這樣我們下邊就不用改什么了,只換個url即可(需要跟后臺商定,一般都是需要傳參數(shù)的);
? ? NSString *urlString ? = @"http://wxpay.weixin.qq.com/pub_v2/app/app_pay.php?plat=ios";
? ? //解析服務端返回json數(shù)據(jù)
? ? NSError *error;
? ? //加載一個NSURL對象
? ? NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:urlString]];
? ? //將請求的url數(shù)據(jù)放到NSData對象中
? ? NSData *response = [NSURLConnection sendSynchronousRequest:request returningResponse:nil error:nil];
? ? if ( response != nil) {
? ? ? ? NSMutableDictionary *dict = NULL;
? ? ? ? //IOS5自帶解析類NSJSONSerialization從response中解析出數(shù)據(jù)放到字典中
? ? ? ? dict = [NSJSONSerialization JSONObjectWithData:response options:NSJSONReadingMutableLeaves error:&error];
? ? ? ? if(dict != nil){
? ? ? ? ? ? NSMutableString *retcode = [dict objectForKey:@"retcode"];
? ? ? ? ? ? if (retcode.intValue == 0){
? ? ? ? ? ? ? ? NSMutableString *stamp ?= [dict objectForKey:@"timestamp"];

? ? ? ? ? ? ? ? //這里的數(shù)據(jù)就是從上面那個url請求之后獲取到消息結構體里面的內(nèi)容
? ? ? ? ? ? ? ? //調起微信支付
? ? ? ? ? ? ? ? PayReq* req ? ? ? ? ? ? = [[PayReq alloc] init];
? ? ? ? ? ? ? ? req.partnerId ? ? ? ? ? = [dict objectForKey:@"partnerid"];
? ? ? ? ? ? ? ? req.prepayId ? ? ? ? ? ?= [dict objectForKey:@"prepayid"];
? ? ? ? ? ? ? ? req.nonceStr ? ? ? ? ? ?= [dict objectForKey:@"noncestr"];
? ? ? ? ? ? ? ? req.timeStamp ? ? ? ? ? = stamp.intValue;
? ? ? ? ? ? ? ? req.package ? ? ? ? ? ? = [dict objectForKey:@"package"];
? ? ? ? ? ? ? ? req.sign ? ? ? ? ? ? ? ?= [dict objectForKey:@"sign"];
? ? ? ? ? ? ? ? //最關鍵的就是這里發(fā)送請求到微信,
? ? ? ? ? ? ? ? [WXApi sendReq:req];
? ? ? ? ? ? ? ? //日志輸出
? ? ? ? ? ? ? ? NSLog(@"appid=%@\npartid=%@\nprepayid=%@\nnoncestr=%@\ntimestamp=%ld\npackage=%@\nsign=%@",[dict objectForKey:@"appid"],req.partnerId,req.prepayId,req.nonceStr,(long)req.timeStamp,req.package,req.sign );
? ? ? ? ? ? ? ? return @"";
? ? ? ? ? ? }else{
? ? ? ? ? ? ? ? return [dict objectForKey:@"retmsg"];
? ? ? ? ? ? }
? ? ? ? }else{
? ? ? ? ? ? return @"服務器返回錯誤,未獲取到json對象";
? ? ? ? }
? ? }else{
? ? ? ? return @"服務器返回錯誤";
? ? }


}

在AppDelegate.h操作,引入頭文件

#import "AppDelegate.h"
#import "WXApi.h"
#import "WXApiManager.h"

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
? ? // Override point for customization after application launch.
? ? //向微信注冊wxd930ea5d5a258f4f,在微信平臺注冊后獲取的
? ? [WXApi registerApp:@"wxb4ba3c02aa476ea1" withDescription:@"demo 2.0"];

? ? return YES;
}
//微信支付回調的結果,在這里可以做你想要的操作
- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation {
//寫了一個單例來處理微信支付結果的回調,處理在WXApiManager文件中操作
? ? return [WXApi handleOpenURL:url delegate:[WXApiManager sharedManager]];
}

在WXApiManager.h文件中會有個微信支付的支付結果回調,在這里可以處理你要的業(yè)務邏輯操作,如跳轉到指定頁面等等,方法可以使用通知,參照iOS 支付寶使用文章中的支付結果的處理;

#pragma mark - WXApiDelegate
- (void)onResp:(BaseResp *)resp {
? ? if ([resp isKindOfClass:[SendMessageToWXResp class]]) {
? ? ? ? if (_delegate
? ? ? ? ? ? && [_delegate respondsToSelector:@selector(managerDidRecvMessageResponse:)]) {
? ? ? ? ? ? SendMessageToWXResp *messageResp = (SendMessageToWXResp *)resp;
? ? ? ? ? ? [_delegate managerDidRecvMessageResponse:messageResp];
? ? ? ? }
? ? } else if ([resp isKindOfClass:[SendAuthResp class]]) {
? ? ? ? if (_delegate
? ? ? ? ? ? && [_delegate respondsToSelector:@selector(managerDidRecvAuthResponse:)]) {
? ? ? ? ? ? SendAuthResp *authResp = (SendAuthResp *)resp;
? ? ? ? ? ? [_delegate managerDidRecvAuthResponse:authResp];
? ? ? ? }
? ? } else if ([resp isKindOfClass:[AddCardToWXCardPackageResp class]]) {
? ? ? ? if (_delegate
? ? ? ? ? ? && [_delegate respondsToSelector:@selector(managerDidRecvAddCardResponse:)]) {
? ? ? ? ? ? AddCardToWXCardPackageResp *addCardResp = (AddCardToWXCardPackageResp *)resp;
? ? ? ? ? ? [_delegate managerDidRecvAddCardResponse:addCardResp];
? ? ? ? }
? ? }else if([resp isKindOfClass:[PayResp class]]){
? ? ? ? //支付返回結果,實際支付結果需要去微信服務器端查詢
? ? ? ? NSString *strMsg,*strTitle = [NSString stringWithFormat:@"支付結果"];

? ? ? ? switch (resp.errCode) {
? ? ? ? ? ? case WXSuccess:{
? ? ? ? ? ? ? ? strMsg = @"支付結果:成功!";
? ? ? ? ? ? ? ? break;
? ? ? ? ? ? }
? ? ? ? ? ? default:{
? ? ? ? ? ? ? ? strMsg = [NSString stringWithFormat:@"支付結果:失敗!retcode = %d, retstr = %@", resp.errCode,resp.errStr];
? ? ? ? ? ? ? ? break;
? ? ? ? ? ? }
? ? ? ? }
? ? ? ? UIAlertView *alert = [[UIAlertView alloc] initWithTitle:strTitle message:strMsg delegate:self cancelButtonTitle:@"取消" otherButtonTitles:nil, nil];
? ? ? ? [alert show];
? ? }

}

以下為可能出現(xiàn)錯誤:

有時候你會發(fā)現(xiàn)在測試的時候,點擊微信支付,調到微信界面時只有一個確定按鈕,出現(xiàn)這樣的情況大多數(shù)都是我們簽名錯誤,才導致的;

1.檢查接口傳遞的字段是否都正確;

2.package = @”Sign=WXPay” 注意服務器傳來的是不是一樣的,不是就會出現(xiàn)錯誤;

3.如果你app同時使用了友盟分享(含微信分享)和微信支付。如果你沒有處理好這個兩個SDK register的順序,就會出現(xiàn)這種情況。

解決辦法:改變兩者的register步驟。先調用友盟,然后調用微信。

以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關文章

  • iOS獲取網(wǎng)絡類型的方法匯總

    iOS獲取網(wǎng)絡類型的方法匯總

    本篇文章主要給大家匯總介紹了iOS獲取網(wǎng)絡類型的方法,主要涉及到方面的內(nèi)容,對于IOS開發(fā)感興趣的同學可以參考一下
    2015-06-06
  • 微信支付開發(fā)IOS圖文教程案例

    微信支付開發(fā)IOS圖文教程案例

    這篇文章主要介紹了微信支付開發(fā)IOS案例的相關資料,需要的朋友可以參考下
    2016-04-04
  • Objective-C?入門篇(推薦)

    Objective-C?入門篇(推薦)

    由C語言和Smalltalk擴展出來的,是C語言的超集,最大的區(qū)別是OC是面向對象的,其火星文寫法對于之前從事Java開發(fā)的同學頗感蛋疼,OC最大特點之一是使用消息結構而不是函數(shù)調用
    2021-11-11
  • IOS中NSPredicate和NSRegularExpression校驗正則表達式區(qū)別

    IOS中NSPredicate和NSRegularExpression校驗正則表達式區(qū)別

    本文文章通過實例代碼給大家講述了在IOS開發(fā)中NSPredicate和NSRegularExpression校驗正則表達式區(qū)別,需要的朋友趕快學習下吧。
    2018-01-01
  • 基于IOS端微信分享失效的踩坑及解決方法

    基于IOS端微信分享失效的踩坑及解決方法

    下面小編就為大家分享一篇基于IOS端微信分享失效的踩坑及解決方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-01-01
  • 解析iOS應用開發(fā)中對設計模式中的抽象工廠模式的實現(xiàn)

    解析iOS應用開發(fā)中對設計模式中的抽象工廠模式的實現(xiàn)

    這篇文章主要介紹了解析iOS應用開發(fā)中對設計模式中的抽象工廠模式的實現(xiàn),示例代碼為傳統(tǒng)的Objective-C,需要的朋友可以參考下
    2016-03-03
  • iOS開發(fā)教程之登錄與訪客的邏輯實現(xiàn)

    iOS開發(fā)教程之登錄與訪客的邏輯實現(xiàn)

    這篇文章主要給大家介紹了關于iOS開發(fā)教程之登錄與訪客的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧。
    2018-04-04
  • iOS開發(fā)Masonry與Frame布局差異示例詳解

    iOS開發(fā)Masonry與Frame布局差異示例詳解

    這篇文章主要為大家介紹了iOS開發(fā)Masonry與Frame布局差異示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-11-11
  • iOS高仿微信相冊界面翻轉過渡動畫效果

    iOS高仿微信相冊界面翻轉過渡動畫效果

    在圖片界面點擊右下角的查看評論會翻轉到評論界面,評論界面點擊左上角的返回按鈕會反方向翻轉回圖片界面,真正的實現(xiàn)方法,與傳統(tǒng)的導航欄過渡其實只有一行代碼的區(qū)別,下面小編通過本文給大家介紹下ios高仿微信相冊界面翻轉過渡動畫效果,一起看看吧
    2016-11-11
  • IOS實現(xiàn)簡易版的QQ下拉列表

    IOS實現(xiàn)簡易版的QQ下拉列表

    在我們?nèi)粘i_發(fā)中tableView是用的非常多的控件, 無論在新聞應用, 視頻, 聊天應用中都廣泛使用, 那么今天小編也分享一個用tableView實現(xiàn)的類似QQ界面的下拉列表.效果很簡單,有需要的朋友們可以參考借鑒。
    2016-08-08

最新評論