|
@@ -44,8 +44,8 @@ class RefillBase
|
|
|
$this->mPolicy->load();
|
|
|
}
|
|
|
|
|
|
- public function first_quality($mchid) {
|
|
|
- return $this->mPolicy->first_quality($mchid);
|
|
|
+ public function find_quality($mchid,$spec,$card_type,$org_quality,$times,$period): array {
|
|
|
+ return $this->mPolicy->first_quality($mchid,$spec,$card_type,$org_quality,$times,$period);
|
|
|
}
|
|
|
|
|
|
public function notify($chname, $input)
|
|
@@ -131,14 +131,22 @@ class RefillBase
|
|
|
|
|
|
private function retry(array $refill_info, array $order_info)
|
|
|
{
|
|
|
- [$cantry,$quality] = $this->mPolicy->can_retry($refill_info,$order_info);
|
|
|
- if(!$cantry) return false;
|
|
|
+ $mchid = intval($refill_info['mchid']);
|
|
|
+ $spec = intval($refill_info['refill_amount']);
|
|
|
+ $card_type = intval($refill_info['card_type']);
|
|
|
+ $org_quality = intval($refill_info['org_quality']);
|
|
|
+ $used_time = time() - intval($refill_info['order_time']);
|
|
|
+ $commit_times = intval($refill_info['commit_times']);
|
|
|
+
|
|
|
+ [$org_quality,$quality] = $this->mPolicy->find_quality($mchid,$spec,$card_type,$org_quality,$commit_times,$used_time);
|
|
|
+ if($quality <= 0) return false;
|
|
|
|
|
|
$params = [ 'mchid' => $refill_info['mchid'],
|
|
|
'buyer_id' => $order_info['buyer_id'],
|
|
|
'amount' => $refill_info['refill_amount'],
|
|
|
'card_no' => $refill_info['card_no'],
|
|
|
- 'quality' => $quality,
|
|
|
+ 'card_type' => $refill_info['card_type'],
|
|
|
+ 'org_quality' => $org_quality,
|
|
|
'mch_order' => $refill_info['mch_order'],
|
|
|
'notify_url' => $refill_info['notify_url'],
|
|
|
'idcard' => $refill_info['idcard'] ?? '',
|
|
@@ -152,7 +160,7 @@ class RefillBase
|
|
|
}
|
|
|
|
|
|
public function zero_order($mchid, $buyer_id, $amount, $card_no,
|
|
|
- $mch_order, $idcard, $card_name, $notify_url,$quality,
|
|
|
+ $mch_order, $idcard, $card_name, $notify_url,$quality,$org_quality,
|
|
|
$order_time = 0, $commit_times = 0,$errmsg='')
|
|
|
{
|
|
|
$card_type = mtopcard\card_type($card_no);
|
|
@@ -193,7 +201,8 @@ class RefillBase
|
|
|
'mch_amount' => $mch_amount, 'channel_amount' => 0,
|
|
|
'order_time' => $order_time, 'commit_times' => $commit_times,
|
|
|
'commit_time' => time(),'notify_state' => 1,'notify_time' => time(),
|
|
|
- 'card_type' => $card_type, 'card_no' => $card_no,'quality' => $quality,'err_msg' => $errmsg];
|
|
|
+ 'card_type' => $card_type, 'card_no' => $card_no, 'quality' => $quality, 'org_quality' => $org_quality,
|
|
|
+ 'err_msg' => $errmsg];
|
|
|
$mod_refill->add_refill($orderext);
|
|
|
return $order_id;
|
|
|
}
|
|
@@ -202,20 +211,17 @@ class RefillBase
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- public function can_nettry($mchid,$quality,$order_time,$commit_times) : bool
|
|
|
- {
|
|
|
- return $this->mPolicy->can_nettry($mchid,$quality,$order_time,$commit_times);
|
|
|
- }
|
|
|
-
|
|
|
//$quality,质量
|
|
|
//返回值:[ 错误码,错误信息,订单ID,是否是网络错误]
|
|
|
//说明:错误码为true 表示成功
|
|
|
// 其它情况,则需要判断订单ID
|
|
|
public function add($mchid, $buyer_id, $amount, $card_no,
|
|
|
- $mch_order, $idcard, $card_name, $notify_url,$quality,
|
|
|
- $order_time, $commit_times,$last_orderid = 0)
|
|
|
+ $mch_order, $idcard, $card_name, $notify_url,$quality,$org_quality,
|
|
|
+ $order_time, $commit_times,$last_orderid = 0,$card_type = 0)
|
|
|
{
|
|
|
- $card_type = mtopcard\card_type($card_no);
|
|
|
+ if($card_type == 0) {
|
|
|
+ $card_type = mtopcard\card_type($card_no);
|
|
|
+ }
|
|
|
[$providers,$overload] = $this->mPolicy->find_providers($amount,$card_type,$quality);
|
|
|
|
|
|
if (empty($providers))
|
|
@@ -295,7 +301,7 @@ class RefillBase
|
|
|
'notify_url' => $notify_url, 'channel_name' => $channel_name,
|
|
|
'mch_amount' => $mch_amount, 'channel_amount' => $price,
|
|
|
'order_time' => $order_time, 'commit_times' => $commit_times,
|
|
|
- 'card_type' => $card_type, 'card_no' => $card_no,'quality' => $quality];
|
|
|
+ 'card_type' => $card_type, 'card_no' => $card_no,'quality' => $quality,'org_quality'=> $org_quality];
|
|
|
$mod_refill->add_refill($orderext);
|
|
|
} else {
|
|
|
Log::record("{$result['msg']}",Log::ERR);
|