简聊iOS支付集成(支付宝和微信支付)

一.支付集成是什么

1.现在大部分app都有快捷支付功能,支付集成将第三方支付平台集成到自己的项目中,能够完成自己项目中的支付功能,

二.支付集成的使用

<1>.支付宝:

下载SDK和Demo:https://doc.open.alipay.com/doc2/detail.htm?treeId=54&articleId=104509&docType=1

配置相关信息:

1.导入SDK:

AlipaySDK.bundle

AlipaySDK.framework

2.配置静态库:在Build Phases选项卡的Link Binary With Libraries中

3.需要注意的是参考官方文档:https://doc.open.alipay.com/doc2/detail.htm?spm=a219a.7629140.0.0.vc3vZv&treeId=59&articleId=103677&docType=1

到此刻如果command+B的话没有报错,,说明你已经成功了,下面就要上代码了:

4.1在你点击支付的按钮的点击事件中写上如下代码

//向支付宝发送请求

1  [[AlipaySDK defaultService] payOrder:orderString fromScheme:appScheme callback:^(NSDictionary *resultDic) {
2
3             NSLog(@"reslut = %@",resultDic);
4
5         }];

这里面有必要解释一下.,orderString 是后台返回来的,是一个已经签名的字符串,支付宝的demo是前端进行签名的,为了安全,签名应该放在后台进行管理

4.2 在AppDelegate.m 导入头文件

#import <AlipaySDK/AlipaySDK.h>

并写下如下代码,这个函数主要作用是,从支付宝客户端返回到商户客户端的时候调用,在这里返回支付的结果状态

 1 #pragma mark -----当从支付宝客户端返回到商户客户端的时候调用
 2 - (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary<NSString*, id> *)options
 3 {
 4     5         //跳转支付宝钱包进行支付,处理支付结果
 6         [[AlipaySDK defaultService] processOrderWithPaymentResult:url standbyCallback:^(NSDictionary *resultDic) {
 7             NSString* message;
 8
 9             switch([[resultDic objectForKey:@"resultStatus"] integerValue])
10             {
11                 case 9000:message = @"订单支付成功";break;
12                 case 8000:message = @"正在处理中";break;
13                 case 4000:message = @"订单支付失败";break;
14                 case 6001:message = @"用户中途取消";break;
15                 case 6002:message = @"网络连接错误";break;
16                 default:message = @"未知错误";
17             }
18             UIAlertController *aalert = [UIAlertController alertControllerWithTitle:nil
19                                                                             message:message
20                                                                      preferredStyle:UIAlertControllerStyleAlert];
21             [aalert addAction:[UIAlertAction actionWithTitle:@"好的" style:UIAlertActionStyleCancel handler:nil]];
22             UIViewController *root = self.window.rootViewController;
23             [root presentViewController:aalert animated:YES completion:nil];        }];
24          return YES;
25       }   恭喜你到此你的支付宝已经集成成功了

<2>微信支付:

1.下载SDK:https://pay.weixin.qq.com/wiki/doc/api/app/app.php?chapter=11_1

导入SDK和文件:

libWeChatSDK.a

WechatAuthSDK.h

WXApi.h

WXApiObject.h

2.配置相关的静态库

3.配置URL Schemes:箭头指向的商户自己的AppID

在此刻Commd+B如果不报错,说明你集成成功了,

下面就添加代码了

4.创建集成:NSObject的WXApiManager.h的微信管理类

WXApiManager.h文件代码如下:

 1 //
 2 //  WXApiManager.h
 3 //  支付集成
 4 //
 5 //  Created by HYYT_IOS_ONE on 16/5/14.
 6 //  Copyright © 2016年 圣哥哥. All rights reserved.
 7 //
 8
 9 #import <Foundation/Foundation.h>
10 #import "WXApi.h"
11
12 @protocol WXApiManagerDelegate <NSObject>
13
14 @optional
15
16
17 @end
18
19 @interface WXApiManager : NSObject<WXApiDelegate>
20
21 @property (nonatomic, assign) id<WXApiManagerDelegate> delegate;
22
23 + (instancetype)sharedManager;
24
25
26 @end

WXApiManager.m文件代码如下:

 1 //
 2 //  WXApiManager.m
 3 //  支付集成
 4 //
 5 //  Created by HYYT_IOS_ONE on 16/5/14.
 6 //  Copyright © 2016年 圣哥哥. All rights reserved.
 7 //
 8
 9 #import "WXApiManager.h"
