zoukankan      html  css  js  c++  java
  • 集成支付宝SDK遇到的坑

    一、首先我先把集成过程说一下。
    小编想说的话:支付宝是我做支付中觉得坑最多的一个,各种编译不过,各种出问题。

    废话不多说,进入主题:
    1.首先当前是下载官方SDK啦,当前你也可以通过cocopods进行导入

    1.1 官方下载地址文档

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

    将下图两个文件导入您的项目中 (支付宝SDK)


    Paste_Image.png

    1.2 cocopods导入

    pod 'AliPay', '~> 2.1.2'

    2.若通过cocopods导入直接跳过此步 -- 导入系统库


    系统依赖库.png
    1. 在项目中新建一个文件夹存放SDK 把官方demo 的所需的文件统统拷贝过来,如下图 其中AlipaySDK.bundle AlipaySDK.FRAMEWORK 根据你是否cocopods集成选择导入。

    Paste_Image.png

    导入完毕之后还需要设置下路径以免出现问题
    User Header Search Paths
    把上面的路径拖到里面即可。
    或者使用 $(SRCROOT)/项目名称/SDK名称 也是可行的。

    4.使用支付宝 需要配置 URL type 在info中直接配置即可

    5.对了,还有一个就是需要支持iOS9 哦
    1.https


    Paste_Image.png

    2.白名单


    Paste_Image.png

    走到这里基本上的配置就算完成了,那么我们该如何使用呢? 很简单支付宝有提供一个方法 我们只需要把所需要的参数给传递过去即可。下面为基本调用过程


    Paste_Image.png

    参数说明:
    payOrder: 很明显是关于订单的信息
    1.重点1
    在demo 中 我们会看到如下一句代码

    NSString *orderSpec = [order description];

    意思是说 将商品信息拼接成字符串 这个拼接的过程他这个方法里已经封装直接调用即可。

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

    id<DataSigner> signer = CreateRSADataSigner(@"您的私匙");
    NSString *signedString = [signer signString:@"重点1 的商品字符串"];

    3.最后我们将所有内容拼接下 传递给支付宝SDK

    orderString = [NSString stringWithFormat:@"%@&sign="%@"&sign_type="%@"",
    @"重点1 的商品字符串", signedString, @"RSA"];

    appScheme:应用注册scheme,在AlixPayDemo-Info.plist定义URL types

    综合上述 已经完成了大部分的工作,现在咱们运行看看效果。。。

    运行中。。。。。

    等待中。。。。。

    卧槽,这不科学,报错了,这个时候我的内心是奔溃的。。。。

    咋办??????

    不要着急我们一个一个错误来看。

    -
    -
    -
    -
    -

    错误 1:


    Paste_Image.png

    解决方案 我们只要添加头文件 (我是在pch 文件中加入)

    import <Foundation/Foundation.h>

    import <UIKit/UIKit.h>

    错误 2


    Paste_Image.png

    如果是按照上述我描述的步骤 是不会出现这个问题的,但是还是要说一下,万一遇到了呢?

    解决方案:
    在官方demo 中 有两个文件
    libcrypto.a
    libssl.a
    将两个文件放在你的项目中即可。

    错误 3


    Paste_Image.png

    解决方案:
    你少加了系统库哦
    加上CoreMotion.framework 即可

    错误 4


    Paste_Image.png

    尼玛,明明有 你特么的说没有。这个问题其实就是他找不到你的这个文件,按照我之前的流程也是不会出现这个问题的。

    解决方案: 将他需要的文件都放在一个文件夹中,并且
    Header Search Path添加路径.
    直接将项目中的相应文件拖入即可.也可以$(SRCROOT)/文件路径.

    错误 5

    可能会报类似错误 大概就是这个第三方不支持 bitcode Xcode 7 默认为YES


    Paste_Image.png

    解决方案: bitcode 设置为NO

    错误 6

    这个错误不知道为什么会发生? 请大神指导。。。


    Paste_Image.png

    我只知道如何解决。
    哈哈哈。。。。
    找到 Always Search User Paths 设置为YES 即可。 是不是很神奇。
    说到这里我需要介绍下

    `#include“file.h”: 先搜索当前工作目录,如果没有,再去搜索库,库没有再搜索资源库;

    当#include<file.h>:编译器先从标准库路径开始搜索,如果没再搜索资源库目录,最好搜索当前工作目录。

    错误 7

    在设置 应用注册scheme 时 切勿使用与支付宝系统重复命名,否则无法调用sdk。


    Paste_Image.png

    陆续更细中......



    文/慢热先生丶Cc(简书作者)
    原文链接:http://www.jianshu.com/p/16c2215ea37a
    著作权归作者所有,转载请联系作者获得授权,并标注“简书作者”。
  • 相关阅读:
    [CocosCreator]-06-文字渲染
    [CocosCreator]-05-图片渲染
    [CocosCreator]-04-使用对象池
    [CocosCreator]-03-使用计时器
    [CocosCreator]-02-设备重力传感事件
    [CocosCreator]-01-键盘事件
    [h5棋牌项目]-08-请安装所需的版本的 Windows SDK 或者在项目属性页的问题解决方案
    JS规则 较量较量(比较操作符) 两个操作数通过比较操作符进行比较,得到值为真(true)和假(false)。【>; <; >=; <=; !=;==】
    JS规则 自加一,自减一 ( ++和- -) 【mynum = mynum + 1;//等同于mynum++;】
    JS规则 我还有其它用途( +号操作符)例如,算术操作符(+、-、*、/等),比较操作符(<、>、>=、<=等),逻辑操作符(&&、||、!)
  • 原文地址:https://www.cnblogs.com/Ghosgt/p/5994176.html
Copyright © 2011-2022 走看看