支付宝与微信支付

一.微信支付(具体参考: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];

}

}];

}

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

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