iOS-面试之你做过支付没有?

作者: 指尖猿 | 来源:发表于2016-09-27 18:06 被阅读751次

    支付宝是第三方支付平台,简单来说就是协调客户,商户,银行三者关系的方便平台

    使用支付宝进行一个完整的支付功能,大致有以下步骤:

    a与支付宝进行签约,获得商户ID(partner)和账号ID(seller)

    b下载相应的公钥私钥文件(加密签名用)

    c下载支付宝SDK

    d生成订单信息

    e调用支付宝客户端,有支付宝客户端跟支付宝安全服务器打交道

    f支付完毕后返回支付结果给客户端和服务器

    支付功能的实现

    有两种方式:

    1支付宝的应用可以 用url直接连接到

    支付宝的官网 (当然后台是要进行处理的)

    2第二种就是添加支付宝的第三方了 首先 下载支付宝的demo

    支付宝的demo一般的常见问题解决

    1 No architecuturesto compilefor(ONLY_ACTIVE_ARCH =YES, active arch = x86_64,VALID_ARCHS = i386)

    出现这样的问题一般是

    将64位编译进去就能解决了(这个问题只要你下载的是最新的demo一般很少见了 )

    解决方案:

    targets

    -> Architectures下面的Valid Architectures添加上arm64

    2将支付宝的第三方添加到项目中的时候 有时 会出现openssl文件中的.h文件报错

    说此文件不能被找到出现这样的问题是 的原因一般是添加的路径 不对

    解决方案:

    点击项目名称,点击“Build Settings”选项卡,在搜索框中,以关键字“search”搜索,对“Header Search Paths”增加头文件路径:$(SRCRCOT)/项目名称 设置一下路径 一般都能解决。

    3  Cannot findinterface declarationfor"NSObject", supercalss of 'Base64'

    解决方案打开报错的文件,增加头文件

    #import

    基本上支付宝中的demo里面的问题一般都会得到解决。然后

    看着demo跟实际的项目结合一下就ok了

    正式开始支付宝教程:

    1将需要的文件,静态库等拖入工程中,这里有:include,libs,Utilities,libcrypto.a,libssl.a文件

    2添加 库

    Linked

    FrameworksandLibraries中 添加

    libssl.a

    libcrypto.a   SystemConfiguration.framework

    AlipaySDK.framework

    3如果商户要在某个文件中使用给支付宝的SDK类库,需要增加引用头文件

    #import"Order.h"

    #import"DataSigner.h"

    #import

    4后面的基本上都是 按照官方demo写的

    接口调用步骤:

    1.封装订单模型将商品信息赋予AlixPayOrder的成员变量

    Order *order =

    [[Order alloc] init];

    应用注册scheme,在项目的info.plist定义URL types

    NSString *appScheme =@"zhifu";

    生成订单描述

    NSString *orderSpec =

    [order description];

    2.签名:获取私钥并将商户信息签名,外部商户可以根据情况存放私钥和签名,只需要遵循RSA签名规范,并将签名字符串base64编码和UrlEncode

    idsigner

    = CreateRSADataSigner(@“私钥key”);

    NSString

    *signedString = [signer signString:orderSpec];

    传入订单描述

    进行 签名

    NSString

    *signedString = [signer signString:orderSpec];

    3.生成订单字符串

    NSString *orderString= [NSString stringWithFormat:@"%@&sign=\"%@\"&sign_type=\"%@\"",orderSpec,signedString,@"RSA"];

    4.调用支付接口

    [[AlipaySDK

    defaultService] payOrder:orderString fromScheme:appScheme

    callback:^(NSDictionary *resultDic) { }];

    相关文章

      网友评论

      本文标题:iOS-面试之你做过支付没有?

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