|
@@ -317,13 +317,9 @@ class RefillBase
|
|
|
try
|
|
|
{
|
|
|
$minfo = new member_info($order->buyer_id());
|
|
|
- $org_quality = $order->org_quality();
|
|
|
- if(PolicyUtil::mixed_quality($org_quality)) {
|
|
|
- $calc = new CalcMerchantPrice($mchid, $order->spec(), $order->card_type(),$org_quality,$this->mPolicy,$order->thrid_params());
|
|
|
- }
|
|
|
- else {
|
|
|
- $calc = new CalcMerchantPrice($mchid, $order->spec(), $order->card_type(),$order->cur_quality(),$this->mPolicy,$order->thrid_params());
|
|
|
- }
|
|
|
+
|
|
|
+ $calc = $this->getMerchantPriceCalc($order);
|
|
|
+
|
|
|
$mch_price = $calc->calc_vgoods_price([]);
|
|
|
$mch_amount = $mch_price * $order->quantity();
|
|
|
}
|
|
@@ -364,9 +360,18 @@ class RefillBase
|
|
|
public function zero_order(order $order,$errmsg='')
|
|
|
{
|
|
|
$buyer_id = $order->buyer_id();
|
|
|
- $minfo = new member_info($buyer_id);
|
|
|
- $calc = new ZeroMerchantPrice($order->mchid(), $order->spec(), $order->card_type(),$order->cur_quality());
|
|
|
- $mch_amount = $calc->calc_vgoods_price([]);
|
|
|
+
|
|
|
+ try
|
|
|
+ {
|
|
|
+ $minfo = new member_info($order->buyer_id());
|
|
|
+ $calc = $this->getMerchantPriceCalc($order);
|
|
|
+ $mch_price = $calc->calc_vgoods_price([]);
|
|
|
+ $mch_amount = $mch_price * $order->quantity();
|
|
|
+ }
|
|
|
+ catch (Exception $ex) {
|
|
|
+ $mch_price = 0.00;
|
|
|
+ $mch_amount = 0.00;
|
|
|
+ }
|
|
|
|
|
|
$input['goods_id'] = ZERO_GOODS_ID;
|
|
|
$input['quantity'] = 1; //数量
|
|
@@ -428,11 +433,7 @@ class RefillBase
|
|
|
|
|
|
try
|
|
|
{
|
|
|
- if (PolicyUtil::mixed_quality($org_quality)) {
|
|
|
- $calc = new CalcMerchantPrice($mchid, $order->spec(), $order->card_type(), $org_quality, $this->mPolicy, $order->thrid_params());
|
|
|
- } else {
|
|
|
- $calc = new CalcMerchantPrice($mchid, $order->spec(), $order->card_type(), $order->cur_quality(), $this->mPolicy, $order->thrid_params());
|
|
|
- }
|
|
|
+ $calc = $this->getMerchantPriceCalc($order);
|
|
|
$mch_price = $calc->calc_vgoods_price([]);
|
|
|
$mch_amount = $mch_price * $order->quantity();
|
|
|
|
|
@@ -475,12 +476,8 @@ class RefillBase
|
|
|
{
|
|
|
$minfo = new member_info($order->buyer_id());
|
|
|
$org_quality = $order->org_quality();
|
|
|
- if(PolicyUtil::mixed_quality($org_quality)) {
|
|
|
- $calc = new CalcMerchantPrice($mchid, $order->spec(), $order->card_type(),$org_quality,$this->mPolicy,$order->thrid_params());
|
|
|
- }
|
|
|
- else {
|
|
|
- $calc = new CalcMerchantPrice($mchid, $order->spec(), $order->card_type(),$order->cur_quality(),$this->mPolicy,$order->thrid_params());
|
|
|
- }
|
|
|
+ $calc = $this->getMerchantPriceCalc($order);
|
|
|
+
|
|
|
$mch_price = $calc->calc_vgoods_price([]);
|
|
|
$mch_amount = $mch_price * $order->quantity();
|
|
|
}
|
|
@@ -1233,4 +1230,21 @@ class RefillBase
|
|
|
{
|
|
|
return $this->mPolicy->is_over_chspeed($chname);
|
|
|
}
|
|
|
+
|
|
|
+ /**
|
|
|
+ * @param order $order
|
|
|
+ * @param $mchid
|
|
|
+ * @return CalcMerchantPrice
|
|
|
+ * @throws Exception
|
|
|
+ */
|
|
|
+ public function getMerchantPriceCalc(order $order): CalcMerchantPrice
|
|
|
+ {
|
|
|
+ $org_quality = $order->org_quality();
|
|
|
+ if (PolicyUtil::mixed_quality($org_quality)) {
|
|
|
+ $calc = new CalcMerchantMixedPrice($order, $org_quality, $this->mPolicy, $order->thrid_params());
|
|
|
+ } else {
|
|
|
+ $calc = new CalcMerchantPrice($order, $order->cur_quality(), $this->mPolicy, $order->thrid_params());
|
|
|
+ }
|
|
|
+ return $calc;
|
|
|
+ }
|
|
|
}
|