10
11
12 @implementation WXApiManager
13
14 #pragma mark - LifeCycle
15 +(instancetype)sharedManager {
16     static dispatch_once_t onceToken;
17     static WXApiManager *instance;
18     dispatch_once(&onceToken, ^{
19         instance = [[WXApiManager alloc] init];
20     });
21     return instance;
22 }
23
24 - (void)dealloc {
25
26 }
27
28 #pragma mark -----实现微信的代理
29
30 - (void)onResp:(BaseResp *)resp{
31
32     if([resp isKindOfClass:[PayResp class]]){
33         //支付返回结果,实际支付结果需要去微信服务器端查询
34         NSString *strMsg,*strTitle = [NSString stringWithFormat:@"支付结果"];
35
36         switch (resp.errCode) {
37             case WXSuccess:
38                 strMsg = @"支付结果:成功!";
39                 NSLog(@"支付成功-PaySuccess,retcode = %d", resp.errCode);
40                 break;
41
42             default:
43                 strMsg = [NSString stringWithFormat:@"支付结果:失败!retcode = %d, retstr = %@", resp.errCode,resp.errStr];
44                 NSLog(@"错误,retcode = %d, retstr = %@", resp.errCode,resp.errStr);
45                 break;
46         }
47         UIAlertView *alert = [[UIAlertView alloc] initWithTitle:strTitle message:strMsg delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil, nil];
48         [alert show];
49
50     }
51
52 }
53
54
55 @end

在AppDelegate.m文件中导入头文件

#import "WXApiManager.h"

写下如下代码

[WXApi registerApp:@"wxb4ba3c02aa476ea1" withDescription:@"demo 2.0"];

 1 #pragma mark -----当从客户端返回到商户客户端的时候调用
 2 - (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary<NSString*, id> *)options
 3 {
 4     return [WXApi handleOpenURL:url delegate:[WXApiManager sharedManager]]; }

最后在点击事件的文件中添加头文件

#import "WXApi.h"

#import "WXApiManager.h"

并写上以下代码就大功告成

 1 #pragma mark ----微信支付
 2 - (NSString *)jumpToBizPay {
 3     //============================================================
 4     // V3&V4支付流程实现
 5     // 注意:参数配置请查看服务器端Demo
 6     // 更新时间:2015年11月20日
 7     //============================================================
 8     NSString *urlString   = @"http://wxpay.weixin.qq.com/pub_v2/app/app_pay.php?plat=ios";
 9     //解析服务端返回json数据
10     NSError *error;
11     //加载一个NSURL对象
12     NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:urlString]];
13     //将请求的url数据放到NSData对象中
14     NSData *response = [NSURLConnection sendSynchronousRequest:request returningResponse:nil error:nil];
15     if ( response != nil) {
16         NSMutableDictionary *dict = NULL;
17         //IOS5自带解析类NSJSONSerialization从response中解析出数据放到字典中
18         dict = [NSJSONSerialization JSONObjectWithData:response options:NSJSONReadingMutableLeaves error:&error];
19
20         NSLog(@"url:%@",urlString);
21         if(dict != nil){
22             NSMutableString *retcode = [dict objectForKey:@"retcode"];
23             if (retcode.intValue == 0){
24                 NSMutableString *stamp  = [dict objectForKey:@"timestamp"];
25                 //调起微信支付
26                 PayReq* req             = [[PayReq alloc] init];
27                 req.partnerId           = [dict objectForKey:@"partnerid"];
28                 req.prepayId            = [dict objectForKey:@"prepayid"];
29                 req.nonceStr            = [dict objectForKey:@"noncestr"];
30                 req.timeStamp           = stamp.intValue;
31                 req.package             = [dict objectForKey:@"package"];
32                 req.sign                = [dict objectForKey:@"sign"];
33                 [WXApi sendReq:req];
34                 //日志输出
35                 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 );
36                 return @"";
37             }else{
38                 return [dict objectForKey:@"retmsg"];
39             }
40         }else{
41             return @"服务器返回错误,未获取到json对象";
42         }
43     }else{
44         return @"服务器返回错误";
45     }
46 }

总结:在集成第三方的时候,一般先导入库,然后配置依赖库,最后做好相关配置,,基本上就大工告成

时间: 2024-11-03 05:27:50

简聊iOS支付集成(支付宝和微信支付)的相关文章

iOS 支付宝、微信支付的集成记录

一.前言 最近项目需求需要集成支付宝和微信支付,以前没有接触过,这次正好乘着这次机会了解下. 总的来说,客户端的工作不多,无非就是就是集成SDK,然后获取后端传来的参数,吊起支付,回调处理等. 先附上官方文档链接: 支付宝:https://docs.open.alipay.com/204 微信支付:https://pay.weixin.qq.com/wiki/doc/api/app/app.php?chapter=8_1 废话不多说,开始吧. 二.支付宝 1.先集成SDK pod 'Alipay

