知识库首页

财务产品模块开发

公共区域:

一:模块存放路径:/static/modules/product/*   | 并把编译好的golang模块放入bin目录

下载演示demo golang版本:http://www.rstack.com.cn/download/billing/moduledemo/hyper_demo.tar.gz

二:模块开发步骤:

1:进入rsbilling管理后台》产品接口》添加产品接口,填写好搭建模块测试地址及所需的相关参数保存 

2:进入产品配置,添加或则修改产品时使用新添加的产品接口 

3:进行产品配置,购买及管理编辑子服务相关服务的设置接口调试

三:基本开发接口说明:

接口通讯方式

在执行模块功能时,rsbilling平台会向模块地址post相应的指令以及验证信息,然后根据模块接口返回相关数据来处理业务逻辑。

模块可接收到的常规接口数据(post)

参数 说明
action 相应指令
moduleID 模块id
moduleName 模块名称
userID 用户id
sign 用于验证当前请求是否合法 md5(moduleid+加密密钥+userid+action)转换小写
moduleConfig 后台产品模块设置的相应参数集
isAdmin 当前操作人是否管理员  true为管理员 false为普通用户
resellerMode 当前是否为代理子用户模式 1=是  0=否
resellerID 代理id
operatorIP 操作人ip地址

 加密密钥:指在后台模块设置的自定义密钥,用于参数传送和接受过程中的加密验证

 类型1:内部模块:(如:添加模块后出现如下路径的简称内部模块:/modules/product/hyper/mapi.go)

 类似这种情况无需输入加密密钥请留空,系统将自动调用app.conf下enkey密钥,方便模块可以获取enkey作为比   对签名,内部模块必须使用golang语言才能写模块,只需要看将app.conf配置文件中的   enkey读取作为通用的   密钥验证

 类型2:外部模块:(如:添加模块后直接选择手工输入,如:http://rstack.io/api.php,这种简称外部模块),

 类似这种就必须输入加密密钥了,(这种情况下你的第三方也将知道这个自定义密钥 可以在第三方直接验证签名)外部模块可以使用如asp,php,.net等各种网页语言编写模块

模块响应格式类型 

javascript:用于处理客户端(游览器)界面展示和操作,可使用全局变量 

json:获取接口信息时,返回的json格式值 

操作响应码:0为执行成功,-1为执行错误,格式:-1|错误信息提示 

自定义:可自由返回任何相应结果,包括如上三种 

错误返回: -1|错误信息详情

四:被动式模块接口 action

当系统执行特定或则显示特写界面时,会自动请求相应的模块接口

被动式接口指令集:

指令名 相应格式 说明
admin_module_config javascript 后台接口管理,。模块自身参数设置
admin_product_config javascript 后台产品管理,模块产品参数设置
admin_service_config javascript 后台服务管理,服务项目参数配置
js_plugin javascript 模块接口开启,自动加载此模块的js插件功能(js_plugin接口),可实现如搜索功能等
order_config javascript 前台购买页面,购买参数配置
view_service javascript 前台服务管理,查看管理服务
order_service json 购买服务时,检测和返回子服务的所需参数
activate_service json 开通服务时,激活子无并返回相应的参数
renew_service json 续费服务。扣费前的操作,包含价格计算等
remove_service 0|-1 删除服务时 同步清理相关的子服务资料
update_service 0|-1 同步更新相关服务及子服务的状态资料

 

admin_module_config 指令:javascript 用于自定义设置每个模块在当前系统的参数值格式可额外接受的post数据如下

变量名 格式 说明
subaction string 子命令【指令值】 load_param在模块设置界面中加载说明,及初始化参数,custom_param 自定义模块参数值功能

 

admin_product_config 指令:javascript 用于管理每个产品在当前模块定义的参数,可定时产品标配和升级配置选项,输出的表单项名称前缀为config_或upgrade_时,系统将相应保存到数据库 config 或 upgrade 字段,

可使用javascript全局数据变量如下:

变量名 格式 说明
productData json 当前产品的所有配置信息 

 默认用于输出显示的容器:div:#productconfig

 

admin_service_config 指令:javascript 用于管理每个用户服务在当前产品模块定义的参数,系统将保存所有容器内的表单项值到数据库,可使用javascript全局数据变量如下

变量名 格式 说明
serviceData json 当前用户服务的所有配置信息
productData json 当前服务所属的产品配置信息

默认用于输出显示的容器:div:#serviceconfig

 

js_plugin 指令:javascript 用于接口模块的自定义插件比如在财务上实现第三方搜索功能,需在接口模块勾选 自动加载此模块的js插件功能(js_plugin接口)

 

order_config 指令:javascript 用于用户购买产品界面的参数配置显示和操作 可使用的javascript全局变量如下

变量名 格式 说明
userData json 当前用户的数据
productData json 当前服务属性的产品数据
billingMothod int 付款方式,1 周期付款,2 一次性,3 免费试用
billingCycle int 付款周期(月),当用户选择时将所选值赋值给变量
timeCycle int 0=月,1=天,2=小时
normalPrice float 当前产品配置的正常价格,未打折的价格,用户选择完配置后请计算并更新此变量值
finalPrice float  当前产品配置的最终价格,已打折的价格,用户选择完配置后请计算并更新此变量值
configDetails string 用于客户核对当前购买的产品配置信息,空位不显示

默认用于输出显示的容器:form:# orderconfig

 

view_service 指令:javascript 用于用户前台服务管理界面的显示和管理操作 可使用的javascript全局变量如下

变量名 格式 说明
userData json  当前用户数据 
productData json 当前服务属性的产品数据
productConfig json 当前服务属性的产品config字段数据
productUpgrade json 当前服务属性的产品upgrade字段数据
serviceData json 当前用户服务数据 
serviceConfig json 当前用户服务config字段数据

默认用于输出显示的容器:div:# viewservice

 

order_service 指令:json 用于客户付款购买产品服务时,检测客户选择的配置及返回相应的数据 可额外接受到的post数据如下

变量名 格式 说明
isagentpd int 如果等于1,代表当前服务对应产品是代理上级产品,否则自营产品
agentpd int 代理上级产品对应ID编号(非互相代理请略过该字段)
billingMethod int 付款方式 1=周期付款,2=一次性付款
productID int 产品id 
billingCycle int 付款周期 
basePrice float  基本配置价格 
timeCycle int 0=月,1=天,2=小时
productName string  产品名称 
productConfig json 当前产品的标准配置数据
productUpgrade json  当前产品的升级配置数据 
userData json 当前用户数据
serviceName json 当前产品服务描述标签
其他 * 所有定义在表单内的表单项

需要返回的json数据:(注意:如果要支持互相API功能:如果isagentpd=1那么只计算价格返回;否则 获取模块信息和第三方API通信等操作)

key 格式 备注
price float 如果没升级选项直接返回表单basePrice原价金额,否则返回(billingCycle * 升级的金额 + basePrice 
upgradePrice float 如果有升级选项那么请返回表单 (billingCycle * 升级的金额),如无升级选项直接返回0
serviceName string  未激活状态的服务标题名称
customCycles int 是否使用模块自定义的付款周期,0为否,1为是 一般为1
其他 * 系统将直接保存这些json格式配置数据

注意:键值名称区分大小写

 

activate_service 指令:json 客户付完款项购买并且订单通过系统自动或则管理员人工审核后,进入激活子服务进程 可额外接受到的post数据如下

变量名 格式 说明
isagentpd int 如果等于1代表代理上级产品,否则自营产品
agentpd int 代理上级产品对应ID编号(非互相代理请略过该字段)
serviceID int 当前服务id
productConfig string 当年产品的JSON配置
serviceType int 当前产品服务类型
serviceConfig json 当前服务配置,在order_service步骤中所保存的数据
userData json 当前用户数据
ptName string 产品分组自定义的名称
ptEName string 产品分组自定义的标识
billingMethod int 1=周期付款 2= 一次性付款
billingCycle int 付款周期 如1 代表1个月,结合timeCycle对比当前是月还是天还是小时
timeCycle int 0=月 1=天 2=小时

必须返回的json数据

key 格式 说明
ssid int 子服务的id编号,如模块系统中 空间,域名,云主机等
ssname string 子服务名称,可为空或则返回一些如主机名称等,在下次提交后该字段也会被连同ssid一起发给模块
asid int 上游服务ID,配合isagentpd=1的话必须返回(上层返回的服务ID号),否则请留空或则为0即可
serviceName string 激活状态的服务标题名称
其他 * 系统将直接将这些json格式数据保存,一般为反序列化serviceconfig字段加入新的以上字段进去

 注意:键值名区分大小写

 

renew_service 指令:json 用于客户续费产品服务扣费前,检测客户当前的服务配置以及所选的续费周期并返回响应的数据, 可额外接受到的post数据如下:

变量名 格式 说明
isagentpd int 如果等于1,代表当前服务对应产品是代理上级产品,否则自营产品
agentpd int 代理上级产品对应ID编号(非互相代理请略过该字段)
serviceID int 当前服务的产品id
ssid int 当前服务产的子id
ssname string 子服务名称
asid int 代表当前产品服务是代理上级产品,该ID位上游网站的对应服务ID,否则等于空或则0
basePrice float 当前产品基本配置价格
serviceConfig json  用户服务的各项参数
billingMethod int 1=周期付款 2= 一次性付款
billingCycle int  付款天数 (如1 代表一个月 或1天 或1小时 结合下面字段区分)
timeCycle int 0=按月 1=按天 2=按小时
productID int 当前产品的编号id 
productConfig json 当前产品的标准配置数据
productUpgrade json 当前产品的升级配置数据 
userData json  当前用户数据 
serviceStatus int 目前产品服务的状态 (-2等待开通,-1正在开通,0正常服务,1暂停服务,2中止服务,3即将到期,4过期停止)

需要返回的json数据:(注意:如果要支持互相API功能:如果isagentpd=1那么只计算价格返回;否则 获取模块信息和第三方API通信等操作,如果续费操作不会和第三方API通信那么请无视)

key 格式 说明
price float 如果没升级选项直接返回表单basePrice原价金额,否则返回(billingCycle * 升级的金额 + basePrice 
upgradePrice float 如果有升级选项那么请返回表单 (billingCycle * 升级的金额),如无升级选项直接返回0

 

remove_service 指令:0|-1 由管理员或则系统本身发出删除服务指令时,同步删除子服务相关资料, 可额外接受到的post数据如下:

变量名 格式 说明
isagentpd int 如果等于1,代表当前服务对应产品是代理上级产品,否则自营产品
agentpd int 代理上级产品对应ID编号(非互相代理请略过该字段)
productID int 当前产品id
serviceID int 当前用户服务id
ssid int 当前用户服务子id
ssname string 当前用户服务子名称
asid int 代表当前产品服务是代理上级产品,该ID位上游网站的对应服务ID,否则等于空或则0
serviceData json  当前服务配置数据
serviceConfig json 用户服务的数据

响应:0为成功:-1为错误,格式:-1|详细错误信息

 

update_service 指令:0|-1 在续费或则后台管理更新服务资料等操作时激活此指令同步更新子服务资料 可额外接受到的post数据如下:

变量名 格式 说明
isagentpd int 如果等于1,代表当前服务对应产品是代理上级产品,否则自营产品
agentpd int 代理上级产品对应ID编号(非互相代理请略过该字段)
serviceID int 当前用户服务id
newuserid int 新的用户编号,如果此变量不为空,请判断是否以原id相同进行响应处理【仅限actionfrom=admin才触发】
newssid int 新的子服务id,如果此变量不为空,请判断是否以原id相同进行响应处理【仅限actionfrom=admin才触发】
productID int 当前产品id
ssid int 当前用户服务子id
ssname string 当前用户服务子名称
asid int 代表当前产品服务是代理上级产品,该ID位上游网站的对应服务ID,否则等于空或则0
serviceStatus int  状态 (-2等待开通,-1正在开通,0正常服务,1暂停服务,2中止服务,3即将到期,4过期停止) 
serviceConfig json  用户服务配置数据 
serviceData json 用户服务全部配置数据 
actionFrom string 

指令发起来源:admin后台服务编辑操作,renew续费相关操作,autoSuspend过期自动停止操作,adminSubService后台子服务编辑操作

其他 * 后台管理界面 admin_service_config接口页面上的表单上传送的数据,仅当actionfrom值为admin时可获取

响应:0为成功,-1为错误:格式:-1|详细错误信息

 

五:主动式模块接口

主动触发动作指令: 接口地址:http://您的财务域名/rconsole?c=module&serviceid=服务id(可选)&productid=产品id(可选)&moduleid=模块id(可选)&show=text(返回文本)&action=指令(可选:默认为custom_action)

注意:什么时候需要用到该主动接口

1:(重要):当您在写view_service接口情况下必须验证 serviceid这个是否不等于0(防止用户跨权限访问),因为那是在财务已验证权限的接口,在该接口您可以自己编写自定义接口如,操作开关机重启等一些操作

2:什么情况下使用productid=?,在一些购买产品需要调用一些远程第三方如 按区域开通选择等通信情况下,都可以使用该模式,但是返回数据可以选一些不重要的,因为那是公共接口,任何用户都能访问并读取该接口

3:什么情况下使用moduleid=?,在一些如js_plugin接口情况下,在平台既没有套餐id也没服务id情况下,可以自己过滤实现获取平台数据交互

指令名 响应 说明
upgrade_service json 升级用户购买的服务配置
update_service_data json  更新用户服务配置。包含名称和配置 
custom_action 自定义  执行自定义的动作指令,返回自定义的响应格式,系统对返回的响应内容不做自动处理

主动式接口可额外接受到的post数据如下:

变量名 格式 说明
isagentpd int 如果等于1,代表当前服务对应产品是代理上级产品,否则自营产品(前提必须引用一个如serviceid或则productid主动进入的才能获得)
agentpd int 代理上级产品对应ID编号(非互相代理请略过该字段)
operatorID int 操作人用户id
serviceID int 当前用户服务id
productID int 当前用户服务产品id
userData int 当前用户数据
productData json 当前产品数据
productUpgrade json 当前产品升级数据
productConfig json  当前产品配置字段 
productType int 当前产品类型id
serviceData json  当前用户服务全部数据 
serviceConfig json  当前用户服务config字段中数据 
serviceStatus int 服务状态 (-2等待开通,-1正在开通,0正常服务,1暂停服务,2中止服务,3即将到期,4过期停止) 
ssid int  当前服务子id 
ssname string 当前服务子名称
asid int 代表当前产品服务是代理上级产品,该ID位上游网站的对应服务ID,否则等于空或则0
isAdmin string 是否管理员  是为小写true 普通用户为false 
isReseller string 判断当前操作人是否为上级代理  true是,false否
billingMethod int 1=周期付款 2= 一次性付款
billingCycle int 付款周期 如 1 代表 1个(月,天,小时)结合timeCycle确认单位
timeCycle int
0=月1=天2=小时
fprice float
首次服务的价格
price float
当前服务的价格
其他 * 其他自定义的post get数据

 

upgrade_service 指令:json 升级用户购买的服务配置,返回json数据,带“*”号必须返回:

key 格式 备注
price * float 升级所需费用,进行价格运算时,当productdata中折扣变量discount为负数时使用加减法,大于0时使用乘除法
serviceName * string 升级后的服务名称
noDiscount float 当前为1时禁止享受价格折扣,也可以从productdata中获取当前套餐默认折扣
description string  升级记录的相关描述信息 
其他 自定义 其他待保存的服务配置信息

 

update_service_data 指令:json 更新用户服务数据,包括名称和配置 返回的json数据:

key 格式 说明
serviceName string  服务名更新 
说明 反序列化 serviceconfig 并更新内部的servicename字段,并转换json传回

 

六:二次开发交流群

官方网站:http://www.rstack.com.cn/ 官方网站(备):http://www.rstack.io/ 二次开发交流群:545410580

免费使用RStack

即刻下载, 免费体验RStack正式版

开始免费试用 请求演示