美文网首页
支付宝与微信支付

支付宝与微信支付

作者: xjqDreams | 来源:发表于2017-03-28 16:02 被阅读0次

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

}

}];

}

相关文章

  • Android支付封装(微信+支付宝)

    支付宝支付:Android支付宝支付详解微信支付参考:android微信支付详解与坑官方文档:App支付Andro...

  • 微信再度宣战支付宝!马化腾:没有竞争,没有促进发展

    支付宝与微信的竞争是有目共睹的,尤其是在移动支付上,支付宝与微信占据了中国的整个市场,而微信和支付宝哪家更强呢?网...

  • POS机使用方法

    请餐饮收银注意一下这个是支付宝与微信方式的预授权担保 这个是支付宝与微信方式的预授权完成 这个是支付宝与微信方式的...

  • 银联与微信支付宝上演三国杀,谁会是最后的赢家?

    微信与支付宝在移动支付领域竞争一直处于水深火热之中,同时微信与支付宝都沉淀了很多用户,二维码支付也已被微信和支付宝...

  • 2019-08-19

    blog在线点单备案图标微信公众号微信支付微信赞赏支付宝出行红包支付宝支付支付宝红包

  • iOS支付

    支付宝支付 支付宝支付支付宝补充 微信支付 微信支付 内购 iOS开发 内购流程

  • iOS-快速集成支付宝支付、微信支付的管理类

    一:封装支付宝支付 调起支付宝及其通知结果处理: 二:封装微信支付 调起微信及其通知结果处理: 最后 微信和支付宝...

  • 微信小程序和支付宝小程序区别

    app.json中区别 微信: 支付宝 微信 支付宝

  • 2017-12-13

    银联 云闪付 与微信支付 与支付宝 数字化货币,当微信支付,和支付宝 使用的人越来越多,越来越普及,支付无现金化,...

  • 2017-12-13 -日记

    银联 云闪付 与微信支付 与支付宝 数字化货币,当微信支付,和支付宝 使用的人越来越多,越来越普及,支付无现金化,...

网友评论

      本文标题:支付宝与微信支付

      本文链接:https://www.haomeiwen.com/subject/flvjottx.html