iOS支付宝、微信、银联支付集成封装调用(上)

一.集成支付宝支付

支付宝集成官方教程 https://docs.open.alipay.com/204/105295/

支付宝集成官方demo https://docs.open.alipay.com/54/104509/

1.导入SDK并添加依赖库

启动IDE(如Xcode),把iOS包中的压缩文件中以下文件拷贝到项目文件夹下,并导入到项目工程中。

  • AlipaySDK.bundle
  • AlipaySDK.framework

在Build Phases选项卡的Link Binary With Libraries中,增加以下依赖

2.在Appdelegate里面添加代码

引入头文件

#import <AlipaySDK/AlipaySDK.h>

添加支付回调方法

- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation
{
 if ([url.host isEqualToString:@"safepay"]) {
  // 支付跳转支付宝钱包进行支付,处理支付结果
  [[AlipaySDK defaultService] processOrderWithPaymentResult:url standbyCallback:^(NSDictionary *resultDic) {
   NSLog(@"result = %@",resultDic);
  }];

  // 授权跳转支付宝钱包进行支付,处理支付结果
  [[AlipaySDK defaultService] processAuth_V2Result:url standbyCallback:^(NSDictionary *resultDic) {
   NSLog(@"result = %@",resultDic);
   // 解析 auth code
   NSString *result = resultDic[@"result"];
   NSString *authCode = nil;
   if (result.length>0) {
    NSArray *resultArr = [result componentsSeparatedByString:@"&"];
    for (NSString *subResult in resultArr) {
     if (subResult.length > 10 && [subResult hasPrefix:@"auth_code="]) {
      authCode = [subResult substringFromIndex:10];
      break;
     }
    }
   }
   NSLog(@"授权结果 authCode = %@", authCode?:@"");
  }];
 }
//此处是微信支付
 if ([url.scheme isEqualToString:@"wxf6e443649d826e8e"])
 {
  return [WXApi handleOpenURL:url delegate:(id<WXApiDelegate>)self];
 }
 return YES;
}

// NOTE: 9.0以后使用新API接口
- (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary<NSString*, id> *)options
{
 if ([url.host isEqualToString:@"safepay"]) {
  // 支付跳转支付宝钱包进行支付,处理支付结果
  [[AlipaySDK defaultService] processOrderWithPaymentResult:url standbyCallback:^(NSDictionary *resultDic) {
   NSLog(@"result = %@",resultDic);
  }];

  // 授权跳转支付宝钱包进行支付,处理支付结果
  [[AlipaySDK defaultService] processAuth_V2Result:url standbyCallback:^(NSDictionary *resultDic) {
   NSLog(@"result = %@",resultDic);
   // 解析 auth code
   NSString *result = resultDic[@"result"];
   NSString *authCode = nil;
   if (result.length>0) {
    NSArray *resultArr = [result componentsSeparatedByString:@"&"];
    for (NSString *subResult in resultArr) {
     if (subResult.length > 10 && [subResult hasPrefix:@"auth_code="]) {
      authCode = [subResult substringFromIndex:10];
      break;
     }
    }
   }
   NSLog(@"授权结果 authCode = %@", authCode?:@"");
  }];
 }
//此处是微信支付
 if ([url.scheme isEqualToString:@"wxf6e443649d826e8e"])
 {
  return [WXApi handleOpenURL:url delegate:(id<WXApiDelegate>)self];
 }
 return YES;
}

3.添加URL Scheme配置

在Targets -> Info 下最后一个找到URL Scheme,
点击“Info”选项卡,在“URL Types”选项中,点击“+”。

4.在支付的地方添加吊起支付宝方法

引入头文件

#import <AlipaySDK/AlipaySDK.h>

支付地方添加调起支付宝代码

[[AlipaySDK defaultService] payOrder:@"此处是从后台拿到的订单签名信息" fromScheme:@"这里边填写第三步配置的URL Scheme" callback:^(NSDictionary *resultDic) {
   NSLog(@"=====%@",resultDic);
   if ([resultDic[@"resultStatus"]intValue] == 9000) {
    NSLog(@"成功");
   } else {
    NSLog(@"失败");
   }
  }];

二.集成微信支付

