中文简体    English


IVY云存储支付接入


版本记录:

修订日期 版本号 修改人 描述
2019-05-10 V1.0 陈汉镇 创建初稿
2019-08-22 V1.1 徐凯 H5页面入口参数增加
2019-09-09 V1.2 徐凯 1.新增3.1/3.2 os参数;2.新增3.3/3.4 ios和android接入说明
2019-12-14 V1.3 杨昭炎 文档在线发布

1. 简要说明

为简化订单与支付相关接口的对接,我司提供订单与支付的相关H5页面,App根据需求传入相应参数即可进入订单与支付页面,在完成购买服务流程之后,需要对购买的服务进行授权激活的操作。

2. 业务流程

2.1 支付购买流程

支付购买流程:

当用户支付成功后激活设备失败时,APP补偿激活设备流程:

2.2 流程说明

  • 步骤一:
    用户在App中点击购买云服务,跳转至设备选择页,该页需要App厂商自行设计完成,用于用户选择需要进行购买云服务的设备;
  • 步骤二:
    用户选择设备后,将H5入口url参数填充完成,然后在App中打开此Url;
  • 步骤三:
    进入H5页面后,App需要全程监听H5中的跳转路径,当路径中包含fosPayClose或activateDevice时,需要将H5页面关闭
  • 步骤四:
    当H5页面关闭,App需要调用接口检查用户是否有未激活的服务,当不存在未激活的服务时,流程结束;
  • 步骤五:
    当用户存在未激活的服务,需要调用接口查询写入设备的云服务信息,然后将其写入设备,如果此写入设备失败,则重复此步骤直至写入设备成功;
  • 步骤六:
    云服务信息写入设备成功后,调用激活云服务接口完成激活服务流程,完成后设备端可使用授权服务;

3. H5页面入口及参数说明

3.1 海外支付(海外用户)

入口地址:
https://{host}/mobile/store_product?clientId=&openId=&accessToken=&ipcName=&ipcMac=&language=&country=&oemCode=

参数名 参数说明
clientId 厂商clientId
openId 用户openId
accessToken 用户accessToken
ipcName 设备名称
ipcMac 设备mac地址(请剔除地址中的英文冒号)
Language ‘CHS’-中文,’ENU’-英语, ‘FRA’-法语, ‘GER’-德语, ‘ITL’-意大利语, ‘ESP’-西班牙语;
Country 用户注册所选择的国家
oemCode 用户所属厂商oemCode
hideTit 隐藏标题栏,可选,默认不隐藏,值为1时隐藏标题栏
os 系统类型 [ios, android, wap] ios: IOS移动应用 ,android: 安卓移动应用,wap: WAP网站应用

注意:{host}配置如下:

支付方式:

  • WorldPay支付(银行卡)和PayPal支付
  • 其中PayPal测试支付账号为:
    账号:389506244-foscam@qq.com
    密码:12345678

3.2 国内支付(国内用户)

入口地址:https://{host}/mobile/store_product_cn?
clientId=&openId=&accessToken=&ipcName=&ipcMac=&language=&oemCode=

参数名 参数说明
clientId 厂商clientId
openId 用户openId
accessToken 用户accessToken
ipcName 设备名称
ipcMac 设备mac地址(请剔除地址中的英文冒号)
Language ‘CHS’-中文,’ENU’-英语, ‘FRA’-法语, ‘GER’-德语, ‘ITL’-意大利语, ‘ESP’-西班牙语;
oemCode 用户所属厂商oemCode
hideTit 隐藏标题栏,可选,默认不隐藏,值为1时隐藏标题栏
os 系统类型 [ios, android, wap] ios: IOS移动应用 ,android: 安卓移动应用,wap: WAP网站应用

注意:{host}配置如下:

3.3 iOS接入说明

3.3.1 使用UIWebView加载H5页面

根据国内外用户,分别加载对应的支付页面,具体URL请参照3.H5页面入口及参数说明,通过UIWebView加载请求,并设置代理。

3.3.2 在UIWebView代理中处理服务器返回

