支付宝与微信支付

一.微信支付(具体参考:https://open.weixin.qq.com/cgi-bin/frame?t=home/app_tmpl&lang=zh_CN)

<1>.使用前准备

对项目的key进行注册(获取微信的appID)

导入微信需要支持的包(libWeChatSDK.a, WXApi.h, WXApiObject.h)

在URL Types中进行weixin的一些信息配置。

<2>.使用微信支付

1.在需要使用的类中导入#import"WXApi.h",并且设置WXApiDelegate代理。

2.在调起微信支付中,注册微信完成的通知,等待微信支付完成进行调用。(进行一些页面跳转的调用)。

3.调用微信支付的接口:ensureDic是从后台请求到的数据。

PayReq*request = [[PayReqalloc]init];

request.partnerId= [ensureDic objectForKey:@"partnerid"];

request.prepayId= [ensureDic objectForKey:@"prepayid"];

request.package= [ensureDic objectForKey:@"package"];

request.nonceStr= [ensureDic objectForKey:@"noncestr"];

request.timeStamp= [[ensureDic objectForKey:@"timestamp"]intValue];

request.sign= [ensureDic objectForKey:@"sign"];

//[WXApi handleOpenURL:nil delegate:self];

[WXApisendReq:request];


/*

不能直接在delegate.m这个文件做界面条状,原因:你的self对象指的是delegate对象本身,这个对象没有导航控制器所以直接在方法中实现跳转不起作用,所以注册一个通知让其跳转

*/

- (void)onResp:(BaseResp*)resp{

NSString*strMsg = [NSStringstringWithFormat:@"errcode:%d",resp.errCode];

NSString*strTitle;

if([respisKindOfClass:[SendMessageToWXRespclass]]) {

strTitle = [NSStringstringWithFormat:@"发送媒体消息结果"];

}

if([respisKindOfClass:[PayRespclass]]) {

strTitle = [NSStringstringWithFormat:@"支付结果"];

switch(resp.errCode) {

caseWXSuccess:{

strMsg =@"支付结果:成功";

NSLog(@"支付成功=%d",resp.errCode);

[[NSNotificationCenterdefaultCenter]postNotificationName:@"weiXiPaySuccess"object:niluserInfo:nil];

}

break;

default:{

strMsg = [NSStringstringWithFormat:@"支付结果:失败!retcide = %d,retstr = %@",resp.errCode,resp.errStr];

NSLog(@"错误,retcode = %d,retstr = %@",resp.errCode,resp.errStr);

UIAlertView*alert = [[UIAlertViewalloc]initWithTitle:@"提示"message:@"支付失败"delegate:selfcancelButtonTitle:nilotherButtonTitles:@"确定",nil];

alert.tag=100;

[alertshow];

}

break;

}

}

}


//支付成功调用方法(之前注册了微信支付的通知)

- (void)chickWeiXiBtn{

PaySuccessViewController*paySuccessVC = [[PaySuccessViewControlleralloc]init];

paySuccessVC.trade_id=trade_id;

[self.navigationControllerpushViewController:paySuccessVCanimated:YES];

}

4.在AppDelegate.mm类中需要进行一些回调操作(是对支付的一些情况的判断和结果的处理)

//微信支付注册APPID

[WXApiregisterApp:WX_APP_IDwithDescription:@"QinWillWine"];

- (BOOL)application:(UIApplication*)application openURL:(nonnullNSURL*)url sourceApplication:(nullableNSString*)sourceApplication annotation:(nonnullid)annotation{

BOOLisSuc = [WXApihandleOpenURL:urldelegate:[[EnsureOrderViewController alloc]init]];

NSLog(@"url%@isSuc%d",url,isSuc ==YES?1:0);

returnisSuc;

注释:EnsureOrderViewController表示调起支付的页面。


二.支付宝支付(具体参考:https://doc.open.alipay.com/docs/doc.htm?spm=a219a.7629140.0.0.4Pi76I&treeId=193&articleId=105299&docType=1)

<1>.使用前准备

1.注册相应的key值。

2.导入AlipaySDK.bundle、AlipaySDK.framework框架。

<2>.使用支付宝支付

1.在需要使用的页面导入#import<AlipaySDK/AlipaySDK.h>

2.调用支付宝支付接口:

NSString*oderString =nil;

//应用注册scheme,在info.plist定义URL type,用于快捷支付成功后重新唤起商户应用

NSString*appScheme =@"qinwillwineapp";

NSString*signedString = [ensureDicobjectForKey:@"sign"];

NSString*orderSpec = [ensureDicobjectForKey:@"str"];

//oderSpec表示支付宝支付的一个网页信息

if(signedString !=nil) {

oderString = [NSStringstringWithFormat:@"%@&sign=\"%@\"&sign_type=\"%@\"",

orderSpec, signedString,@"RSA"];

NSLog(@"orderStr = %@\n\n",oderString);

//获取快捷支付单例并且调用快捷支付接口

[[AlipaySDKdefaultService]payOrder:oderStringfromScheme:appSchemecallback:^(NSDictionary*resultDic) {

NSLog(@"支付宝支付返回的结果:%@",resultDic);

if([[resultDicobjectForKey:@"resultStatus"]isEqualToString:@"9000"]) {

NSLog(@"支付宝支付成功!");

PaySuccessViewController*paySuccessVC = [[PaySuccessViewControlleralloc]init];

paySuccessVC.trade_id=trade_id;

[self.navigationControllerpushViewController:paySuccessVCanimated:YES];

}

else{

UIAlertView*alert = [[UIAlertViewalloc]initWithTitle:@"提示"message:@"支付宝支付失败"delegate:selfcancelButtonTitle:nilotherButtonTitles:@"queren",nil];

alert.tag=100;

[alertshow];

}

}];

}

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 213,558评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,002评论 3 387
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 159,036评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,024评论 1 285
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,144评论 6 385
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,255评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,295评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,068评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,478评论 1 305
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,789评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,965评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,649评论 4 336
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,267评论 3 318
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,982评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,223评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,800评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,847评论 2 351

推荐阅读更多精彩内容

  • ps:先来支付宝的。首先集成支付宝的SDK,这个真心是运气加上技术相结合才行~有时候一样的工程,就是给你报错~你能...
    临渊还在阅读 1,432评论 0 2
  • iOS支付 iOS支付分为两类,第三方支付和应用内支付(内购)。 第三方支付包括:支付宝支付、微信支付、银联支付、...
    帅不过oneS阅读 2,871评论 2 8
  • 前言 年末了,一直在忙项目,很少有时候写一些自己的见解。今天挤出一点时间来写一下刚刚完成的微信的支付和跳转到微信的...
    沉默学飞翔阅读 1,471评论 0 5
  • 本人接触Node.js比较早,早期0.x.x版本Node.js不支持Promise,所以基本上都是回调! 都知道N...
    Sunil阅读 227评论 0 0
  • title: WIRESHARK初识date: 2016-04-11 08:48:52tags: kali第五章 ...
    曼路x_x阅读 7,102评论 1 2