微信支付集成官方文档 https://pay.weixin.qq.com/wiki/doc/api/app/app.php?chapter=8_5

微信集成官方demo https://pay.weixin.qq.com/wiki/doc/api/app/app.php?chapter=11_1

1:导入SDK并添加依赖库

记得添加这两个配置 (画重点)注意看官方Demo里边的README,拿起小本子记下来

2:在APPDelegate里边添加代码

引入头文件

#import <WXApi.h>
并添加回调代理
@interface AppDelegate ()<WXApiDelegate>

注册微信

- (BOOL)application:(UIApplication*)application didFinishLaunchingWithOptions:(NSDictionary*)launchOptions { [WXApi registerApp:@"填写申请的appid"];returnYES; }

添加支付回调方法,上边支付宝集成代码里边一样的代码

- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation
{
 if ([url.host isEqualToString:@"safepay"]) {
  // 支付跳转支付宝钱包进行支付,处理支付结果
  [[AlipaySDK defaultService] processOrderWithPaymentResult:url standbyCallback:^(NSDictionary *resultDic) {
   NSLog(@"result = %@",resultDic);
  }];

  // 授权跳转支付宝钱包进行支付,处理支付结果
  [[AlipaySDK defaultService] processAuth_V2Result:url standbyCallback:^(NSDictionary *resultDic) {
   NSLog(@"result = %@",resultDic);
   // 解析 auth code
   NSString *result = resultDic[@"result"];
   NSString *authCode = nil;
   if (result.length>0) {
    NSArray *resultArr = [result componentsSeparatedByString:@"&"];
    for (NSString *subResult in resultArr) {
     if (subResult.length > 10 && [subResult hasPrefix:@"auth_code="]) {
      authCode = [subResult substringFromIndex:10];
      break;
     }
    }
   }
   NSLog(@"授权结果 authCode = %@", authCode?:@"");
  }];
 }
//此处是微信支付
 if ([url.scheme isEqualToString:@"wxf6e443649d826e8e"])
 {
  return [WXApi handleOpenURL:url delegate:(id<WXApiDelegate>)self];
 }
 return YES;
}

// NOTE: 9.0以后使用新API接口
- (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary<NSString*, id> *)options
{
 if ([url.host isEqualToString:@"safepay"]) {
  // 支付跳转支付宝钱包进行支付,处理支付结果
  [[AlipaySDK defaultService] processOrderWithPaymentResult:url standbyCallback:^(NSDictionary *resultDic) {
   NSLog(@"result = %@",resultDic);
  }];

  // 授权跳转支付宝钱包进行支付,处理支付结果
  [[AlipaySDK defaultService] processAuth_V2Result:url standbyCallback:^(NSDictionary *resultDic) {
   NSLog(@"result = %@",resultDic);
   // 解析 auth code
   NSString *result = resultDic[@"result"];
   NSString *authCode = nil;
   if (result.length>0) {
    NSArray *resultArr = [result componentsSeparatedByString:@"&"];
    for (NSString *subResult in resultArr) {
     if (subResult.length > 10 && [subResult hasPrefix:@"auth_code="]) {
      authCode = [subResult substringFromIndex:10];
      break;
     }
    }
   }
   NSLog(@"授权结果 authCode = %@", authCode?:@"");
  }];
 }
//此处是微信支付
 if ([url.scheme isEqualToString:@"wxf6e443649d826e8e"])
 {
  return [WXApi handleOpenURL:url delegate:(id<WXApiDelegate>)self];
 }
 return YES;
}

添加微信支付回调代理方法

//微信回调,有支付结果的时候会回调这个方法
- (void)onResp:(BaseResp *)resp
{
 // 支付结果回调
 if([resp isKindOfClass:[PayResp class]]){
  switch (resp.errCode) {
   case WXSuccess:{
    //支付返回结果,实际支付结果需要去自己的服务器端查询
    NSNotification *notification = [NSNotification notificationWithName:@"ORDER_PAY_NOTIFICATION" object:@"success"];
    [[NSNotificationCenter defaultCenter] postNotification:notification];

    break;
   }
   default:{
    NSNotification *notification = [NSNotification notificationWithName:@"ORDER_PAY_NOTIFICATION"object:@"fail"];
    [[NSNotificationCenter defaultCenter] postNotification:notification];
    break;
   }
  }
 }
}