在[UIWebViewDelegate webView:shouldStartLoadWithRequest:navigationType:]中处理以下请求:
“fosPlayClose”: 支付完成,退出当前页面;
“wx.tenpay.com”: 检测到该字段,需要通过[[UIApplication sharedApplication] canOpenURL:[NSURL URLString:@”weixin://“]]检查手机是否已安装微信应用。未安装提示用户先安装微信;
“BuildID.foscam.cn”: 表示已跳转到微信开始支付,将当前链接中的”BuildID.foscam.cn”替换成”https://“形成新的链接,重新加载新的链接。

3.3.3 其它配置

在TARGETS配置URL Types,在Identifier中填入当前App的BuildID,在URL Schemes中填入BuildID.foscam.cn;

3.4 Android接入说明

3.4.1 使用WebView加载H5页面

根据国内外用户,分别加载对应的支付页面,具体URL请参照3.H5页面入口及参数说明,通过WebView加载请求,并设置代理。

3.4.2 在WebView代理中处理服务器返回

在shouldOverrideUrlLoading方法中处理以下请求:
“fosPlayClose”: 退出当前页面;
“weixin://wap/pay?”: 检测到该字段来跳转微信,跳转前需要通过获取所有已安装程序的包信息来判断是否已安装微信应用。未安装提示用户先安装微信;
“activateDevice”: 表示完成支付然后激活设备退出当前界面。

3.4.3 其它配置

在shouldOverrideUrlLoading配置Referer:
Map<String, String> extraHeaders = new HashMap<>();
extraHeaders.put(“Referer”, BuildConfig.URL_CN_PAY_REALM_ANME);
view.loadUrl(url, extraHeaders);

4. 激活服务相关接口

4.1 获取用户未激活的服务

接口描述:

  • 查询用户所有未激活的授权记录

请求URL:

  • https://{HOST}/gateway?service=permission.query_user_not_active

请求方式:

  • GET

请求头:

请求参数:

参数名 数据类型 是否必须 说明 长度
clientId String 必选 appKey 40
openId String 必选 openId(用户标志) 40
accessToken String 必选 accessToken 40
supportBpi int 必选 是否支持Bpi:0不支持 1支持 1

返回示例:

{
    "errorCode":"",
    "data":[
        {
            "grantId":222222,
            "ipcMac":"ipcMac",
            "permissionCode":"permissionCode",
            "permissionName":"permissionName",
            "permissionType":1,
            "permissionValue":0,
            "grantStatus":1,
            "userTag":"userTag",
            "streamId":"streamId",
            "belongServer":"belongServer",
            "initTime":1565847960000,
            "channelCount":0
        },
        {
            "grantId":111111,
            "ipcMac":"ipcMac",
            "permissionCode":"permissionCode",
            "permissionName":"permissionName",
            "permissionType":1,
            "permissionValue":0,
            "grantStatus":1,
            "userTag":"userTag",
            "belongServer":"belongServer",
            "initTime":1565847960000,
            "channelCount":0
        }
    ],
    "sysDate":1576289329443
}

返回参数说明:

参数名 说明
errorCode 错误码,成功时为空值
failureDetails 失败原因
data 返回json对象
data.grantId 授权记录id
data.ipcMac 设备mac
data.permissionCode 权限代码
data.permissionName 权限名称
data.permissionType 1, 服务授权类型,1付费,2赠送,3免费
data.permissionValue 无需处理
data.grantStatus 权限状态, 1, 权限状态,为支付完成,等待服务激活中, 该服务需要先将设备激活;.3为授权成功
data.usreTag 用户对应服务的tag
data.streamId 云存储流ID
data.belongServer 基础服务代号
data.initTime 服务购买时间
sysDate 系统时间, 1970到现在的秒数

错误码说明:

基础返回码 说明
FC_SERVICE_NOT_IMPLEMENT(009999) 该api不存在或者未实现
FC_INVALID_PARAMETER(000006) 请求参数错误
FC_SYSTEM_ERROR(000099) 系统错误

4.2 云平台激活权限

接口描述:

  • 激活设备单个权限

请求URL:

  • https://{HOST}/gateway?service=permission.active

请求方式:

  • POST

请求头:

名称 是否必须 类型 说明
Content-Type string 请求类型: application/x-www-form-urlencoded

请求参数:

参数名 数据类型 是否必须 说明 长度
clientId String 必选 appKey 40
openId String 必选 openId(用户标志) 40
accessToken String 必选 accessToken 40
grantId long 必选 授权记录号,通过查询订单未激活授权记录接口获得 20
ipcMac String 必选 设备mac地址 20
exceptionInfo String 可选 异常信息 1024
appClientVersion String 可选 APP版本信息 50

返回示例:

{
    "errorCode":"",
    "failureDetails":""
}

返回参数说明:

参数名 说明
errorCode 错误码,成功时为空值
failureDetails 失败原因

错误码说明:

基础返回码 说明
FC_SERVICE_NOT_IMPLEMENT(009999) 该api不存在或者未实现
FC_INVALID_PARAMETER(000006) 请求参数错误
FC_SYSTEM_ERROR(000099) 系统错误
业务返回码 说明
PERMISSION_GRANTID_RECORD_NOT_EXISTS(883202) 授权记录不存在
PERMISSION_GRANTID_RECORD_NOT_MATCH_IPCMAC(883204) 授权记录与IPC不匹配
PERMISSION_GRANT_STATUS_CANNOT_ACTIVE(883203) 该授权记录状态不正确,不允许激活
文档更新时间: 2020-06-30 20:12   作者:admin