• IOS 支付功能的实现


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

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

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

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

    c 下载支付宝SDK

    d 生成订单信息

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

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

    支付功能的实现 有两种方式:

    1  支付宝的应用可以 用url 直接连接到 支付宝的官网 (当然后台是要进行处理的)

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

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

    1 No architecutures to compile for (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 find interface declaration for "NSObject", supercalss of 'Base64'

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

    #import <Foundation/Foundation.h>

    基本上支付宝中的demo 里面的问题一般都会得到解决。然后 看着demo 跟实际的项目结合一下就ok 了

    正式开始  支付宝教程:

    (因为申请的工作不是我做的 所以就此过程就略了 )

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

    2 添加 库  

    Linked Frameworks and Libraries  中 添加

    libssl.a   libcrypto.a   SystemConfiguration.framework  

    AlipaySDK.framework

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

    #import "Order.h"

    #import "DataSigner.h"

    #import <AlipaySDK/AlipaySDK.h>

     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) { }];

  • 相关阅读:
    Hive架构(数据库和表)?
    BUG管理工具的跟踪过程(用BugZilla为例子)
    shiro有哪些组件?
    接口绑定有几种实现方式,分别是怎么实现的?
    什么是 MyBatis 的接口绑定,有什么好处?
    MyBatis 的好处是什么?
    MyBatis 与 Hibernate 有哪些不同?
    什么是 MyBatis 的接口绑定,有什么好处?
    MyBatis 的好处是什么?
    MyBatis 与 Hibernate 有哪些不同?
  • 原文地址:https://www.cnblogs.com/lan1x/p/5340801.html
Copyright © 2020-2023  润新知