iOS相关支付,支付宝,微信,银联

支付宝支付

https://doc.open.alipay.com/doc2/detail.htm?spm=a219a.7629140.0.0.QzMnxo&treeId=59&articleId=103657&docType=1

1、SDK下载
2、SDK导入

注意事项:https://doc.open.alipay.com/doc2/detail.htm?spm=a219a.7629140.0.0.LXsfaW&treeId=59&articleId=103677&docType=1
3、SDK配置

  • 新建.pch文件

#import <AlipaySDK/AlipaySDK.h>
  • 添加依赖库文件

  • 报错解决办法
    报错是因为openssl的头文件没有引入工程,所以要引入

  • 注意iOS9.0以上要修改info.plist文件中的网络配置

<key>NSAppTransportSecurity</key>
    <dict>
        <key>NSAllowsArbitraryLoads</key>
        <true/>
    </dict>

4、运行
5、AliPay提供的方法接口

  • 支付接口

/**
 *  支付接口
 *
 *  @param orderStr       订单信息
 *  @param schemeStr      调用支付的app注册在info.plist中的scheme
 *  @param compltionBlock 支付结果回调Block
 */
- (void)payOrder:(NSString *)orderStr
      fromScheme:(NSString *)schemeStr
        callback:(CompletionBlock)completionBlock;

6、搭建程序

  • 新建plist文件模拟商户的基本信息

参数 含义
partner 合作身份者ID,以2088开头由16位纯数字组成的字符串。请参考查看PID
seller 支付宝收款账号,手机号码或邮箱格式。
private_key 商户方的私钥,pkcs8格式。请参考RSA私钥及公钥生成

注意:这些参数配置是为客户端签名功能服务的,仅作为示例使用。商户在接入支付宝产品时,请把这些信息通过商户项目自己的服务端传递。

  • 封装AliPay类来管理支付功能
    .h文件

#import <Foundation/Foundation.h>

//声明block,把当前支付结果返回到调用支付的控制器中
typedef void(^alipayBlock)(void);
@interface Alipay : NSObject

/**
 *  Alipay对外提供的方法接口
 *
 *  @param orderDic 订单信息
 *  @param success  支付成功结果回调
 *  @param isPaying 正在支付结果回调
 *  @param error    支付错误结果回调
 */

+ (void)payWithOrderDic:(NSDictionary *)orderDic Success:(alipayBlock)success IsPaying:(alipayBlock)isPaying Error:(alipayBlock)error;

.m文件

//重写初始化类,获取商户信息
-(instancetype)init{
    self = [super init];
    if (self) {
        //从plist文件中获取当前账号信息
        NSDictionary *alipayDic = [NSDictionary dictionaryWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"Alipay" ofType:@"plist"]];
        //商户ID
        _partner = alipayDic[@"partner"];
        //商户账号
        _seller = alipayDic[@"seller"];
        //商户私钥
        _privateKey = alipayDic[@"privateKey"];
        
    }
    return self;
}


-(void)payWithOrderDic:(NSDictionary *)orderDic Success:(alipayBlock)success IsPaying:(alipayBlock)isPaying Error:(alipayBlock)error{
    //判断商户ID 账号 私钥 是否能够获取到
    if ([_partner length] == 0 || [_seller length] == 0 || [_privateKey length] == 0)  {
        NSLog(@"缺少ID、账号、私钥,请在Alipay.plist文件当中填写");
        return;
    }
    //生成订单信息以及签名
    Order *order = [[Order alloc]init];
    order.partner = _partner;
    order.seller = _seller;
    //订单ID(商户自行制定)
    order.tradeNO = orderDic[@"orderID"];
    order.productName = orderDic[@"productName"];
    order.productDescription = orderDic[@"productDescription"];
    order.amount = [NSString stringWithFormat:@"%@",orderDic[@"amount"]];
    //支付宝的服务器参数
    order.service = @"mobile.securitypay.pay";
    //付款类型
    order.paymentType = @"1";
    order.inputCharset = @"utf-8";
    order.itBPay = @"30m";
    //支付宝的scheme 标示
    order.showUrl = @"m.alipay.com";
    
    //App的scheme,在Info.plist定义URL types
    NSString *appScheme = @"AlipayTestApp";
    
    //将商品信息拼接成字符串
    NSString *orderStr = [order description];
    NSLog(@"orderStr = %@",orderStr);
    
    //获取私钥并将商户信息签名,外部商户可以根据情况存放于私钥和签名,需遵循RSA签名规范,并将签名字符串base64编号和UrlEncode
    id<DataSigner> singer = CreateRSADataSigner(_privateKey);
    NSString *signedString = [singer signString:orderStr];
    
    //将签名成功的字符串格式化为订单字符串
    NSString *orderString = nil;
    if (signedString != nil) {
        orderString = [NSString stringWithFormat:@"%@&sign = \"%@\"&sign_type = \"%@\"",orderStr,signedString,@"RSA"];
        //支付后的状态处理
        [[AlipaySDK defaultService]payOrder:orderString fromScheme:appScheme callback:^(NSDictionary *resultDic) {
            NSLog(@"%@",resultDic);
            if ([[resultDic objectForKey:@"resultStatus"] intValue] == 9000) {
                //支付成功
                success();
            }
            else if([[resultDic objectForKey:@"resultStatus"] intValue] == 8000){
                //正在处理
                isPaying();
            }
            else
            {
                //支付错误
                error();
            }
        }];
        
    }
    
}

+ (void)payWithOrderDic:(NSDictionary *)orderDic Success:(alipayBlock)success IsPaying:(alipayBlock)isPaying Error:(alipayBlock)error{
    Alipay *pay = [[Alipay alloc]init];
    [pay payWithOrderDic:orderDic Success:success IsPaying:isPaying Error:error];
}
Apply Pay

ApplePay的相关分享资料
博客地址:http://www.coderqi.com/2016/02/25/AppPay/
视频地址:http://v.youku.com/v_show/id_XMTQ4Njk0NTE2MA==.html

微信支付

https://pay.weixin.qq.com/wiki/doc/api/app/app.php?chapter=8_1

银联支付

https://open.unionpay.com/upload/download/Development_kit85427986.rar


1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看REAdMe.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看REAdMe.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看READme.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。
1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 、 1资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看READmE.文件(md如有),本项目仅用作交流学习参考,请切勿用于商业用途。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值