|
@@ -0,0 +1,172 @@
|
|
|
+<?php
|
|
|
+
|
|
|
+class lzrefillControl extends lzbaseControl
|
|
|
+{
|
|
|
+ public function __construct()
|
|
|
+ {
|
|
|
+ parent::__construct();
|
|
|
+ }
|
|
|
+
|
|
|
+ public function goodsOp()
|
|
|
+ {
|
|
|
+ $result = refill\RefillFactory::instance()->goods();
|
|
|
+ $sorter = function (array $items) {
|
|
|
+ $ret = [];
|
|
|
+ foreach ($items as $key => $val) {
|
|
|
+ sort($val);
|
|
|
+ $ret[$key] = $val;
|
|
|
+ }
|
|
|
+ return $ret;
|
|
|
+ };
|
|
|
+
|
|
|
+ $result = $sorter($result);
|
|
|
+ return self::outsuccess($result);
|
|
|
+ }
|
|
|
+
|
|
|
+ private function check_params($params)
|
|
|
+ {
|
|
|
+ if(empty($params['mob'])) {
|
|
|
+ return -9;
|
|
|
+ }
|
|
|
+ if(empty($params['amt'])) {
|
|
|
+ return -9;
|
|
|
+ }
|
|
|
+
|
|
|
+ $card_no = $_GET['cardno'];
|
|
|
+ if(!preg_match('/^1\d{10}$/',$card_no,$matches)) {
|
|
|
+ return -11;
|
|
|
+ }
|
|
|
+
|
|
|
+ if(empty($params['notifyurl'])) {
|
|
|
+ return -9;
|
|
|
+ }
|
|
|
+
|
|
|
+ if(empty($params['ord'])) {
|
|
|
+ return -9;
|
|
|
+ }
|
|
|
+
|
|
|
+ //todo 增加时间判断
|
|
|
+
|
|
|
+ return true;
|
|
|
+ }
|
|
|
+
|
|
|
+ public function add_mobOp()
|
|
|
+ {
|
|
|
+ $code = $this->check_params($_GET);
|
|
|
+ if($code !== true) {
|
|
|
+ return self::outerr($code,$this->available);
|
|
|
+ }
|
|
|
+
|
|
|
+ $amount = intval($_GET['amt']);
|
|
|
+ $card_no = $_GET['mob'];
|
|
|
+ $notify_url = $_GET['notifyurl'];
|
|
|
+ $mch_order = $_GET['ord']; //对方的order编号
|
|
|
+
|
|
|
+ if($amount > $this->available) {
|
|
|
+ return self::outerr(4,$this->available);
|
|
|
+ }
|
|
|
+
|
|
|
+ if(!$this->check_mchorder($this->mchid(),$mch_order)) {
|
|
|
+ return self::outerr(11,$this->available);
|
|
|
+ }
|
|
|
+
|
|
|
+ if(!$this->can_refill($card_no)) {
|
|
|
+ return self::outerr(10,$this->available);
|
|
|
+ }
|
|
|
+
|
|
|
+ $params = [ 'mchid' => $this->mchid(),
|
|
|
+ 'buyer_id' => $this->adminid(),
|
|
|
+ 'amount' => $amount,
|
|
|
+ 'card_no' => $card_no,
|
|
|
+ 'mch_order' => $mch_order,
|
|
|
+ 'notify_url' => $notify_url];
|
|
|
+ $ret = refill\util::push_add($params);
|
|
|
+
|
|
|
+ if($ret) {
|
|
|
+ return self::outsuccess($this->available);
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ return self::outerr(-6,$this->available);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ private function can_refill($cardno)
|
|
|
+ {
|
|
|
+ $card_info = refill\util::read_card($cardno);
|
|
|
+ if(empty($card_info)) return false;
|
|
|
+
|
|
|
+ return intval($card_info['black_card']) === 0;
|
|
|
+ }
|
|
|
+
|
|
|
+ private function check_mchorder($mchid,$mch_order)
|
|
|
+ {
|
|
|
+ if(empty($mch_order)) {
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ $refill_order = Model('refill_order');
|
|
|
+ $ret = $refill_order->getOrderInfo(['mchid' => $mchid,'mch_order' => $mch_order]);
|
|
|
+
|
|
|
+ return empty($ret);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ public function balanceOp()
|
|
|
+ {
|
|
|
+ $uid = $this->adminid();
|
|
|
+ $minfo = new member_info($uid);
|
|
|
+ $available = $minfo->available_predeposit();
|
|
|
+ return self::outsuccess(['balance' => $available]);
|
|
|
+ }
|
|
|
+
|
|
|
+ private function format($order_info,$refill_info)
|
|
|
+ {
|
|
|
+ $result = [];
|
|
|
+
|
|
|
+ $result['mchid'] = $refill_info['mchid'];
|
|
|
+ $result['trade_no'] = $refill_info['order_sn'];
|
|
|
+ $result['order_sn'] = $refill_info['mch_order'];
|
|
|
+ $result['card_no'] = $refill_info['card_no'];
|
|
|
+ $result['card_type'] = $refill_info['card_type'];
|
|
|
+ $result['refill_amount'] = $refill_info['refill_amount'];
|
|
|
+ $result['order_amount'] = $refill_info['mch_amount'];
|
|
|
+ $result['order_time'] = $refill_info['order_time'];
|
|
|
+ $result['success_time'] = $refill_info['notify_time'];
|
|
|
+ $result['order_state'] = $order_info['order_state'];
|
|
|
+
|
|
|
+ return $result;
|
|
|
+ }
|
|
|
+
|
|
|
+ public function queryOp()
|
|
|
+ {
|
|
|
+ $mchid = $this->mchid();
|
|
|
+ $order_sn = $_GET['ord']; //用户方的订单号,对应数据库中的mch_order
|
|
|
+
|
|
|
+ if(empty($order_sn)) {
|
|
|
+ return self::outerr(201,);
|
|
|
+ }
|
|
|
+
|
|
|
+ $mod_refill = Model('refill_order');
|
|
|
+ $refill_info = $mod_refill->getOrderInfo(['mch_order' => $order_sn,'mchid' => $mchid,'inner_status' => 0]);
|
|
|
+
|
|
|
+ if(empty($refill_info)) {
|
|
|
+ return self::outerr(201,"无此订单");
|
|
|
+ }
|
|
|
+
|
|
|
+ $vr_order = Model('vr_order');
|
|
|
+ $order_info = $vr_order->getOrderInfo(['order_sn' => $refill_info['order_sn']]);
|
|
|
+
|
|
|
+ if(empty($order_info)) {
|
|
|
+ return self::outerr(201,"无此交易号");
|
|
|
+ }
|
|
|
+
|
|
|
+ if($order_info['order_state'] == ORDER_STATE_SEND) {
|
|
|
+ QueueClient::push("QueryRefillState",['order_id' => $refill_info['order_id']]);
|
|
|
+ }
|
|
|
+
|
|
|
+ $result = $this->format($order_info,$refill_info);
|
|
|
+
|
|
|
+ return self::outsuccess($result);
|
|
|
+ }
|
|
|
+
|
|
|
+}
|