3.添加URL Scheme配置

在Targets -> Info 下最后一个找到URL Scheme,
点击“Info”选项卡,在“URL Types”选项中,点击“+” 填写申请的那个APPId

同上

4.在支付地方添加调起微信方法

引入头文件

#import <WXApi.h>

支付地方添加调起微信代码

 if ([WXApi isWXAppInstalled]) {NSLog(@"已经安装了微信...");

//这里调用后台接口获取订单的详细信息,然后调用微信支付方法}else{

}

#pragma mark 微信支付方法

- (void)WXPayWithAppid:(NSString *)appid partnerid:(NSString *)partnerid prepayid:(NSString *)prepayid package:(NSString *)package noncestr:(NSString *)noncestr timestamp:(NSString *)timestamp sign:(NSString *)sign{

//需要创建这个支付对象PayReq *req = [[PayReq alloc] init];//由用户微信号和AppID组成的唯一标识,用于校验微信用户req.openID = appid;// 商家id,在注册的时候给的req.partnerId = partnerid;// 预支付订单这个是后台跟微信服务器交互后,微信服务器传给你们服务器的,你们服务器再传给你req.prepayId = prepayid;// 根据财付通文档填写的数据和签名req.package = package;// 随机编码,为了防止重复的,在后台生成req.nonceStr = noncestr;// 这个是时间戳,也是在后台生成的,为了验证支付的NSString * stamp = timestamp;req.timeStamp = stamp.intValue;// 这个签名也是后台做的req.sign = sign;if ([WXApi sendReq:req]) { //发送请求到微信,等待微信返回onRespNSLog(@"吊起微信成功...");}else{NSLog(@"吊起微信失败...");}}

三.银联支付集成

银联手机控件支付 https://link.jianshu.com/?t=https://open.unionpay.com/ajweb/index

银联官网 https://www.aliyun.com/jiaocheng/349377.html

将需要的库文件拖入到自己的项目中,SDK文件所在目录upmp_iphone/paymentcontrol,包含 UPPaymentControl.h、libPaymentControl.a两个文件(老版本是三个,这点不一样)。

方法需要的几个参数文档上都写的有,tn是交易流水号,你们服务器端传给你的,咱们客户端只有凭借这个参数才能调用支付控件 进行支付的。

到此:第三方支付集成大致集成,请期待下一篇文章对于三种集成调用封装代码

下面是我们分享的iOS支付宝、微信、银联支付集成封装调用(下)、

//www.jb51.net/article/139185.htm

(0)

相关推荐

  • iOS支付宝支付方法详解

    支付宝SDK下载地址:https://doc.open.alipay.com/doc2/detail?treeId=54&articleId=103419&docType=1 支付宝集成 在支付宝集成的过程中,会遇到一些报错,下面就碰到的报错,和大家一起解决. 集成参考官方文档: 导入代码文档:https://doc.open.alipay.com/doc2/detail.htm?spm=0.0.0.0.RiFaVa&treeId=59&articleId=103676&a

  • iOS实现微信支付流程详解

    背景 自微信支付.支付宝支付入世以来,移动端的支付日渐火热.虚拟货币有取代实体货币的趋向(这句纯属扯淡,不用管),支付在app开发中是一项基本的功能,有必要去掌握.从难易程度上讲,不管是微信支付还是支付宝支付都是非常简单的,因为第三方的支付文档非常详细,而且他们内部的安全性也非常高.作为使用这些支付策略的我们,只需要掌握流程,能够实现正常支付的功能即可.为什么要写下这篇博文,原因有二.其一,微信支付流程中有坑,其二,以后忘记了可以拿出来看看. 配置 1.微信支付需要两个账号,财付通和微信开发者,

  • IOS 集成微信支付功能的实现方法

    IOS 集成微信支付功能的实现方法 第一步:集成微信的SDK https://pay.weixin.qq.com/wiki/doc/api/index.html 点击进入 下载对应SDK或示例,最后可以看看示例程序 第二步:在Xcode中填写微信开放平台申请的Appid Xcode>info>URL Types  中新建加入Appid 第三步:在Appdelegate.m 中注册微信支付 和回调 #import "WXApi.h" 添加 代理 WXApiDelegate -

  • iOS支付宝、微信、银联支付集成封装调用(下)

    一.越来越多的app增加第三方的功能,可能app有不同的页面但调用相同的支付方式,例如界面如下: 这两个页面都会使用第三方支付支付:(微信,支付宝,银联)如果在每一个页面都直接调用第三方支付的接口全部代码,显然并不是很合适,更何况,可能一个app并不止两个入口.所以封装还是很有必要的. 1.新建Model:-------后台返回支付方式的列表json #import <Foundation/Foundation.h> @interface IOAPayItemModel : NSObject

  • iOS开发傻瓜式微信支付的方法教程

    前言 本文主要给大家介绍了关于iOS开发傻瓜式微信支付的相关内容,分享出来供大家参考学习,下面来一起看看详细的介绍吧. 方法步骤如下: 先下载微信SDK,如果集成了友盟分享里的微信,那就不用下载,也不用配置环境,因为配置友盟分享的时候已经把微信支付的环境都配置好了(包括框架,schema跳转,白名单)如果没有集成过友盟分享那么请到微信开放平台下载SDK 如果公司没有给微信平台的appkey则需要自己帮公司去微信平台申请 工程的bundle id 也要和在微信平台注册的bundle id一样 链接

  • iOS开发支付宝支付成功返回字符串的处理操作

    { memo=""; result="partner=\"311811\"&seller_id=\"nse@gmail.com\"&out_trade_no=\"S005372\"&subject=\"\U522b\U5885\U8ba2\U5355\"&body=\"\U5885\"&total_fee=\"0.1\"

  • iOS支付宝使用方法详解

    支付宝相关资源下载地址:支付宝开放平台 在移动支付功能处下载. 一.使用官方的Demo 需要配置基本信息: 打开"APViewController.m"文件,对以下三个参数进行编辑. 二.集成支付宝到自己的工程 1.启动Xcode,为了方便快速开发,将解压包里面的AlipaySDK.bundle和AlipaySDK.framework 和Demo里面的以下文件拷贝到自己的工程文件夹中去,并导入到项目工程中. 2.在Build Phases选项卡的Link Binary With Lib

  • IOS应用内支付返回新旧Receipt适配的方法

    ios7.0后ios支付成功返回的票据Receipt的获取方式有了新的方式, 原来的SKPaymentTransaction中的transactionReceipt属性获取票据的方式已经过期,虽然还能使用,但是苹果官方建议使用新的 新版的获取Receipt的方式是通过新接口如下 NSURL *receiptURL = [[NSBundle mainBundle] appStoreReceiptURL]; NSData *receipt = [NSData dataWithContentsOfUR

  • iOS动画解析之支付宝支付打钩动画的实现方法

    前言 我们平时在用支付宝付款时,会有一个支付中的动画和一个支付完成的动画.这篇博客主要分析一下这种动画效果,效果如下: 支付宝支付动画 一.动画解析 为了方便观察,放慢了动画的速度并添加辅助线: 放慢后的动画 从图中可以看出:加载圆弧运动轨迹可分为前半段和后半段:并且圆弧的起始角度(StartAngle)和结束角度(EndAngle)在做有规律的变化: 前半段: 从-0.5π到π,这一段运动中速度较快:StartAngle不变,始终未-0.5π:EndAngle在匀速上升,一直到π:前半段中圆弧

  • iOS支付宝、微信、银联支付集成封装调用(上)

    一.集成支付宝支付 支付宝集成官方教程 https://docs.open.alipay.com/204/105295/ 支付宝集成官方demo https://docs.open.alipay.com/54/104509/ 1.导入SDK并添加依赖库 启动IDE(如Xcode),把iOS包中的压缩文件中以下文件拷贝到项目文件夹下,并导入到项目工程中. AlipaySDK.bundle AlipaySDK.framework 在Build Phases选项卡的Link Binary With L

  • Android仿支付宝微信支付密码界面弹窗封装dialog

    一,功能效果 二,实现过程 1,先写xml文件:dialog_keyboard.xml 注意事项 (1),密码部分用的是一个线性布局中6个TextView,并设置android:inputType="numberPassword",外框是用的一个有stroke属性的shape, (2),1-9数字是用的recycleview ,每个item的底部和右边有1dp的黑线,填充后形成分割线. (3),recycleview 要设置属性  android:overScrollMode=&quo

  • Android支付宝和微信支付集成

    场景 随着移动支付的兴起,在我们的app'中,会经常有集成支付的需求.这时候一般都会采用微信和支付宝的sdk 来集成 (一)支付宝支付 在使用支付宝支付的过程中,我们是在服务器端生成订单,客户端访问接口,并得到订单信息,调用接口支付,支付成功后支付宝会分别 异步调用服务器端,并向客户端返回支付结果. 开发步骤: ①注册支付宝账号--进行实名认证--提交审核资料--审核通过 支付宝无线快捷支付接口: b.alipay.com/order/productDetail.htm?productId=20

  • Android 支付宝支付、微信支付、银联支付 整合第三方支付接入方法(后台订单支付API设计)

    客户端获取后台支付API请求参数的设计 参数样例: { data: { method: 1, platform: 1, version:"1.0", relate_orders:"B201602031023,B2016020310231", order_no: "BZY201604200952100", order_type: 1, total_fee: 1, description: "商品购买", client_ip:'1

  • vue 解决在微信内置浏览器中调用支付宝支付的情况

    我的思路大概是这样的 1. 验证是否是在微信内置浏览器中调用支付宝 2.给支付页面的url加上调用接口所需的参数(因为在微信里是不能直接调用支付宝的需要调用外部浏览器) 3.在外部浏览器中完成支付跳转页面 第一步: payment: 是选择支付页面,pay-mask是用于在微信内置浏览器中调用支付宝的中间页 payment主要代码: let ua = window.navigator.userAgent.toLowerCase() ua.match(/MicroMessenger/i) == "

  • iOS APP实现微信H5支付示例总结

    微信H5支付流程 1.发起下单请求(调用统一下单接口)注:交易类型trade_type=MWEB 2.统一下单接口返回支付相关参数给商户后台,如支付跳转url(参数名"mweb_url"),商户通过mweb_url调起微信支付中间页.如:https://wx.tenpay.com/cgi-bin/mmpayweb-bin/checkmweb?prepay_id=wx27142704550165900edae5270331515985&package=600759311&

  • iOS开发微信支付的方法

    本文实例为大家分享了iOS开发微信支付的具体代码,供大家参考,具体内容如下 首先我们到微信开放平台,下载相应的SDK.微信的官方文档感觉说的很简单,没有支付宝那么详细,在这里说下集成SDK到我们的工程中. 下载好demol后(最新版本SDKSample_v2.0.2_V3pay),看到有个SDKExport的文件; 你可以直接将这个文件夹添加到你的工程中,或者你自己新建一个文件夹,将里面那三个文件粘贴到你新建的文件夹中,并添加到你的工程中; 接下来就是添加相应地库文件; 我们看到demol中有个

  • python实现银联支付和支付宝支付接入

    本文实例为大家分享了python银联支付和支付宝支付接入的具体代码,供大家参考,具体内容如下 前置条件:需要安装Python的OpenSSL模块,我使用的版本是16.1.0,可以使用pip install pyopenssl来安装 一.支付宝支付 1. 使用RSA公钥加密系统进行签名和签名验证,需要自己生成一个RSA私钥和对应的一个RSA公钥(在Linux下可以使用ssh-keygen命令来生成),公钥需要上传至支付宝,供支付宝对开发者发送的请求做签名验证使用:而同时支付宝会提供一个RSA公钥给

  • 微信APP支付(IOS手机端+java后台)版

    0.介绍预览 针对需要在IOS手机上接入原生微信支付场景,调用微信进行支付.如图: 1.资料准备 1.1 账号注册 打开https://open.weixin.qq.com,注册微信开放平台开发者账号 1.2 开发者认证 登录,进入账号中心,进行开发者资质认证. 1.3 注册应用 认证完成后,进入管理中心,新建移动应用.填写应用资料,其中android版应用签名可通过扫码安装温馨提供的应用获得,详细参考微信文档.创建完成后点击查看,申请开通微信支付.一切准备就绪! 2.Java后台开发 添加依赖

随机推荐