- 1. Brief description
- 2. Business process
- 2.1 Payment and purchase process
- 2.2 Process description
- 3. H5 page entry and parameter description
- 3.1 Overseas payment (overseas users)
- 3.2 Domestic payment (Domestic users)
- 3.3 IOS access description
- 3.3.1 Use UIWebView to load H5 page
- 3.3.2 Processing server return in UIWebView agent
- 3.3.3 Other configurations
- 3.4 Android access instructions
- 3.4.1 Use WebView to load H5 page
- 3.4.2 Processing server return in WebView agent
- 3.4.3 Other configurations
- 4. Activate service related interfaces
- 4.1 Access to services not activated by users
- 4.2 Cloud platform activation permission
中文简体 English
IVYIOT Cloud Service Payment Access API
Version history:
Revision date | Version number | Modified by | Desc |
---|---|---|---|
2019-05-10 | V1.0 | Chen Hanzhen | Create first draft |
2019-08-22 | V1.1 | Xu Kai | H5 page entry parameter increase |
2019-09-09 | V1.2 | Xu Kai | 1. Add 3.1 / 3.2 OS parameter; 2. Add 3.3 / 3.4 IOS and Android access description |
2019-12-14 | V1.3 | Yang Zhaoyan | Documents published online |
2019-12-14 | V1.4 | Meng JiuHua | Documents published online |
1. Brief description
In order to simplify the connection of order and payment related interfaces, our company provides H5 page related to order and payment. App can enter the order and payment page by passing in corresponding parameters as required. After the purchase service process is completed, the purchased service needs to be authorized and activated.
2. Business process
2.1 Payment and purchase process
payment and purchase process:
When the user fails to activate the device after successful payment, the app compensates the activation process:
2.2 Process description
- Step 1:
The user clicks purchase cloud service in the app and jumps to the device selection page, which needs to be designed by the app manufacturer and used for the user to select the device to purchase cloud service; - Step 2:
After the user selects the device, fill in the H5 entry url parameter, and then open this Url in the App; - Step 3:
After entering the H5 page, the app needs to monitor the jump path in H5. When the path contains fospayclose or activatedevice, the H5 page needs to be closed; - Step 4:
When the H5 page is closed, the app needs to call the interface to check whether the user has an inactive service. When there is no inactive service, the process ends; - Step 5:
When the user has an inactive service, he needs to call the interface to query the cloud service information written to the device, and then write it to the device. If the write to the device fails, repeat this step until the write to the device succeeds; - Step 6:
After the cloud service information is successfully written to the device, the activation service interface is called to complete the activation service process, and the device end can use the authorization service after completion;
3. H5 page entry and parameter description
3.1 Overseas payment (overseas users)
Entrance address:
https://{host}/mobile/store_product?clientId=&openId=&accessToken=&ipcName=&ipcMac=&language=&country=&oemCode=
Parameter name | Parameter description |
---|---|
clientId | Manufacturer clientId |
openId | user openId |
accessToken | user accessToken |
ipcName | device name |
ipcMac | MAC address of the device (please exclude the English colon in the address) |
Language | ‘CHS’ - Chinese,’ ENU ‘- English,’ FRA ‘- French,’ GER ‘- German,’ ITL ‘- Italian,’ ESP ‘- Spanish; |
Country | Country selected for user registration |
oemCode | Manufacturer of user oemCode |
hideTit | Hide title block, optional, not hidden by default, hide title block when the value is 1 |
os | System type [IOS, Android, WAP] IOS: IOS mobile app, Android: Android mobile app, WAP: WAP website app |
Note: {host} is configured as follows:
- The test environment :sandboxt-web.ivyiot.io
- Online environment : www.myfoscam.com
Payment method:
- WorldPay payment (bank card) and paypal payment
- The PayPal test payment account is[ foscam@qq.com ] mailto:389506244- > foscam@qq.com"">389506244-foscam@qq.com (non cloud account), password 12345678;
3.2 Domestic payment (Domestic users)
Entrance address:https://{host}/mobile/store_product_cn?
clientId=&openId=&accessToken=&ipcName=&ipcMac=&language=&oemCode=
Parameter name | Parameter description |
---|---|
clientId | Manufacturer clientId |
openId | user openId |
accessToken | user accessToken |
ipcName | device name |
ipcMac | MAC address of the device (please exclude the English colon in the address) |
Language | ‘CHS’ - Chinese,’ ENU ‘- English,’ FRA ‘- French,’ GER ‘- German,’ ITL ‘- Italian,’ ESP ‘- Spanish; |
oemCode | Manufacturer of user oemCode |
hideTit | Hide title block, optional, not hidden by default, hide title block when the value is 1 |
os | System type [IOS, Android, WAP] IOS: IOS mobile app, Android: Android mobile app, WAP: WAP website app |
Note: {host} is configured as follows:
- The test environment :test.myfoscam.cn
- Online environment:www.myfoscam.cn,Payment method is wechat payment
3.3 IOS access description
3.3.1 Use UIWebView to load H5 page
According to the users at home and abroad, load the corresponding payment page respectively. For the specific URL, please refer to the 3.H5 page entry and parameter description, load the request through UIWebView , and set the proxy.
3.3.2 Processing server return in UIWebView agent
Process the following requests in[UIWebViewDelegate webView:shouldStartLoadWithRequest:navigationType:]:
“fosPlayClose”: Payment complete, exit the current page;
“wx.tenpay.com”: If this field is detected, you need to check whether the wechat application is installed on the mobile phone through [[UIApplication sharedApplication] canOpenURL:[NSURL URLString:@”weixin://“]]. Prompt the user to install wechat before installation;
“BuildID.foscam.cn”: Indicates that you have jumped to wechat to start payment, and“ BuildID.foscam.cn “Replace with” https://“to form a new link and reload the new link.
3.3.3 Other configurations
Configure URL types in TARGETS, fill in BuildID of current app in identifier, and fill in URL Schemes BuildID.foscam.cn ;
3.4 Android access instructions
3.4.1 Use WebView to load H5 page
According to the users at home and abroad, load the corresponding payment page respectively. For the specific URL, please refer to the 3.h5 page entry and parameter description, load the request through WebView, and set the proxy.
3.4.2 Processing server return in WebView agent
Process the following request in the shouldOverrideUrlLoading method:
“fosPlayClose”:Exit the current page;
“weixin://wap/pay?”: This field is detected to jump to wechat. Before jump, you need to determine whether wechat application has been installed by obtaining package information of all installed programs. Prompt the user to install wechat before installation;
“activateDevice”: Indicates that the payment is completed and then the device is activated to exit the current interface.
3.4.3 Other configurations
Configure the Referer in shouldOverrideUrlLoading:
Map<String, String> extraHeaders = new HashMap<>();
extraHeaders.put(“Referer”, BuildConfig.URL_CN_PAY_REALM_ANME);
view.loadUrl(url, extraHeaders);
4. Activate service related interfaces
4.1 Access to services not activated by users
Interface Description:
- Query all inactive authorization records of users
Request URL:
- https://{HOST}/gateway?service=permission.query_user_not_active
Request method:
- GET
Request header:
- 无
Request parameters:
Parameter name | Data type | Is it necessary | Description | Length |
---|---|---|---|---|
clientId | String | Mandatory | appKey | 40 |
openId | String | Mandatory | openId(user identity) | 40 |
accessToken | String | Mandatory | accessToken | 40 |
supportBpi | int | Mandatory | BPI supported: 0 not supported by 1 | 1 |
Return to example:
{
"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
}
Return parameter description:
Parameter name | Description |
---|---|
errorCode | Error code, null if successful |
failureDetails | Reason for failure |
data | Return JSON object |
data.grantId | Authorization record ID |
data.ipcMac | Device mac |
data.permissionCode | Permission code |
data.permissionName | Permission name |
data.permissionType | 1. Service authorization type, 1 payment, 2 give, 3 free |
data.grantStatus | Authority status, 1. Authority status, which is payment completed and waiting for service activation, the service needs to activate the device first;. 3. Authorization succeeded |
data.usreTag | Tag of user corresponding service |
data.streamId | Cloud storage stream ID |
data.belongServer | Basic service code |
data.initTime | Service purchase time |
sysDate | System time, seconds from 1970 to now |
Error code description:
Basic return code | Description |
---|---|
FC_SERVICE_NOT_IMPLEMENT(009999) | The API does not exist or is not implemented |
FC_INVALID_PARAMETER(000006) | Request parameter error |
FC_SYSTEM_ERROR(000099) | System error |
4.2 Cloud platform activation permission
Interface Description:
- Activate device individual permissions
Request URL:
- https://{HOST}/gateway?service=permission.active
Request method:
- POST
Request header:
Name | Is it necessary | Type | Description |
---|---|---|---|
Content-Type | true | string | Request type: application/x-www-form-urlencoded |
Request parameters:
Parameter name | Data type | Is it necessary | Description | Length |
---|---|---|---|---|
clientId | String | Mandatory | appKey | 40 |
openId | String | Mandatory | openId(user identity) | 40 |
accessToken | String | Mandatory | accessToken | 40 |
grantId | long | Mandatory | The authorization record number is obtained by querying the interface of inactive authorization record of order | 20 |
ipcMac | String | Mandatory | Device MAC address | 20 |
exceptionInfo | String | Optional | Exception information | 1024 |
appClientVersion | String | Optional | App version information | 50 |
Return to example:
{
"errorCode":"",
"failureDetails":""
}
Return parameter description:
Parameter name | Description |
---|---|
errorCode | Error code, null if successful |
failureDetails | Reason for failure |
Error code description:
Basic return code | Description |
---|---|
FC_SERVICE_NOT_IMPLEMENT(009999) | The API does not exist or is not implemented |
FC_INVALID_PARAMETER(000006) | Request parameter error |
FC_SYSTEM_ERROR(000099) | System error |
Business return code | Description |
PERMISSION_GRANTID_RECORD_NOT_EXISTS(883202) | Authorization record does not exist |
PERMISSION_GRANTID_RECORD_NOT_MATCH_IPCMAC(883204) | Authorization record does not match IPC |
PERMISSION_GRANT_STATUS_CANNOT_ACTIVE(883203) | The authorization record status is incorrect and activation is not allowed |