syntax = "proto3"; package reseller.resellerv1; import "validate/validate.proto"; option go_package = "./reseller/resellerv1;resellerv1"; // 分销商余额变更分布式事务TCC服务 service BalanceUpdateTcc { // 冻结金额(由于底层只有一个字段,所以调用后余额就真实发生了改变) // 此接口权限比较大,对接方请仔细测试,以免造成公司财产损失 rpc Try(BalanceUpdateTccTryReq) returns (BalanceUpdateTccTryResp) {} // 确认操作(确认的目的是减少定时系统核对一致性的数据量) rpc Confirm(BalanceUpdateTccConfirmReq) returns (BalanceUpdateTccConfirmResp) {} // 取消操作(回滚金额) rpc Cancel(BalanceUpdateTccCancelReq) returns (BalanceUpdateTccCancelResp) {} } message BalanceUpdateTccTryReq { // 原子请求id,在相同type下唯一,如:有新业务接入时,请联系相关负责人分配type string request_id = 1 [(validate.rules).string = {min_len:1,max_len:100}]; // 分销商id int32 reseller_id = 2; // 金额:单位元,保留4位小数 double money = 3 [(validate.rules).double.gt = 0]; // 操作,请特别注意不要传错此字段,此接口权限比较大,对接方请仔细测试,以免造成公司财产损失 Operate operate = 4 [(validate.rules).enum.defined_only = true]; // 类型:1-充值、2直连天下订单消费、3冲账、4退款、5扣款、6授信、7卡密订单消费,更多类型请看值对象:ResellerLogTypeObj int32 type = 5 [(validate.rules).int32.gt = 0]; // 备注 string remark = 8; // 执行操作的人:0表示系统自动执行、非0则根据executor_type来判断是后台人员还是分销商 int32 executor = 11; // 执行操作的人的类型0系统 1后台 2分销商 ExecutorType executor_type = 12 [(validate.rules).enum.defined_only = true]; // 异常时回查的http地址 // HTTP协议:如果为开头为http时,会使用HTTP协议,请求地址为:query_url + "?requestId=" + request_id。响应结构为{"status":1},1未知,2成功,3失败,当返回失败时,会回滚余额的操作 // GRPC协议,非http开头时,会使用GRPC协议,格式为{addr@methodName},其中addr为服务地址,methodName为方法名(在生成的*_grpc.pb.goGRPC文件中找到FullMethodName的常量值),如:192.168.6.194:9002@/user.userv1.Query/Query // GRPC接口的请求和响应pb如下: /* // 请求参数 message QueryReq { // 原子请求id,结构为:"业务标识-业务数据id-雪花ID",如:yum-123-123456789012345678,有新业务接入时,请联系相关负责人分配业务标识 string request_id = 1; } message QueryResp { // 查询结果,1未知,2成功,3失败,当返回失败时,会回滚余额的操作 int32 status = 1; } */ string query_url = 13; // 关联账户ID uint32 relation_account_id = 14; // 扣款帐户ID uint32 account_id = 15; // 业务单号 string business_no = 16; // 是否允许冻结状态的余额减少,默认不允许,只有扣款时才有意义 bool is_allow_frozen_decrease = 17; // 余额变更操作 enum Operate { BALANCE_OPERATE_DECREASE = 0; // 减少 BALANCE_OPERATE_INCREASE = 1; // 增加 } // 操作人类型 enum ExecutorType { BALANCE_EXECUTOR_TYPE_SYSTEM = 0; // 系统自动 BALANCE_EXECUTOR_TYPE_ADMIN = 1; // 后台操作 BALANCE_EXECUTOR_TYPE_RESELLER = 2; // 分销商操作 } } message BalanceUpdateTccTryResp { } message BalanceUpdateTccConfirmReq { // 原子请求id string request_id = 1 [(validate.rules).string = {min_len:1,max_len:100}]; // 更多类型请看值对象中的限制。百胜支付订单为9,更多类型请看值对象:ResellerLogTypeObj int32 type = 5 [(validate.rules).int32.gt = 0]; } message BalanceUpdateTccConfirmResp { } message BalanceUpdateTccCancelReq { // 原子请求id string request_id = 1 [(validate.rules).string = {min_len:1,max_len:100}]; // 更多类型请看值对象中的限制。百胜支付订单为9,更多类型请看值对象:ResellerLogTypeObj int32 type = 5 [(validate.rules).int32.gt = 0]; } message BalanceUpdateTccCancelResp { }