一、产品概述
CNLivePaySDK 是视讯云推出的iOS平台上使用的软件开发工具包(SDK),为开发者提供简单快捷的接口,帮助开发者快速集成实现在各个平台上的支付功能。
二、版本更新说明
2017.05.12(版本号:1.0.0)第一版
三、SDK功能特性
支持支付宝客户端、网页支付购买;
支持微信客户端支付购买;
支持苹果内购支付购买;
支付结果回调返回枚举详解、错误描述、支付渠道、支付渠道错误码、支付渠道信息;
CNLivePaySDK 同微信、支付宝支付SDK是完全分离的,即使不导入第三方支付SDK也不会报错,但是无法使用第三方支付功能;
四、系统要求
最低支持iOS版本:iOS 8.0
支持的CPU架构:armv7 armv7s i386 x86_64 arm64
五、集成方式
下载 CNLivePaySDK ,并将支付SDK导入到工程中。
如果使用微信支付功能,需要导入微信支付相关SDK;
如果使用支付宝支付功能,需要导入支付宝支付相关SDK;
引入头文件
#import <CNLivePaySDK/CNLivePaySDK.h>
六、注意事项
Build Settings -> Other Linker Flags 设置 -ObjC;
在项目属性中的URL Types中添加URL Schemes;微信支付,支付宝支付都需要添加;
添加URL Schemes白名单,需要在“Info.plist”里增加如下代码:
<key>LSApplicationQueriesSchemes</key>
<array>
<!-- 微信 URL Scheme 白名单-->
<string>wechat</string>
<string>weixin</string>
<!-- 支付宝 URL Scheme 白名单-->
<string>alipay</string>
</array>
苹果内购支付都会去服务器验证,只有验证成功才算支付成功;开发环境内购支付会到沙盒环境下验证支付结果,验证成功才算支付成功,并且会给用户付款通知业务系统接收地址异步通知时返回参数 sandbox=1 后台可以此作为标记判断加不加商品;真实环境内购支付会到真实环境下验证支付结果,验证成功才算支付成功;
七、SDK基本使用
7.1 获取支付单例
/**
获取支付核心类单例
@return 返回支付核心类单例
*/
(instancetype) sharedCNLivePayManager;
代码示例: [CNLivePaySDK sharedCNLivePayManager]
7.2 初始化支付SDK
7.2.1 使用支付SDK所有功能之前,您必须先调用此方法初始化
/**
注册支付SDK
@param appid 从视讯云平台获取到的appId
@param appkey 从视讯云平台获取到的appKey
@warning 必须传参数 appid appkey
@discussion 您在使用支付SDK所有功能之前,您必须先调用此方法初始化SDK。在App整个生命周期中,您只需要执行一次初始化。
@return 是否注册成功
*/
- (BOOL) registerApp:(NSString *)appid AppKey:(NSString *)appkey;
代码示例: [[CNLivePaySDK sharedCNLivePayManager] registerApp:KAppId AppKey:KAppKey];
7.2.2 在使用微信支付之前,必须先调用此方法初始化微信支付
/**
注册微信支付(只有使用了微信支付才会使用到此方法)
@param wxAppId 微信平台申请到的appId
@return 是否注册成功
*/
- (BOOL) registerWXApiWithWXAppId:(NSString *)wxAppId;
7.3 支付方法
7.3.1 微信、支付宝支付方法
/**
支付方法(微信, 支付宝)
@param payArg 支付所需参数结构体;
@param schemeStr 支付宝支付时需要的appScheme,需要与info配置的scheme对应;其他支付不需要可填nil;
@param completionBlock 支付结果回调;
@discussion 支付宝 客户端、 网页 支付结果回调都在此方法中的block回调中;
微信客户端支付结果回调在此方法中的block回调中;
*/
- (void)pay:(CNLivePayArg *)payArg appScheme:(NSString *)schemeStr completion:(CNLCompletionBlock)completionBlock;
7.3.2 苹果内购支付方法
/**
支付方法(内购)
@param payArg 支付所需参数结构体;
@param isDebug 是否是测试环境,上线时务必改成NO;开发环境请填YES,内购支付会到沙盒环境下验证支付结果,验证成功才算支付成功,并且会给用户付款通知业务系统接收地址异步通知时返回参数 sandbox=1 后台可以此作为标记判断加不加商品;真实环境请填NO,内购支付会到真实环境下验证支付结果,验证成功才算支付成功;
@param productId 内购时商品的ID,只有内购时用到,其他支付可传nil;
@param completionBlock 支付结果回调;
@discussion 内购支付结果回调在此方法中的block回调中;
*/
- (void)pay:(CNLivePayArg *)payArg isDebug:(BOOL)isDebug productId:(NSString *)productId completion:(CNLCompletionBlock)completionBlock;
7.4 处理支付渠道通过URL启动App时传递的数据
/**
处理支付渠道通过URL启动App时传递的数据
在 appdelegate
iOS 9.0 以前
- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation;
iOS 9.0及以后
- (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary *)options;
中实现此方法,否则支付结果回调无法实现;
@param url 支付渠道在启动第三方应用时传递过来的URL
@return 成功返回YES,失败返回NO;
*/
- (BOOL)handleOpenURL:(NSURL *)url;