iOS app集成支付宝支付流程及后台php订单签名处理

iOS app集成支付宝支付流程 1: 开通支付宝商户 由公司去支付宝 https://b.alipay.com/order/serviceIndex.htm 签约支付宝开通支付宝商家: 2:商户支付宝开通无线支付功能 开通商户支付宝之后,虽然可以获取到应用使用的 key和id,如果如果不开通无线支付功能的话,会在app集成的时间 提示商户未开通无线支付功能的错误: 开通商户支付宝-无线支付功能,请在商户支付宝后台,按要求提供审核材料开通: 3:在商户支付宝后台下载SDK 在商户支付宝后台,即可

Android 支付宝以及微信支付快速接入流程

简介 随着移动支付的普及,越来越多的App采用第三发支付,在这里我们以支付宝为例,做一个快速集成! 一.Android快速实现支付宝支付 1.首先,我们需要前往支付宝开放平台,申请我们的支付功能:https://open.alipay.com/platform/home.htm 支付宝首页 这里 有两个需要注意的地方 一个是管理中心,另外一个是我的支付宝 管理中心: 管理中心 管理中心 我们需要 创建一个应用 提交给支付宝进行审核. 我的支付宝: 在这里我的支付宝 是一个商户版,一会我们会需要在

支付宝和微信支付的各种填坑

填坑 支付宝填坑是每个接入支付宝必经之路,下面是我接入支付宝遇到的问题汇总,希望大家在接入的路上少一点弯路 问题1. Util/base64.h:63:21: Cannot find interface declaration for ‘NSObject’, superclass of ‘Base64’ 解决办法: 这是base64.h中没有加入#import 系统库文件导致,这个错误报错方法直接想喷它一脸.报错方式太恶心. 1 2 解决办法: 这是base64.h中没有加入#import  系

10分钟搞定支付宝和微信支付 的 各种填坑

填坑   支付宝填坑是每个接入支付宝必经之路,下面是我接入支付宝遇到的问题汇总,希望大家在接入的路上少一点弯路 问题1. Util/base64.h:63:21: Cannot find interface declaration for ‘NSObject’, superclass of ‘Base64’ 解决办法: 这是base64.h中没有加入#import  系统库文件导致,这个错误报错方法直接想喷它一脸.报错方式太恶心. 问题2.截图告知你什么问题 解决办法: 这个问题可以同上的,心情

10分钟搞定支付宝和微信支付的各种填坑

支付宝填坑是每个接入支付宝必经之路,下面是我接入支付宝遇到的问题汇总,希望大家在接入的路上少一点弯路. 问题1. Util/base64.h:63:21: Cannot find interface declaration for ‘NSObject’, superclass of ‘Base64’ 解决办法: 这是base64.h中没有加入#import 系统库文件导致,这个错误报错方法直接想喷它一脸.报错方式太恶心. 问题2.截图告知你什么问题 解决办法: 这个问题可以同上的,心情好,截图再

java实现沙箱测试环境支付宝支付(demo)和整合微信支付和支付宝支付到springmvc+spring+mybatis环境全过程(支付宝和微信支付、附源码)

一.支付宝测试环境代码测试 1.下载电脑网站的官方demo: 下载地址:https://docs.open.alipay.com/270/106291/ 2.下载解压导入eclipse readme.txt请好好看一下. 只有一个Java配置类,其余都是JSP. 3.配置AlipayConfig (1).注册蚂蚁金服开发者账号(免费,不像苹果会收取费用) 注册地址:https://open.alipay.com ,用你的支付宝账号扫码登录,完善个人信息,选择服务类型(我选的是自研). (2).设

支付宝和微信支付程序-附源码下载

1.同时支持支付宝.微信支付的两种支付模式:刷卡支付 扫码支付:只要把相关支付参数配置到程序里面,就可以正常使用支付:2.可以对接到不同的行业系统里面去,比如餐饮酒店系统,医院系统等需要支付的系统3.开发环境为Visual Studio 2010,无数据库 源码下载点这里 原文地址:https://www.cnblogs.com/starksoft/p/11029393.html

微信支付--申请微信支付,商户功能设置详细说明

原文链接:http://www.cnblogs.com/True_to_me/p/3565039.html 微信支付已经正式开放了,所有的"认证服务号"都可以申请.但由于关系到支付权限的申请,整个流程会比较复杂,而且有很多具体的涉及技术接口的细节一般人还真弄不明白.而且已经有商户告诉我们发现有第三方网站在教商户申请微信时让不了解真相的商户把自己的微信支付直接就绑定了第三方网站的支付接口,给商户带来了很大的麻烦.非常的不负责任.大家一定要仔细阅读下面的内容,以免绑定后才发现是绑定了别人的