* @version : HUOSDK 8.0 */ namespace huo\controller\wallet; use huo\controller\common\Base; use huo\controller\common\CommonFunc; use huo\controller\member\MemCache; use huo\controller\member\MemWallet; use huo\logic\finance\PtbChargeLogic; use huo\logic\finance\PtbOrderLogic; use huo\model\finance\PtbChargeModel; use huolib\constant\WalletConst; use huolib\status\CommonStatus; use huolib\status\MemberStatus; use huolib\status\OrderStatus; use huolib\status\SettleStatus; use huolib\tool\StrUtils; class Ptb extends Base { protected function retSucMsg($code, $data = []) { $_msg = OrderStatus::getMsg($code); return $this->huoSuccess($code, $_msg, $data); } protected function retErrMsg($code) { $_err_msg = OrderStatus::getMsg($code); return $this->huoError($code, $_err_msg); } /** * * @param $mem_id * @param array $param * @param string $page * @param string $order * * @return array */ public function getMemChargeList($mem_id, $param = [], $page = '1,10', $order = '-create_time') { $_data = (new PtbChargeLogic())->getMemList($mem_id, $param, $page, $order); return $this->retSucMsg(CommonStatus::NO_ERROR, $_data); } public function getMemConsumeList($mem_id, $param = [], $page = '1,10', $order = '-create_time') { $_data = (new PtbOrderLogic())->getMemList($mem_id, $param, $page, $order); return $this->retSucMsg(CommonStatus::NO_ERROR, $_data); } /** * 预下单 * * @param $mem_id * @param $amount * * @param $type * @param $payway * * @return array|bool|string */ public function preorder($mem_id, $amount, $type, $payway) { if (empty($mem_id)) { $_code = MemberStatus::LOGIN_IS_OUT; return $this->huoError($_code, MemberStatus::getMsg($_code)); } if (empty($amount) || $amount < 1) { $_code = OrderStatus::ORDER_AMOUNT_MINIMUM_IS_1; return $this->huoError($_code, OrderStatus::getMsg($_code)); } $_mc_class = MemCache::ins(); $_mem_data = $_mc_class->getInfoById($mem_id); $_me_data = $_mc_class->getMeInfoById($mem_id); if (empty($_mem_data) || empty($_me_data)) { $_code = MemberStatus::UID_INVALID; return $this->huoError($_code, MemberStatus::getMsg($_code)); } $_wr_class = new WalletRequest(); $_order_id = StrUtils::genOrderId($_mem_data['agent_id'], $_mem_data['agent_id'], $mem_id, WalletConst::WALLET_ORDER_PREFIX_PC); $_wr_class->setOrderId($_order_id); $_wr_class->setRealAmount($amount); $_wr_class->setType($type); $_wr_class->setPayway($payway); $_wr_class->setMemId($mem_id); // TODO: wuyonghong 2018/4/27 折扣处理 $_wr_class->setAmount($amount); $_ptb_cnt = floor($amount * CommonFunc::getPtbRmbRate()); $_wr_class->setPtbCnt($_ptb_cnt); $_rs = (new MemWallet())->createPcOrder($_wr_class); if (SettleStatus::NO_ERROR != $_rs) { return $this->huoError($_rs, SettleStatus::getMsg($_rs)); } $_rdata['order_id'] = $_order_id; return $this->retSucMsg(OrderStatus::NO_ERROR, $_rdata); } /** * @param $order_id * * @return bool */ public function getStatus($order_id = '') { if (empty($order_id)) { return false; } $_o_model = new PtbChargeModel(); $_rs = $_o_model->getStatus($order_id); if (false == $_rs) { return false; } return $_rs; } /** * @param string $app_id * * @return array */ public function getPayWays($app_id) { // TODO: wuyonghong 2018/4/28 从数据库读取 if (empty($app_id)) { /* 获取支付方式 */ $_rdata[0]['payway'] = 'alipay'; $_rdata[0]['name'] = '支付宝'; $_rdata[0]['icon'] = ''; $_rdata[0]['url'] = STATICSITE.'/h5sdk/images/arwec.png'; $_rdata[1]['payway'] = 'wxpay'; $_rdata[1]['name'] = '微信'; $_rdata[1]['icon'] = STATICSITE.'/h5sdk/images/wergcder.png'; $_rdata[1]['url'] = '支付宝'; } /* 获取支付方式 */ $_rdata[0]['payway'] = 'alipay'; $_rdata[0]['name'] = '支付宝'; $_rdata[0]['icon'] = STATICSITE.'/h5sdk/images/arwec.png'; $_rdata[0]['url'] = '支付宝'; $_rdata[1]['payway'] = 'wxpay'; $_rdata[1]['name'] = '微信'; $_rdata[1]['icon'] = STATICSITE.'/h5sdk/images/wergcder.png'; $_rdata[1]['url'] = '支付宝'; $_rdata[2]['payway'] = 'shengpay'; $_rdata[2]['name'] = '银行卡'; $_rdata[2]['icon'] = STATICSITE.'/h5sdk/images/upcash.png'; $_rdata[2]['url'] = '银行卡'; return $_rdata; } /** * 查询微信订单 * * @param $order_id */ public function queryWxOrder($order_id) { // TODO: wuyonghong 2018/5/7 查询订单完成情况 } }