rabin 1 year ago
parent
commit
df406e6363
3 changed files with 108 additions and 3 deletions
  1. 90 0
      database/refund.php
  2. 18 0
      lib/Core.php
  3. 0 3
      lib/Yspay.php

+ 90 - 0
database/refund.php

@@ -0,0 +1,90 @@
+<?php
+
+return array
+(
+	# 表名
+	'name' => 'refund',
+	# 显示给用户看的名称
+	'lang' => '退款订单',
+	'order' => 1,
+	'menu' => false,
+	# 数据结构
+	'struct' => array
+	(
+	
+		'id' 		=> array
+		(
+			'type' 		=> 'int-11',
+			'name' 		=> 'ID',
+			'default' 	=> '',
+			'desc' 		=> '',
+			'match' 	=> 'is_numeric',
+			'search'	=> 'order',
+			//'list'		=> true,
+		),
+
+		'order_id'		=> array
+		(
+			'type' 		=> 'int-11',
+			'name' 		=> '订单id',
+			'default' 	=> '',
+			'desc' 		=> '订单id',
+			'match' 	=> 'is_numeric',
+			'update'	=> 'text',
+			'search'	=> 'fulltext',
+			'list'		=> true,
+		),
+
+		'order_num'		=> array
+		(
+			'type' 		=> 'varchar-200',
+			'name' 		=> '退款订单号',
+			'default' 	=> '',
+			'desc' 		=> '退款订单号',
+			'match' 	=> 'is_numeric',
+			'update'	=> 'text',
+			'search'	=> 'fulltext',
+			'list'		=> true,
+		),
+
+		'cash'		=> array
+		(
+			'type' 		=> 'varchar-11',
+			'name' 		=> '退款金额',
+			'default' 	=> '',
+			'desc' 		=> '金额',
+			'match' 	=> 'is_string',
+			'update'	=> 'text',
+			'list'		=> true,
+		),
+
+		'state'		=> array
+		(
+			'type' 		=> 'tinyint-1',
+			'name' 		=> '状态',
+			'default' 	=> '1',
+			'desc' 		=> '请选择状态',
+			'match' 	=> 'is_numeric',
+		),
+		
+		'cdate'		=> array
+		(
+			'type' 		=> 'int-11',
+			'name' 		=> '申请时间',
+			'match' 	=> array('is_numeric', time()),
+			'desc' 		=> '',
+			# 只有insert时才生效
+			'insert'	=> true,
+			'search'	=> 'date',
+			'list'		=> 'date("Y-m-d H:i:s", {cdate})',
+		),
+	),
+
+	'manage' => array
+	(
+		'insert' => false,
+		'edit' => false,
+		'delete' => false,
+		'excel' => true,
+	),
+);

+ 18 - 0
lib/Core.php

@@ -183,10 +183,28 @@ class Core
 				$info['param'] = Dever::array_decode($info['param']);
 			}
 			$cash = $refund_cash ? $refund_cash : $info['cash'];
+			$refund_data = array();
+			if ($refund_order_id) {
+				# 检测该订单是否退款过
+				$refund_data['order_id'] = $order_id;
+				$refund_data['order_num'] = $refund_order_id;
+				if ($refund_cash) {
+					$refund_data['cash'] = $refund_cash;
+				}
+				$refund_data['clear'] = true;
+				$state = Dever::db('pay/refund')->one($refund_data);
+				if ($state) {
+					return false;
+				}
+				$refund_order_id = $refund_order_id . '_' . Dever::order();
+			}
 			$state = $this->refund($info['order_id'], $cash, $info, $refund_order_id);
 			if ($state) {
 				if ($refund_order_id) {
 					$status = 6;
+					if ($refund_data) {
+						Dever::db('pay/refund')->insert($refund_data);
+					}
 				} else {
 					$status = 5;
 				}

+ 0 - 3
lib/Yspay.php

@@ -229,9 +229,6 @@ class Yspay extends Core
 	# 退款
 	public function refund($order_id, $cash, $order, $refund_order_id = false)
 	{
-		if ($refund_order_id) {
-			$refund_order_id = $refund_order_id . '_' . Dever::order();
-		}
 		if (isset($this->config['prefix']) && $this->config['prefix']) {
 			$request['merOrderId'] = $this->config['prefix'] . $order_id;
 			if ($refund_order_id) {