ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
Ucenter paycenter shop之间是通过CURL进行通信。 原理及流程: 在各个系统目录configs下有对应的接口配置,如shop_api.ini.php ucenter_api.ini.php paycenter_api.ini.php 都有自己对应的app id,与ucenter admin应用配置是相同的,且要开启。服务网址必须正确。 各系统中都有get_url_with_encrypt 函数。 通过各个对应的app id都会作为参数。 该函数会生成签名,向指定的paycenter shop ucenter中请求。 同时在接收方会有自动验证是否合法。由 `check_url_with_encrypt` 完成签名认证。 具体代码可在 `Shop/shop/controllers/Api/Controller.php`查看。 举例:`Shop/shop/controllers/Api/User/InfoCtl.php` /** * 获取修改会员信息 * * @access public */ public function editInfo() { $user_id = request_int('user_id'); $order_row['user_id'] = $user_id; $data = $this->userInfoModel->getUserInfo($order_row); if ($data) { //会员的钱 $key = Yf_Registry::get('shop_api_key'); $formvars = array(); $formvars['user_id'] = $user_id; $formvars['app_id'] = Yf_Registry::get('shop_app_id'); $money_row = get_url_with_encrypt($key, sprintf('%s?ctl=Api_User_Info&met=getUserResourceInfo&typ=json', Yf_Registry::get('paycenter_api_url')), $formvars); if ($money_row['status'] == '200') { $money = $money_row['data']; $data['user_cash'] = $money[$user_id]['user_money']; $data['user_freeze_cash'] = $money[$user_id]['user_money_frozen']; } else { $data['user_cash'] = 0; $data['user_freeze_cash'] = 0; } $re = $this->userResourceModel->getOne($order_row); $de = $this->userBaseModel->getOne($order_row); $data['user_points'] = $re['user_points']; $data['user_growth'] = $re['user_growth']; $data['user_delete'] = $de['user_delete']; } $this->data->addBody(-140, $data); } 其中 `get_url_with_encrypt` 为核心CURL函数,在paycenter ucenter shop都是存在的。 自带token请求数据。 三者之间通信通过 get_url_with_encrypt($key, sprintf('%s?ctl=Api_User_Info&met=getUserResourceInfo&typ=json', Yf_Registry::get('paycenter_api_url')), $formvars); 类似这样的请求来完成对相应系统数据的读写。 当商城需要获取用户信息时, 首先是组织接口所需要的数据。 $formvars['user_id'] = $user_id; //需要获取用户的id $formvars['app_id'] = Yf_Registry::get('shop_app_id'); //当前shop的app_id,在configs/shop_api.ini.php中配置。 当请求完成并返回status为200状态时,则该操作成功。 数据库操作说明 Yf_Model 为数据层,其为Yf_Sql的进一步封装,使用Model层实现基本无需手写SQL实现对数据库的操作。 其中add edit为最常用方法。 sql属性可直接调用Yf_Sql中的方法。 Yf_Sql是对SQL的拼接,是真正直接调用PDO操作数据库的。