소스 검색

Merge branch 'raccount' into rchannel

xiaoyu 1 년 전
부모
커밋
5ad9602234
93개의 변경된 파일2479개의 추가작업 그리고 8515개의 파일을 삭제
  1. 12 1
      admin/config/config.ini.php
  2. 59 5
      admin/control/ordersendlist.php
  3. 6 0
      admin/templates/default/merchant.ctl.php
  4. 1 0
      admin/templates/default/merchant.price.php
  5. 11 0
      admin/templates/default/refill.order.exception.php
  6. 1 0
      admin/templates/default/third.merchant.price.php
  7. 12 5
      data/config/xyz/refill.ini.php
  8. 14 0
      data/config/yl/refill.ini.php
  9. 0 117
      data/config/youjun/base.ini.php
  10. 0 81
      data/config/youjun/pay.ini.php
  11. 0 6591
      data/config/youjun/refill.ini.php
  12. 0 1458
      data/config/youjun/refill.ini.php.bak
  13. 0 26
      data/config/youjun/special.ini.php
  14. 0 29
      data/config/youjun/srv.ini.php
  15. 0 9
      data/config/youjun/ugcman.config.ini
  16. 0 92
      data/config/youjun/vgoods.ini.php
  17. 0 14
      data/config/youjun/webacc.config.ini
  18. 186 28
      data/config/zy/refill.ini.php
  19. 1 1
      data/logic/queue.logic.php
  20. 23 0
      data/model/refill_exception.model.php
  21. 0 32
      docker/compose/youjun/acc/docker-compose.yml
  22. 2 2
      docker/compose/youjun/conf/nginx/nginx_admin.conf
  23. 2 4
      docker/compose/youjun/admin/docker-compose.yml
  24. 0 2
      helper/mtopcard/mtopcard.php
  25. 14 0
      helper/refill/api/xyz/bier_fs/config.php
  26. 15 0
      helper/refill/api/xyz/bier_fs/椰子.txt
  27. BIN
      helper/refill/api/xyz/dezhi_fs/20230625浙江移动调价函.jpg
  28. BIN
      helper/refill/api/xyz/dezhi_fs/20230626广东移动调价函.jpg
  29. 4 2
      helper/refill/api/xyz/dezhi_fs/config.php
  30. 39 0
      helper/refill/api/xyz/feihan_fetch/RefillCallBack.php
  31. 61 0
      helper/refill/api/xyz/feihan_fetch/RefillPhone.php
  32. 20 0
      helper/refill/api/xyz/feihan_fetch/config.php
  33. BIN
      helper/refill/api/xyz/guochuang/20230619辽宁广东移动调价函.jpg
  34. BIN
      helper/refill/api/xyz/guochuang/20230621辽宁移动调价函.jpg
  35. BIN
      helper/refill/api/xyz/guochuang/20230626辽宁移动调价函.jpg
  36. BIN
      helper/refill/api/xyz/guochuang/20230626陕西移动调价函.jpg
  37. 3 3
      helper/refill/api/xyz/guochuang/config.php
  38. BIN
      helper/refill/api/xyz/hanwei_fs/20230626重庆移动调价函.jpg
  39. 13 0
      helper/refill/api/xyz/hanwei_fs/api.txt
  40. 17 1
      helper/refill/api/xyz/hanwei_fs/config.php
  41. 10 0
      helper/refill/api/xyz/jinfeng_fs/api.txt
  42. 7 0
      helper/refill/api/xyz/jinfeng_fs/config.php
  43. 1 1
      helper/refill/api/xyz/meixu/config.php
  44. 4 1
      helper/refill/api/xyz/meixu/对接文档-yezi.txt
  45. 15 0
      helper/refill/api/xyz/qianqian_fs/api.txt
  46. 14 0
      helper/refill/api/xyz/qianqian_fs/config.php
  47. 4 1
      helper/refill/api/xyz/zhongst_oil/RefillCallBack.php
  48. 14 0
      helper/refill/api/yl/bier_fs/config.php
  49. 4 2
      helper/refill/api/yl/dezhi_fs/config.php
  50. 3 3
      helper/refill/api/yl/guochuang/config.php
  51. 17 1
      helper/refill/api/yl/hanwei_fs/config.php
  52. 7 0
      helper/refill/api/yl/jinfeng_fs/config.php
  53. 14 0
      helper/refill/api/yl/qianqian_fs/config.php
  54. 76 0
      helper/refill/api/yl/qudaibaby/RefillCallBack.php
  55. 161 0
      helper/refill/api/yl/qudaibaby/RefillPhone.php
  56. 7 0
      helper/refill/api/yl/qudaibaby/api.txt
  57. 13 0
      helper/refill/api/yl/qudaibaby/config.php
  58. 76 0
      helper/refill/api/zy/blueciyuefeiy/RefillCallBack.php
  59. 161 0
      helper/refill/api/zy/blueciyuefeiy/RefillPhone.php
  60. 7 0
      helper/refill/api/zy/blueciyuefeiy/api.txt
  61. 13 0
      helper/refill/api/zy/blueciyuefeiy/config.php
  62. 76 0
      helper/refill/api/zy/huanxishuqy/RefillCallBack.php
  63. 176 0
      helper/refill/api/zy/huanxishuqy/RefillPhone.php
  64. 7 0
      helper/refill/api/zy/huanxishuqy/api.txt
  65. 13 0
      helper/refill/api/zy/huanxishuqy/config.php
  66. 76 0
      helper/refill/api/zy/momokafei/RefillCallBack.php
  67. 161 0
      helper/refill/api/zy/momokafei/RefillPhone.php
  68. 7 0
      helper/refill/api/zy/momokafei/api.txt
  69. 13 0
      helper/refill/api/zy/momokafei/config.php
  70. 76 0
      helper/refill/api/zy/qudaiwafeiy/RefillCallBack.php
  71. 161 0
      helper/refill/api/zy/qudaiwafeiy/RefillPhone.php
  72. 7 0
      helper/refill/api/zy/qudaiwafeiy/api.txt
  73. 13 0
      helper/refill/api/zy/qudaiwafeiy/config.php
  74. 76 0
      helper/refill/api/zy/wangxinnoy/RefillCallBack.php
  75. 161 0
      helper/refill/api/zy/wangxinnoy/RefillPhone.php
  76. 7 0
      helper/refill/api/zy/wangxinnoy/api.txt
  77. 13 0
      helper/refill/api/zy/wangxinnoy/config.php
  78. 76 0
      helper/refill/api/zy/yunshanfeiy/RefillCallBack.php
  79. 161 0
      helper/refill/api/zy/yunshanfeiy/RefillPhone.php
  80. 7 0
      helper/refill/api/zy/yunshanfeiy/api.txt
  81. 13 0
      helper/refill/api/zy/yunshanfeiy/config.php
  82. 1 1
      helper/refill/policy/PolicyUtil.php
  83. 2 1
      helper/refill/policy/mchctl.php
  84. 2 1
      helper/refill/policy/quaility.php
  85. 2 0
      helper/refill/policy/xyz/quality_ploy.php
  86. BIN
      mch_turn-refill.png
  87. 4 0
      mobile/callback/refill_blueciyuefeiy.php
  88. 4 0
      mobile/callback/refill_huanxishuqy.php
  89. 4 0
      mobile/callback/refill_momokafei.php
  90. 4 0
      mobile/callback/refill_qudaibaby.php
  91. 4 0
      mobile/callback/refill_qudaiwafeiy.php
  92. 4 0
      mobile/callback/refill_wangxinnoy.php
  93. 4 0
      mobile/callback/refill_yunshanfeiy.php

+ 12 - 1
admin/config/config.ini.php

@@ -44,7 +44,6 @@ if(defined('COMPANY_NAME') && COMPANY_NAME === 'XYZ_COMPANY')
     ];
 
     $config['WEB_COMPANY_NAME'] = '椰子电子商务责任有限公司';
-
 }
 elseif(defined('COMPANY_NAME') && COMPANY_NAME === 'ZY_COMPANY')
 {
@@ -61,6 +60,18 @@ elseif(defined('COMPANY_NAME') && COMPANY_NAME === 'ZY_COMPANY')
 
     $config['WEB_COMPANY_NAME'] = '北京榜样在线科技有限公司';
 }
+elseif(defined('COMPANY_NAME') && COMPANY_NAME === 'YOUJUN_COMPANY')
+{
+    $config['receive_bank'] = [
+    ];
+
+    $config['test_mchid'] = [
+
+    ];
+
+    $config['WEB_COMPANY_NAME'] = '上海酉俊信息科技有限公司';
+}
+
 else
 {
     $config['receive_bank'] = [

+ 59 - 5
admin/control/ordersendlist.php

@@ -427,10 +427,9 @@ class ordersendlistControl extends SystemControl
     private function RefillOrderExport($cond, $method_name = '', $type='order')
     {
         $result = [];
-        if($type == 'order') {
+        if ($type == 'order') {
             $result = Model('refill_order')->getAllOrders($cond);
-
-        }elseif($type == 'time_out_order'){
+        } elseif ($type == 'time_out_order') {
             $result = Model('refill_order')->getAllTimeOutOrders($cond);
         }
         $this->createExcel($result, $method_name);
@@ -455,7 +454,7 @@ class ordersendlistControl extends SystemControl
         $excel_data[0][] = array('styleid' => 's_title', 'data' => '完成日期');
         $excel_data[0][] = array('styleid' => 's_title', 'data' => '官方流水号');
         $excel_data[0][] = array('styleid' => 's_title', 'data' => '订单状态');
-//        $excel_data[0][] = array('styleid' => 's_title', 'data' => '扣款金额');
+
         //data
         foreach ((array)$data as $v) {
             $tmp = array();
@@ -474,7 +473,6 @@ class ordersendlistControl extends SystemControl
 
             $tmp[] = array('data' => $v['official_sn']);
             $tmp[] = array('data' => orderState($v));
-//            $tmp[] = array('data' => $v['mch_amount']);
             $excel_data[] = $tmp;
         }
         $excel_data = $excel_obj->charset($excel_data, CHARSET);
@@ -728,6 +726,7 @@ class ordersendlistControl extends SystemControl
     {
         $mod_except = Model('refill_exception');
         $_GET['except_state'] = $_GET['except_state'] ?? 0;
+        $cond = [];
         if (!empty($_GET['order_sns'])) {
             $order_sns = rtrim($_GET['order_sns'],',');
             $cond['refill_exception.order_sn'] = ['in', $order_sns];
@@ -752,6 +751,11 @@ class ordersendlistControl extends SystemControl
             $cond['order_time'] = ['lt', $end_unixtime];
         }
 
+        if (!empty($_GET['export'])) {
+            $this->exception_order_export($cond);
+            return;
+        }
+
         $list = $mod_except->getExceptionList($cond, 200, 0, 'refill_exception.*,refill_order.order_time,refill_order.card_no');
 
         $merchant_list = $this->merchants();
@@ -870,4 +874,54 @@ class ordersendlistControl extends SystemControl
         Tpl::output('show_page', $mod->showpage());
         Tpl::showpage('refill.query.err');
     }
+
+    private function exception_order_export($cond)
+    {
+        $data = Model('refill_exception')->getAllExceptionOrders($cond);
+        $merchants = [];
+        $merchant_list = $this->merchants();
+        foreach ($merchant_list as  $value) {
+            $merchants[$value['mchid']] = $value;
+        }
+
+        Language::read('export');
+        import('libraries.excel');
+        $excel_obj = new Excel();
+        $excel_data = array();
+        //设置样式
+        $excel_obj->setStyle(array('id' => 's_title', 'Font' => array('FontName' => '宋体', 'Size' => '12', 'Bold' => '1')));
+        //header
+        $excel_data[0][] = array('styleid' => 's_title', 'data' => '机构编号');
+        $excel_data[0][] = array('styleid' => 's_title', 'data' => '机构名称');
+        $excel_data[0][] = array('styleid' => 's_title', 'data' => '通道名称');
+        $excel_data[0][] = array('styleid' => 's_title', 'data' => '订单号');
+        $excel_data[0][] = array('styleid' => 's_title', 'data' => '异常事件');
+        $excel_data[0][] = array('styleid' => 's_title', 'data' => '异常信息');
+        $excel_data[0][] = array('styleid' => 's_title', 'data' => '异常记录日期');
+        $excel_data[0][] = array('styleid' => 's_title', 'data' => '异常状态');
+        $excel_data[0][] = array('styleid' => 's_title', 'data' => '处理人');
+
+        //data
+        foreach ((array)$data as $v) {
+            $tmp = array();
+            $tmp[] = array('data' => $v['mchid']);
+            $tmp[] = array('data' => $merchants[$v['mchid']]['company_name']);
+            $tmp[] = array('data' => $v['store_name']);
+            $tmp[] = array('data' => $v['order_sn']);
+            $tmp[] = array('data' => $v['title']);
+            $tmp[] = array('data' => $v['except_desc']);
+            $tmp[] = array('data' => date('Y-m-d H:i:s', $v['add_time']));
+            if (empty($v['except_state'])) {
+                $tmp[] = array('data' => '未处理');
+            } else {
+                $tmp[] = array('data' => '已处理');
+            }
+            $tmp[] = array('data' => $v['admin_name']);
+            $excel_data[] = $tmp;
+        }
+        $excel_data = $excel_obj->charset($excel_data, CHARSET);
+        $excel_obj->addArray($excel_data);
+        $excel_obj->addWorksheet($excel_obj->charset(L('exp_od_order'), CHARSET));
+        $excel_obj->generateXML('异常订单导出-' . date('Y-m-d-H', time()));
+    }
 }

+ 6 - 0
admin/templates/default/merchant.ctl.php

@@ -440,6 +440,12 @@
                                 echo 'checked';
                             } ?> value="<?php echo refill\Quality::NormalQuickCardkey; ?>" type="radio">
                         </label>普充+快充+卡密(<span style="color: red;"><?php echo refill\Quality::NormalQuickCardkey; ?></span>)
+
+                        <label>
+                            <input name="quality" <?php if ($output['merchant']['quality'] == refill\Quality::QuickCardkey) {
+                                echo 'checked';
+                            } ?> value="<?php echo refill\Quality::QuickCardkey; ?>" type="radio">
+                        </label>快充+卡密(<span style="color: red;"><?php echo refill\Quality::QuickCardkey; ?></span>)
                     </td>
                 </tr>
                 <tr>

+ 1 - 0
admin/templates/default/merchant.price.php

@@ -96,6 +96,7 @@
                 <li><a href="index.php?act=merchant&op=price&quality=<?php echo refill\Quality::Quick; ?>&mchid=<?php echo $_GET['mchid'] ?>" class="classA" data-quality="<?php echo refill\Quality::Quick; ?>"><span>快速费率设置</span></a></li>
                 <li><a href="index.php?act=merchant&op=price&quality=<?php echo refill\Quality::CardKey; ?>&mchid=<?php echo $_GET['mchid'] ?>" class="classA" data-quality="<?php echo refill\Quality::CardKey; ?>"><span>卡密费率设置</span></a></li>
                 <li><a href="index.php?act=merchant&op=price&quality=<?php echo refill\Quality::NormalQuickCardkey; ?>&mchid=<?php echo $_GET['mchid'] ?>" class="classA" data-quality="<?php echo refill\Quality::NormalQuickCardkey; ?>"><span>普通+快充+卡密</span></a></li>
+                <li><a href="index.php?act=merchant&op=price&quality=<?php echo refill\Quality::QuickCardkey; ?>&mchid=<?php echo $_GET['mchid'] ?>" class="classA" data-quality="<?php echo refill\Quality::QuickCardkey; ?>"><span>快充+卡密</span></a></li>
                 <li><a href="index.php?act=merchant&op=price&quality=<?php echo refill\Quality::ThirdShop; ?>&mchid=<?php echo $_GET['mchid'] ?>" class="classA" data-quality="<?php echo refill\Quality::ThirdShop; ?>"><span>三方费率设置</span></a></li>
                 <li><a href="index.php?act=merchant&op=price&quality=<?php echo refill\Quality::SlowTwentyFour; ?>&mchid=<?php echo $_GET['mchid'] ?>" class="classA" data-quality="<?php echo refill\Quality::SlowTwentyFour; ?>"><span>慢24(有流水)费率设置</span></a></li>
                 <li><a href="index.php?act=merchant&op=price&quality=<?php echo refill\Quality::SlowSix; ?>&mchid=<?php echo $_GET['mchid'] ?>" class="classA" data-quality="<?php echo refill\Quality::SlowSix; ?>"><span>慢6费率设置</span></a></li>

+ 11 - 0
admin/templates/default/refill.order.exception.php

@@ -106,6 +106,7 @@
     <form method="get" action="index.php" name="formSearch" id="formSearch">
         <input type="hidden" name="act" value="ordersendlist" />
         <input type="hidden" name="op" value="order_exception" />
+        <input type="hidden" name="export" value=""/>
         <table class="tb-type1 noborder search">
             <tr>
                 <th><label class="query_ors">订单号(多行查询)</label></th>
@@ -159,6 +160,9 @@
                     <a href="#" class="btns" id="hHandled">
                         <span><i class="icon-edit"></i>批量标记为已处理</span>
                     </a>
+                    <a href="javascript:void(0);" id="ncexport" class="btns" style="margin: 0 59px;">
+                        <span><i class="icon-edit"></i>导出Excel</span>
+                    </a>
                 </td>
             </tr>
         </table>
@@ -304,6 +308,13 @@
             });
         })
 
+        // 导出
+        $('#ncexport').click(function () {
+            $('input[name="export"]').val('1');
+            $('#formSearch').submit();
+            $('input[name="export"]').val('');
+        })
+
 
         // 表格hover时背景
         $('.trFlex').each(function() {

+ 1 - 0
admin/templates/default/third.merchant.price.php

@@ -81,6 +81,7 @@ defined('InShopNC') or exit('Access Invalid!'); ?>
                 <li><a href="index.php?act=merchant&op=price&quality=<?php echo refill\Quality::Quick; ?>&mchid=<?php echo $_GET['mchid'] ?>" class="classA" data-quality="<?php echo refill\Quality::Quick; ?>"><span>快速费率设置</span></a></li>
                 <li><a href="index.php?act=merchant&op=price&quality=<?php echo refill\Quality::CardKey; ?>&mchid=<?php echo $_GET['mchid'] ?>" class="classA" data-quality="<?php echo refill\Quality::CardKey; ?>"><span>卡密费率设置</span></a></li>
                 <li><a href="index.php?act=merchant&op=price&quality=<?php echo refill\Quality::NormalQuickCardkey; ?>&mchid=<?php echo $_GET['mchid'] ?>" class="classA" data-quality="<?php echo refill\Quality::NormalQuickCardkey; ?>"><span>普通+快充+卡密</span></a></li>
+                <li><a href="index.php?act=merchant&op=price&quality=<?php echo refill\Quality::QuickCardkey; ?>&mchid=<?php echo $_GET['mchid'] ?>" class="classA" data-quality="<?php echo refill\Quality::QuickCardkey; ?>"><span>快充+卡密</span></a></li>
                 <li><a href="index.php?act=merchant&op=price&quality=<?php echo refill\Quality::ThirdShop; ?>&mchid=<?php echo $_GET['mchid'] ?>" class="classA" data-quality="<?php echo refill\Quality::ThirdShop; ?>"><span>三方费率设置</span></a></li>
                 <li><a href="index.php?act=merchant&op=price&quality=<?php echo refill\Quality::SlowTwentyFour; ?>&mchid=<?php echo $_GET['mchid'] ?>" class="classA" data-quality="<?php echo refill\Quality::SlowTwentyFour; ?>"><span>慢24(有流水)费率设置</span></a></li>
                 <li><a href="index.php?act=merchant&op=price&quality=<?php echo refill\Quality::SlowSix; ?>&mchid=<?php echo $_GET['mchid'] ?>" class="classA" data-quality="<?php echo refill\Quality::SlowSix; ?>"><span>慢6费率设置</span></a></li>

+ 12 - 5
data/config/xyz/refill.ini.php

@@ -9027,23 +9027,23 @@ $tianchen_sec_phone = ['name' => 'tianchen_sec', 'store_id' => 330, 'qualitys' =
 //            ['goods_id' => 8686, 'price' => 30.135, 'quality' => 2, 'card_type' => 'chinatelecom']
 //        ],
         50 => [
-//            ['goods_id' => 8687, 'price' => 50.175, 'quality' => 2, 'card_type' => 'chinamobile'],
-            ['goods_id' => 8687, 'price' => 50.075, 'quality' => 2, 'card_type' => 'chinaunicom'],
+            ['goods_id' => 8687, 'price' => 50.25, 'quality' => 2, 'card_type' => 'chinamobile'],
+            ['goods_id' => 8687, 'price' => 50.125, 'quality' => 2, 'card_type' => 'chinaunicom'],
             ['goods_id' => 8687, 'price' => 50.3, 'quality' => 2, 'card_type' => 'chinatelecom']
         ],
         100 => [
             ['goods_id' => 8688, 'price' => 100.2, 'quality' => 2, 'card_type' => 'chinamobile'],
-            ['goods_id' => 8688, 'price' => 100.15, 'quality' => 2, 'card_type' => 'chinaunicom'],
+            ['goods_id' => 8688, 'price' => 100.25, 'quality' => 2, 'card_type' => 'chinaunicom'],
             ['goods_id' => 8688, 'price' => 100.3, 'quality' => 2, 'card_type' => 'chinatelecom']
         ],
         200 => [
             ['goods_id' => 8689, 'price' => 200.4, 'quality' => 2, 'card_type' => 'chinamobile'],
-            ['goods_id' => 8689, 'price' => 200.3, 'quality' => 2, 'card_type' => 'chinaunicom'],
+            ['goods_id' => 8689, 'price' => 200.5, 'quality' => 2, 'card_type' => 'chinaunicom'],
             ['goods_id' => 8689, 'price' => 200.6, 'quality' => 2, 'card_type' => 'chinatelecom']
         ],
         300 => [
             ['goods_id' => 8690, 'price' => 300.6, 'quality' => 2, 'card_type' => 'chinamobile'],
-            ['goods_id' => 8690, 'price' => 300.45, 'quality' => 2, 'card_type' => 'chinaunicom'],
+            ['goods_id' => 8690, 'price' => 300.75, 'quality' => 2, 'card_type' => 'chinaunicom'],
             ['goods_id' => 8690, 'price' => 300.9, 'quality' => 2, 'card_type' => 'chinatelecom']
         ],
         500 => [
@@ -9550,6 +9550,12 @@ $tongka_fetch = ['name' => 'tongka_fetch', 'store_id' => 343, 'qualitys' => '1',
     ],
     'official_sn' => true, 'refill_type' => 'api'];
 
+$feihan_fetch = ['name' => 'feihan_fetch', 'store_id' => 344, 'qualitys' => '1',
+    'amount' => [
+        100 => [['goods_id' => 8751, 'price' => 99, 'quality' => 1, 'card_type' => 'third']],
+    ],
+    'official_sn' => true, 'refill_type' => 'api'];
+
 $third_providers = [
     ['name' => 'lingzhthird', 'cfg' => $lingzhthird],
     ['name' => 'jumithird', 'cfg' => $jumithird],
@@ -9575,6 +9581,7 @@ $third_providers = [
     ['name' => 'shuzishijie', 'cfg' => $shuzishijie],
     ['name' => 'piaoyi_oil', 'cfg' => $piaoyi_oil],
     ['name' => 'tongka_fetch', 'cfg' => $tongka_fetch],
+    ['name' => 'feihan_fetch', 'cfg' => $feihan_fetch],
 ];
 $config['third_providers'] = $third_providers;
 

+ 14 - 0
data/config/yl/refill.ini.php

@@ -7367,6 +7367,19 @@ $youjunfeit_phone = ['name' => 'youjunfeit', 'store_id' => 280, 'qualitys' => '2
     ],
     'official_sn' => true, 'refill_type' => 'api'];
 
+$qudaibaby_phone = ['name' => 'qudaibaby', 'store_id' => 282, 'qualitys' => '2',
+    'amount' => [
+        10 => [['goods_id' => 8306, 'price' => 10, 'quality' => 2, 'card_type' => 'chinamobile,chinaunicom,chinatelecom']],
+        20 => [['goods_id' => 8307, 'price' => 20, 'quality' => 2, 'card_type' => 'chinamobile,chinaunicom,chinatelecom']],
+        30 => [['goods_id' => 8308, 'price' => 30, 'quality' => 2, 'card_type' => 'chinamobile,chinaunicom,chinatelecom']],
+        50 => [['goods_id' => 8309, 'price' => 50, 'quality' => 2, 'card_type' => 'chinamobile,chinaunicom,chinatelecom']],
+        100 => [['goods_id' => 8310, 'price' => 100, 'quality' => 2, 'card_type' => 'chinamobile,chinaunicom,chinatelecom']],
+        200 => [['goods_id' => 8311, 'price' => 200, 'quality' => 2, 'card_type' => 'chinamobile,chinaunicom,chinatelecom']],
+        300 => [['goods_id' => 8312, 'price' => 300, 'quality' => 2, 'card_type' => 'chinamobile,chinaunicom,chinatelecom']],
+        500 => [['goods_id' => 8313, 'price' => 500, 'quality' => 2, 'card_type' => 'chinamobile,chinaunicom,chinatelecom']]
+    ],
+    'official_sn' => true, 'refill_type' => 'api'];
+
 $phone_providers = [
 //    ['name' => 'beixt', 'cfg' => $beixt_phone],
 //    ['name' => 'bxtwt', 'cfg' => $bxtwt_phone],
@@ -7603,6 +7616,7 @@ $phone_providers = [
     ['name' => 'youjuntf', 'cfg' => $youjuntf_phone],
     ['name' => 'youlaitf', 'cfg' => $youlaitf_phone],
     ['name' => 'youjunfeit', 'cfg' => $youjunfeit_phone],
+    ['name' => 'qudaibaby', 'cfg' => $qudaibaby_phone],
 
 ];
 $config['phone_providers'] = $phone_providers;

+ 0 - 117
data/config/youjun/base.ini.php

@@ -1,117 +0,0 @@
-<?php declare(strict_types=1);
-defined('InShopNC') or exit('Access Invalid!');
-
-define('USE_REMOTE_IMAGE',false);
-define('DEBUG_MODE',true);
-define('MOBILE_PUBLISH',false);
-define('PUSH_OMS',true);
-define('LOCAL_DEBUG',false);
-define('BONUS_EXPIRY_DATE',true);
-define('USE_BONUS_RATE',false);
-define('SERVER_TYPE','panda');
-define('CROSS_DOAMIN',true);
-define('COMPANY_NAME', 'YOUJUN_COMPANY');
-define('ZERO_GOODS_ID', 6405);
-
-$config = [];
-$config['base_site_url']        = SRV_HOST;
-$config['client_site_url']      = SRV_HOST;
-$config['shop_site_url'] 		= SRV_HOST.'/shop';
-$config['cms_site_url'] 		= SRV_HOST.'/cms';
-$config['microshop_site_url'] 	= SRV_HOST.'/microshop';
-$config['circle_site_url'] 		= SRV_HOST.'/circle';
-$config['admin_site_url'] 		= SRV_HOST.'/admin';
-$config['mobile_site_url'] 		= SRV_HOST.'/mobile';
-$config['wap_site_url'] 		= SRV_HOST.'/wap';
-$config['chat_site_url'] 		= SRV_HOST.'/chat';
-$config['node_site_url'] 		= 'http://127.0.0.1:8090';
-$config['delivery_site_url']    = SRV_HOST.'/delivery';
-
-$config['system_manager_phones'] = [
-    '13911129867' , '18500608333' , '18500350111' , '15136908757'
-];
-
-if(defined('USE_REMOTE_IMAGE') && USE_REMOTE_IMAGE == true) {
-    $config['upload_site_url']		= REMOTE_IMG_HOST.'/data/upload';
-    $config['resource_site_url']	= REMOTE_IMG_HOST.'/data/resource';
-} else {
-    $config['upload_site_url']		= SRV_HOST.'/data/upload';
-    $config['resource_site_url']	= SRV_HOST.'/data/resource';
-}
-
-$config['version'] 	= '201502020388';
-$config['setup_date'] = '2015-08-22 15:52:34';
-$config['gip'] 		= 0;
-$config['dbdriver'] = 'mysqli';
-$config['tablepre']	= 'lrlz_';
-
-define('SSH_TUNEL_PROD','local');
-//define('SSH_TUNEL_PROD','xyz');
-//define('SSH_TUNEL_PROD','lingzh');
-//define('SSH_TUNEL_PROD','xyztest');
-
-$config['db'][1]['dbhost']       = MASTER_DBHOST;
-$config['db'][1]['dbport']       = '3306';
-$config['db'][1]['dbuser']       = 'root';
-$config['db'][1]['dbpwd']        = '55668899';
-$config['db'][1]['dbname']       = 'xyzshop';
-$config['db'][1]['dbcharset']    = 'UTF-8';
-
-$config['db']['slave'][0]['dbhost']     = SLAVE_DBHOST;
-$config['db']['slave'][0]['dbport']     = '3306';
-$config['db']['slave'][0]['dbuser']     = 'root';
-$config['db']['slave'][0]['dbpwd']      = '55668899';
-$config['db']['slave'][0]['dbname']     = 'xyzshop';
-$config['db']['slave'][0]['dbcharset']  = 'UTF-8';
-
-$config['session_expire'] 	= 3600;
-$config['lang_type'] 		= 'zh_cn';
-$config['cookie_pre'] 		= '6B0C_';
-$config['thumb']['cut_type'] = 'gd';
-$config['thumb']['impath'] = '';
-
-$config['cache']['type'] 		= 'redis';
-$config['redis']['prefix']      	= 'nc_';
-$config['redis']['master']['host']     	= MASTER_REDISHOST;
-$config['redis']['master']['port']     	= 6379;
-$config['redis']['master']['pconnect'] 	= 0;
-$config['redis']['slave']['host']     	= SLAVE_REDISHOST;
-$config['redis']['slave']['port']     	= 6379;
-$config['redis']['slave']['pconnect'] 	= 0;
-
-$config['coroutine']['redis_host'] = COROUTINE_REDISHOST;
-$config['coroutine']['redis_port'] = 6379;
-
-//$config['fullindexer']['open']      = false;
-//$config['fullindexer']['appname']   = '33hao';
-$config['debug'] 		      = false;
-$config['default_store_id'] = '1';
-//如果开始伪静态,这里设置为true
-$config['url_model'] = false;
-
-//如果店铺开启二级域名绑定的,这里填写主域名如baidu.com
-$config['subdomain_suffix'] = '';
-$config['session_type'] = 'redis';
-$config['session_save_path'] = SESSION_SAVE_PATH;
-$config['node_chat'] = true;
-
-//流量记录表数量,为1~10之间的数字,默认为3,数字设置完成后请不要轻易修改,否则可能造成流量统计功能数据错误
-$config['flowstat_tablenum'] = 3;
-$config['sms']['gwUrl'] = 'http://sdkhttp.eucp.b2m.cn/sdk/SDKService';
-$config['sms']['serialNumber'] = '';
-$config['sms']['password']     = '';
-$config['sms']['sessionKey']   = '';
-
-$config['queue']['open'] = true;
-$config['queue']['host'] = QUEUEHOST;
-$config['queue']['port'] = 6379;
-$config['cache_open']    = true;
-
-$config['return_address'] = ['address' => '上海市金山区朱吕公路7335号','name' => "大熊猫(丽帆供应链)",'tel_phone' => '17301603655','zip_code' => '201600'];
-$config['area_version'] = 5;
-$config['appjump_prefix'] = 'xyzshop://www.xyzshops.com';
-
-$config['client_setting'] = ['running' => 174,'home' => 0];
-$config['wsd_bradge_port'] = 60987;
-$config['card_key_stores'] = [6];
-$config['phone_life_check'] = false;

+ 0 - 81
data/config/youjun/pay.ini.php

@@ -1,81 +0,0 @@
-<?php declare(strict_types=1);
-defined('InShopNC') or exit('Access Invalid!');
-
-define('ALIPAY_PATH', BASE_DATA_PATH . '/api/alipay');
-define('ALIPAY_PARTNER', '2088121219613123');
-define('ALIPAY_SELLER_ID', 'napheir.ao@lrlz.com');
-
-define('MINIPAY_WXPAY_APPID',       'wx4139a76ccb1f74b3');
-define('MINIPAY_WXPAY_APPSECRET',   'bfb69da3191367f3e4f377b4d8946933');
-
-define('MINIPAY_WXPAY_MCHID',       '1600686690');
-define('MINIPAY_WXPAY_KEY',         '0f86a4a9b1edb51b1a8d180fa228a157');
-define('MINIPAY_WXPAY_SSLCERT_PATH', '../cert/xyz_cert.pem');
-define('MINIPAY_WXPAY_SSLKEY_PATH',  '../cert/xyz_key.pem');
-
-define('OPENWX_APPID',       'wx24c5645aa986234a');
-
-define('WX_MCHID',       '1279745801');
-define('WX_MCHKEY',         '0f86a4a9b1edb51b1a7d110fa223a157');
-define('OPENWX_APPSECRET',   '41f93fef3207e917e742b9ebcd540cb2');
-define('WX_SSLCERT_PATH', '../cert/panda_cert.pem');
-define('WX_SSLKEY_PATH',  '../cert/panda_key.pem');
-
-
-//H5端,用户身份信息授权用的,数据来自 公众号->设置->基本配置
-//SIGN_APPID 和 AUTHOR_APPID是相同的.
-define('PUB_APPID',       'wx38f1d15c5337e89b');
-define('PUB_APPSECRET',   'fd6436e7427476dbe71a6333b3b02a96');
-
-define('PUB_APPID',       'wx38f1d15c5337e89b');
-define('PUB_APPSECRET',   'fd6436e7427476dbe71a6333b3b02a96');
-
-//for panda
-//define(ALIPAY_PATH, BASE_DATA_PATH . '/api/alipay');
-//define(ALIPAY_PARTNER, '2088121219613123');
-//define(ALIPAY_SELLER_ID, 'napheir.ao@lrlz.com');
-//
-//define(MINIPAY_WXPAY_APPID,       'wxfdaeb25e38c4c47e');
-//define(MINIPAY_WXPAY_APPSECRET,   'e5b5055cbc608d10c6de0d877c221270');
-//define(MINIPAY_WXPAY_MCHID,       '1380733702');
-//define(MINIPAY_WXPAY_KEY,         '0f86a4a9b1edb51b1a7d110fa223a157');
-//define(MINIPAY_WXPAY_SSLCERT_PATH, '../cert/panda_cert.pem');
-//define(MINIPAY_WXPAY_SSLKEY_PATH,  '../cert/panda_key.pem');
-//
-//define(OPENWX_APPID,       'wx24c5645aa986234a');
-//define(WX_MCHID,       '1279745801');
-//define(WX_MCHKEY,         '0f86a4a9b1edb51b1a7d110fa223a157');
-//define(OPENWX_APPSECRET,   '41f93fef3207e917e742b9ebcd540cb2');
-//define(WX_SSLCERT_PATH, '../cert/panda_cert.pem');
-//define(WX_SSLKEY_PATH,  '../cert/panda_key.pem');
-//
-//define(PUB_APPID,       'wx6b42e00ecaade538');
-//define(PUB_APPSECRET,   'ee64233b3144d76217161666f8cb4c86');
-//define(PUB_APPID,       'wx6b42e00ecaade538');
-//define(PUB_APPSECRET,   'ee64233b3144d76217161666f8cb4c86');
-
-
-//for car
-//define(ALIPAY_PATH, BASE_DATA_PATH . '/api/caralipay');
-//define(ALIPAY_PARTNER, '2088921850833159');
-//define(ALIPAY_SELLER_ID, 'jyc2018168@163.com');
-//
-//define(MINIPAY_WXPAY_APPID,       'wx4054b8152626bae7');
-//define(MINIPAY_WXPAY_APPSECRET,   '77f63e0b8e961b29e9f947ba5f02d0e8');
-//define(MINIPAY_WXPAY_MCHID,       '1500211542');  //'1498498152'
-//define(MINIPAY_WXPAY_KEY,         '2b135842e47ae1935365d43a952cd5b6');
-//define(MINIPAY_WXPAY_SSLCERT_PATH, '../cert/car_cert.pem');
-//define(MINIPAY_WXPAY_SSLKEY_PATH,  '../cert/car_key.pem');
-//
-//define(OPENWX_APPID,       'wx73acdf06232c6a33');
-//define(OPENWX_APPSECRET,   '92f261a220c79cf3711356ba91d1cb30');
-
-//define(WX_MCHID,       '1498498152');
-//define(WX_MCHKEY,         '2b135842e47ae1935365d43a952cd5b6');
-//define(WX_SSLCERT_PATH, '../cert/car_cert.pem');
-//define(WX_SSLKEY_PATH,  '../cert/car_key.pem');
-//
-//define(PUB_APPID,       'wxaf698e1cc5f2073b');
-//define(PUB_APPSECRET,   'da0547505e7bd29a50cdf662cc7b559a');
-//define(PUB_APPID,       'wxaf698e1cc5f2073b');
-//define(PUB_APPSECRET,   'da0547505e7bd29a50cdf662cc7b559a');

파일 크기가 너무 크기때문에 변경 상태를 표시하지 않습니다.
+ 0 - 6591
data/config/youjun/refill.ini.php


파일 크기가 너무 크기때문에 변경 상태를 표시하지 않습니다.
+ 0 - 1458
data/config/youjun/refill.ini.php.bak


+ 0 - 26
data/config/youjun/special.ini.php

@@ -1,26 +0,0 @@
-<?php declare(strict_types=1);
-defined('InShopNC') or exit('Access Invalid!');
-
-$config['old_tabs'] = [
-    ['special_id' => 1,'name' => "测试下小雄"],
-    ['special_id' => 53,'name' => "启动页"]];
-$config['old_specials'] = [0,57];
-$config['bonus_match_goods'] = ['special_id' => 69];
-
-//fcodes_specialid 所有赠送的F码列表,banner_id
-$config['autosend_fcodes'] = ['fcodes_spid' => 283,'payconfirm_spid' => 67,'cart_spid' => 65, 'myfcode_sid' => 0,'order_present' => 70];
-$config['goods_sampler'] = ['male' => 295 ,'female' => 296];
-$config['hotlist_image'] = [1 => '1.png',2 => '2.png',3 => '3.png',4 => '4.png',5 => '5.png',6 => '6.png',7 => '7.png',8 => '8.png',9 => '9.png',10 => '10.png'];
-
-//红包价和内买价的差别,描述语
-$config['bonus_gap']   = ['have_gap' => "离员工价¥%s,还差¥%s",'no_gap' => "已达员工价¥%s,下单吧!",'earn_bonus' => 'xmmz://p.lrlz.com/block/special?title=找红包&special_id=304&isSpecial=true'];
-$config['bonus_gapex'] = ['have_gap' => "离红包价¥%s,还差¥%s",'no_gap' => "已达红包价¥%s,下单吧!",'earn_bonus' => 'xmmz://p.lrlz.com/block/special?title=找红包&special_id=304&isSpecial=true'];
-
-$config['exclude_brands'] = [43,44,138];
-$config['optional_goods'] = [];
-$config['bargain_goods']  = ['special_ids' => [303],'usable_days' => 5,'max_day_count' => 5];
-$config['ugc_banner'] = ['pub' => 269,'friend' => 0, 'mine' => 0];
-$config['bonus_detail_banner'] = ['usable' => [0,0],'expiring' => [0,0],'used' => [0,0],'expired' => [0,0],'send' => [0,0]];
-$config['special_header'] = ['guess_like' => 305];
-
-$config['special_pay_success'] = 1036;

+ 0 - 29
data/config/youjun/srv.ini.php

@@ -1,29 +0,0 @@
-<?php declare(strict_types=1);
-defined('InShopNC') or exit('Access Invalid!');
-
-define('LOCAL_DOMAIN','192.168.1.200');
-
-$config['searcher']['host'] = 'searcher';
-$config['searcher']['port'] = 2000;
-
-$config['relation']['host'] = LOCAL_DOMAIN;
-$config['relation']['port'] = 5000;
-
-$config['room_srv']['host'] = LOCAL_DOMAIN;
-$config['room_srv']['ports'] = [2010];
-
-$config['room_factory']['host'] = LOCAL_DOMAIN;
-$config['room_factory']['port'] = 2002;
-
-$config['room_factory']['rooms_addr'] = [
-    ['host' => LOCAL_DOMAIN,'port' => '2010']
-//    ['host' => '192.168.0.200','port' => '2011']
-//    ['host' => '192.168.0.200','port' => '2012'],
-//    ['host' => '192.168.0.200','port' => '2013'],
-//    ['host' => '192.168.0.200','port' => '2014'],
-];
-
-//$config['access_addr'] = 'wss://panda.lrlz.com:8080';
-$config['access_addr'] = 'ws://192.168.1.200:8080';
-$config['special_rooms'] = ['shake_bonus' => 37];
-$config['room_password'] = '5566889955668899';

+ 0 - 9
data/config/youjun/ugcman.config.ini

@@ -1,9 +0,0 @@
-{
-    "DB": {
-        "host": "127.0.0.1",
-        "port": 3306,
-        "name": "pandashop",
-        "user": "root",
-        "passwd": "55668899"
-    }
-}

+ 0 - 92
data/config/youjun/vgoods.ini.php

@@ -1,92 +0,0 @@
-<?php
-declare(strict_types=0);
-
-$config['exclude_preferential_goods_ids'] = [6217];
-$config['card_commonid'] = ['oil' => 3449, 'phone' => 3450];
-$config['vgoods_spec_card'] = [6218 => 100, 6219 => 200, 6220 => 100, 6221 => 200,6224 => 500, 6225 => 1000];
-
-
-//$config['tips'] =  ['first_order' => '首次充值享受会员价95折',
-//                    'vip_first_order' => '会员充值全场95折',
-//                    'none_vip' => '点击右上角分享给好友、升级会员都能享受95折',
-//                    'vip_user' => '点击右上角,分享给好友,一起省钱吧~'];
-
-$handlers = [];
-#type:虚拟商品类型,order_method下午单后的自动操作函数,
-#paid_oper 支付完成后的操作类型,auto 表示自动,manual 表示人工点击,paid_method表示点击调用的方法
-#input_params 表示输入必须带的参数。
-
-#'order_method' 成功下订单事件
-#paid_method 支付成功事件
-#cancel_method 取消订单
-#input_params 下订单是需要检查的参数,并带到extra_info.
-#additional 预先提供的参数
-
-#会员卡 vip_card
-$mcard_params =['type' => 'member_card', 
-                'paid_method' => 'OnMCardPaidSuccess',
-                'additional' => ['card_type' => 'year']];
-$handlers[6217] = $mcard_params;
-
-#oil card
-$oil_params = ['type' => 'oil_card', 'order_check'     => 'OnOilCardCheck',
-                                     'order_method'    => 'OnReserveOilCard',
-                                     'complete_method' => 'OnCardKeyComplete',
-                                     'cancel_method' => 'OnCardKeyCancel',
-                                     'input_params'  => ['card_no','card_type','phone_no']];
-$handlers[6218] = $oil_params;
-$handlers[6219] = $oil_params;
-$handlers[6224] = $oil_params;
-$handlers[6225] = $oil_params;
-
-#phone card
-$phone_card_prams = ['type' => 'phone_card', 'order_check'     => 'OnPhoneCardCheck',
-                                             'order_method'    => 'OnReservePhoneCard',
-                                             'complete_method' => 'OnCardKeyComplete',
-                                             'cancel_method' => 'OnCardKeyCancel',
-                                             'input_params'  => ['card_no','card_type']];
-$handlers[6220] = $phone_card_prams;
-$handlers[6221] = $phone_card_prams;
-
-$config['vgoods_handlers'] = $handlers;
-
-//6220 话费 amount = 100
-$share_policy[6220] = [
-    ['num' => 1,  'discount' => 0.05,'price' => 0.95]
-];
-
-//6220 话费 amount = 200
-$share_policy[6221] = [
-    ['num' => 3,  'discount' => 0.10,  'price' => 1.90],
-    ['num' => 2,  'discount' => 0.08,  'price' => 1.92],
-    ['num' => 1,  'discount' => 0.05,  'price' => 1.95]
-];
-
-//6220 油费 amount = 100
-$share_policy[6218] = [
-    ['num' => 1,  'discount' => 0.05, 'price' => 0.95]
-];
-
-//6220 油费 amount = 200
-$share_policy[6219] = [
-    ['num' => 3,  'discount' => 0.10,  'price' => 1.90],
-    ['num' => 2,  'discount' => 0.08,  'price' => 1.92],
-    ['num' => 1,  'discount' => 0.05,  'price' => 1.95]
-];
-
-//6220 油费 amount = 500
-$share_policy[6224] = [
-    ['num' => 3,  'discount' => 0.25,  'price' => 4.75],
-    ['num' => 2,  'discount' => 0.20,  'price' => 4.80],
-    ['num' => 1,  'discount' => 0.15,  'price' => 4.85]
-];
-
-//6220 油费 amount = 1000
-$share_policy[6225] = [
-    ['num' => 5,  'discount' => 0.50,  'price' => 9.50],
-    ['num' => 3,  'discount' => 0.40,  'price' => 9.60],
-    ['num' => 2,  'discount' => 0.30,  'price' => 9.70],
-    ['num' => 1,  'discount' => 0.25,  'price' => 9.75]
-];
-
-$config['goods_share_policy'] = $share_policy;

+ 0 - 14
data/config/youjun/webacc.config.ini

@@ -1,14 +0,0 @@
-{
-    "room_addrs":[
-            { "host":"192.168.0.200","port":2010}
-            ],
-    "factory_addr": { "host":"192.168.0.200","port":2002},
-    "acc_addr":{"host":"0.0.0.0", "port":8080},
-    "DB": {
-        "host": "127.0.0.1",
-        "port": 3306,
-        "name": "pandashop",
-        "user": "root",
-        "passwd": "55668899"
-    }
-}

+ 186 - 28
data/config/zy/refill.ini.php

@@ -14,13 +14,13 @@ $config['refill_specs'] = [
     'chinatelecom' => $config['refill_phone_specs']
 ];
 
-$ruidongsoil_oil = ['name' => 'ruidongsoil', 'store_id' => 15, 'qualitys' => '2',
+$ruidongsoil_oil = ['name' => 'ruidongsoil', 'store_id' => 15, 'qualitys' => '5',
     'amount' => [
-        50 => [['goods_id' => 6463, 'price' => 50, 'quality' => 2, 'card_type' => 'petrochina,sinopec']],
-        100 => [['goods_id' => 6464, 'price' => 100, 'quality' => 2, 'card_type' => 'petrochina,sinopec']],
-        200 => [['goods_id' => 6465, 'price' => 200, 'quality' => 2, 'card_type' => 'petrochina,sinopec']],
-        500 => [['goods_id' => 6466, 'price' => 500, 'quality' => 2, 'card_type' => 'petrochina,sinopec']],
-        1000 => [['goods_id' => 6467, 'price' => 1000, 'quality' => 2, 'card_type' => 'petrochina,sinopec']]
+        50 => [['goods_id' => 6463, 'price' => 50, 'quality' => 5, 'card_type' => 'petrochina,sinopec']],
+        100 => [['goods_id' => 6464, 'price' => 100, 'quality' => 5, 'card_type' => 'petrochina,sinopec']],
+        200 => [['goods_id' => 6465, 'price' => 200, 'quality' => 5, 'card_type' => 'petrochina,sinopec']],
+        500 => [['goods_id' => 6466, 'price' => 500, 'quality' => 5, 'card_type' => 'petrochina,sinopec']],
+        1000 => [['goods_id' => 6467, 'price' => 1000, 'quality' => 5, 'card_type' => 'petrochina,sinopec']]
     ],
     'refill_type' => 'api'];
 
@@ -34,23 +34,23 @@ $chewshioil_oil = ['name' => 'chewshioil', 'store_id' => 18, 'qualitys' => '5',
     ],
     'refill_type' => 'api'];
 
-$shenzhouoil_oil = ['name' => 'shenzhouoil', 'store_id' => 19, 'qualitys' => '2',
+$shenzhouoil_oil = ['name' => 'shenzhouoil', 'store_id' => 19, 'qualitys' => '5',
     'amount' => [
-        50 => [['goods_id' => 6489, 'price' => 50, 'quality' => 2, 'card_type' => 'petrochina,sinopec']],
-        100 => [['goods_id' => 6490, 'price' => 100, 'quality' => 2, 'card_type' => 'petrochina,sinopec']],
-        200 => [['goods_id' => 6491, 'price' => 200, 'quality' => 2, 'card_type' => 'petrochina,sinopec']],
-        500 => [['goods_id' => 6492, 'price' => 500, 'quality' => 2, 'card_type' => 'petrochina,sinopec']],
-        1000 => [['goods_id' => 6493, 'price' => 1000, 'quality' => 2, 'card_type' => 'petrochina,sinopec']]
+        50 => [['goods_id' => 6489, 'price' => 50, 'quality' => 5, 'card_type' => 'petrochina,sinopec']],
+        100 => [['goods_id' => 6490, 'price' => 100, 'quality' => 5, 'card_type' => 'petrochina,sinopec']],
+        200 => [['goods_id' => 6491, 'price' => 200, 'quality' => 5, 'card_type' => 'petrochina,sinopec']],
+        500 => [['goods_id' => 6492, 'price' => 500, 'quality' => 5, 'card_type' => 'petrochina,sinopec']],
+        1000 => [['goods_id' => 6493, 'price' => 1000, 'quality' => 5, 'card_type' => 'petrochina,sinopec']]
     ],
     'refill_type' => 'api'];
 
-$oillanse_oil = ['name' => 'oillanse', 'store_id' => 65, 'qualitys' => '2',
+$oillanse_oil = ['name' => 'oillanse', 'store_id' => 65, 'qualitys' => '5',
     'amount' => [
-        50 => [['goods_id' => 6799, 'price' => 50, 'quality' => 2, 'card_type' => 'petrochina,sinopec']],
-        100 => [['goods_id' => 6800, 'price' => 100, 'quality' => 2, 'card_type' => 'petrochina,sinopec']],
-        200 => [['goods_id' => 6801, 'price' => 200, 'quality' => 2, 'card_type' => 'petrochina,sinopec']],
-        500 => [['goods_id' => 6802, 'price' => 500, 'quality' => 2, 'card_type' => 'petrochina,sinopec']],
-        1000 => [['goods_id' => 6803, 'price' => 1000, 'quality' => 2, 'card_type' => 'petrochina,sinopec']]
+        50 => [['goods_id' => 6799, 'price' => 50, 'quality' => 5, 'card_type' => 'petrochina,sinopec']],
+        100 => [['goods_id' => 6800, 'price' => 100, 'quality' => 5, 'card_type' => 'petrochina,sinopec']],
+        200 => [['goods_id' => 6801, 'price' => 200, 'quality' => 5, 'card_type' => 'petrochina,sinopec']],
+        500 => [['goods_id' => 6802, 'price' => 500, 'quality' => 5, 'card_type' => 'petrochina,sinopec']],
+        1000 => [['goods_id' => 6803, 'price' => 1000, 'quality' => 5, 'card_type' => 'petrochina,sinopec']]
     ],
     'refill_type' => 'api'];
 
@@ -839,12 +839,12 @@ $by_online_phone = ['name' => 'by_online', 'store_id' => 33, 'qualitys' => '3',
         200 => [
             ['goods_id' => 6581, 'price' => 200, 'quality' => 3, 'card_type' => 'chinamobile'],
         ],
-//        300 => [
-//            ['goods_id' => 6582, 'price' => 300, 'quality' => 2, 'card_type' => 'chinamobile,chinaunicom,chinatelecom'],
-//        ],
-//        500 => [
-//            ['goods_id' => 6583, 'price' => 500, 'quality' => 2, 'card_type' => 'chinamobile,chinaunicom,chinatelecom'],
-//        ]
+        300 => [
+            ['goods_id' => 6582, 'price' => 300, 'quality' => 3, 'card_type' => 'chinamobile'],
+        ],
+        500 => [
+            ['goods_id' => 6583, 'price' => 500, 'quality' => 3, 'card_type' => 'chinamobile'],
+        ]
     ],
     'official_sn' => true, 'refill_type' => 'api'];
 
@@ -1117,8 +1117,8 @@ $by_online_kami_phone = ['name' => 'by_online_kami', 'store_id' => 45, 'qualitys
         50 => [['goods_id' => 6669, 'price' => 50, 'quality' => 3, 'card_type' => 'chinamobile']],
         100 => [['goods_id' => 6670, 'price' => 100, 'quality' => 3, 'card_type' => 'chinamobile']],
         200 => [['goods_id' => 6671, 'price' => 200, 'quality' => 3, 'card_type' => 'chinamobile']],
-//        300 => [['goods_id' => 6672, 'price' => 300, 'quality' => 3, 'card_type' => 'chinamobile,chinaunicom,chinatelecom']],
-//        500 => [['goods_id' => 6673, 'price' => 500, 'quality' => 3, 'card_type' => 'chinamobile,chinaunicom,chinatelecom']]
+        300 => [['goods_id' => 6672, 'price' => 300, 'quality' => 3, 'card_type' => 'chinamobile']],
+        500 => [['goods_id' => 6673, 'price' => 500, 'quality' => 3, 'card_type' => 'chinamobile']]
     ],
     'official_sn' => true, 'refill_type' => 'api'];
 
@@ -1549,10 +1549,10 @@ $by_online_cb_phone = ['name' => 'by_online_cb', 'store_id' => 67, 'qualitys' =>
             ['goods_id' => 6810, 'price' => 200, 'quality' => 3, 'card_type' => 'chinamobile'],
         ],
         300 => [
-            ['goods_id' => 6811, 'price' => 300, 'quality' => 2, 'card_type' => 'chinamobile'],
+            ['goods_id' => 6811, 'price' => 300, 'quality' => 3, 'card_type' => 'chinamobile'],
         ],
         500 => [
-            ['goods_id' => 6812, 'price' => 500, 'quality' => 2, 'card_type' => 'chinamobile'],
+            ['goods_id' => 6812, 'price' => 500, 'quality' => 3, 'card_type' => 'chinamobile'],
         ]
     ],
     'official_sn' => true, 'refill_type' => 'api'];
@@ -1570,6 +1570,152 @@ $by_online_kami_cb_phone = ['name' => 'by_online_kami_cb', 'store_id' => 68, 'qu
     ],
     'official_sn' => true, 'refill_type' => 'api'];
 
+$blueciyuefeiy_phone = ['name' => 'blueciyuefeiy', 'store_id' => 70, 'qualitys' => '2',
+    'amount' => [
+        10 => [
+            ['goods_id' => 6822, 'price' => 10, 'quality' => 2, 'card_type' => 'chinamobile,chinaunicom,chinatelecom'],
+        ],
+        20 => [
+            ['goods_id' => 6823, 'price' => 20, 'quality' => 2, 'card_type' => 'chinamobile,chinaunicom,chinatelecom'],
+        ],
+        30 => [
+            ['goods_id' => 6824, 'price' => 30, 'quality' => 2, 'card_type' => 'chinamobile,chinaunicom,chinatelecom'],
+        ],
+        50 => [
+            ['goods_id' => 6825, 'price' => 50, 'quality' => 2, 'card_type' => 'chinamobile,chinaunicom,chinatelecom'],
+        ],
+        100 => [
+            ['goods_id' => 6826, 'price' => 100, 'quality' => 2, 'card_type' => 'chinamobile,chinaunicom,chinatelecom'],
+        ],
+        200 => [
+            ['goods_id' => 6827, 'price' => 200, 'quality' => 2, 'card_type' => 'chinamobile,chinaunicom,chinatelecom'],
+        ],
+        300 => [
+            ['goods_id' => 6828, 'price' => 300, 'quality' => 2, 'card_type' => 'chinamobile,chinaunicom,chinatelecom'],
+        ],
+        500 => [
+            ['goods_id' => 6829, 'price' => 500, 'quality' => 2, 'card_type' => 'chinamobile,chinaunicom,chinatelecom'],
+        ]
+    ],
+    'official_sn' => true, 'refill_type' => 'api'];
+
+$wangxinnoy_phone = ['name' => 'wangxinnoy', 'store_id' => 71, 'qualitys' => '2',
+    'amount' => [
+        10 => [
+            ['goods_id' => 6830, 'price' => 10, 'quality' => 2, 'card_type' => 'chinamobile,chinaunicom,chinatelecom'],
+        ],
+        20 => [
+            ['goods_id' => 6831, 'price' => 20, 'quality' => 2, 'card_type' => 'chinamobile,chinaunicom,chinatelecom'],
+        ],
+        30 => [
+            ['goods_id' => 6832, 'price' => 30, 'quality' => 2, 'card_type' => 'chinamobile,chinaunicom,chinatelecom'],
+        ],
+        50 => [
+            ['goods_id' => 6833, 'price' => 50, 'quality' => 2, 'card_type' => 'chinamobile,chinaunicom,chinatelecom'],
+        ],
+        100 => [
+            ['goods_id' => 6834, 'price' => 100, 'quality' => 2, 'card_type' => 'chinamobile,chinaunicom,chinatelecom'],
+        ],
+        200 => [
+            ['goods_id' => 6835, 'price' => 200, 'quality' => 2, 'card_type' => 'chinamobile,chinaunicom,chinatelecom'],
+        ],
+        300 => [
+            ['goods_id' => 6836, 'price' => 300, 'quality' => 2, 'card_type' => 'chinamobile,chinaunicom,chinatelecom'],
+        ],
+        500 => [
+            ['goods_id' => 6837, 'price' => 500, 'quality' => 2, 'card_type' => 'chinamobile,chinaunicom,chinatelecom'],
+        ]
+    ],
+    'official_sn' => true, 'refill_type' => 'api'];
+
+$momokafei_phone = ['name' => 'momokafei', 'store_id' => 72, 'qualitys' => '2',
+    'amount' => [
+        10 => [
+            ['goods_id' => 6838, 'price' => 10, 'quality' => 2, 'card_type' => 'chinamobile,chinaunicom,chinatelecom'],
+        ],
+        20 => [
+            ['goods_id' => 6839, 'price' => 20, 'quality' => 2, 'card_type' => 'chinamobile,chinaunicom,chinatelecom'],
+        ],
+        30 => [
+            ['goods_id' => 6840, 'price' => 30, 'quality' => 2, 'card_type' => 'chinamobile,chinaunicom,chinatelecom'],
+        ],
+        50 => [
+            ['goods_id' => 6841, 'price' => 50, 'quality' => 2, 'card_type' => 'chinamobile,chinaunicom,chinatelecom'],
+        ],
+        100 => [
+            ['goods_id' => 6842, 'price' => 100, 'quality' => 2, 'card_type' => 'chinamobile,chinaunicom,chinatelecom'],
+        ],
+        200 => [
+            ['goods_id' => 6843, 'price' => 200, 'quality' => 2, 'card_type' => 'chinamobile,chinaunicom,chinatelecom'],
+        ],
+        300 => [
+            ['goods_id' => 6844, 'price' => 300, 'quality' => 2, 'card_type' => 'chinamobile,chinaunicom,chinatelecom'],
+        ],
+        500 => [
+            ['goods_id' => 6845, 'price' => 500, 'quality' => 2, 'card_type' => 'chinamobile,chinaunicom,chinatelecom'],
+        ]
+    ],
+    'official_sn' => true, 'refill_type' => 'api'];
+
+$qudaiwafeiy_phone = ['name' => 'qudaiwafeiy', 'store_id' => 73, 'qualitys' => '2',
+    'amount' => [
+        10 => [
+            ['goods_id' => 6846, 'price' => 10, 'quality' => 2, 'card_type' => 'chinamobile,chinaunicom,chinatelecom'],
+        ],
+        20 => [
+            ['goods_id' => 6847, 'price' => 20, 'quality' => 2, 'card_type' => 'chinamobile,chinaunicom,chinatelecom'],
+        ],
+        30 => [
+            ['goods_id' => 6848, 'price' => 30, 'quality' => 2, 'card_type' => 'chinamobile,chinaunicom,chinatelecom'],
+        ],
+        50 => [
+            ['goods_id' => 6849, 'price' => 50, 'quality' => 2, 'card_type' => 'chinamobile,chinaunicom,chinatelecom'],
+        ],
+        100 => [
+            ['goods_id' => 6850, 'price' => 100, 'quality' => 2, 'card_type' => 'chinamobile,chinaunicom,chinatelecom'],
+        ],
+        200 => [
+            ['goods_id' => 6851, 'price' => 200, 'quality' => 2, 'card_type' => 'chinamobile,chinaunicom,chinatelecom'],
+        ],
+        300 => [
+            ['goods_id' => 6852, 'price' => 300, 'quality' => 2, 'card_type' => 'chinamobile,chinaunicom,chinatelecom'],
+        ],
+        500 => [
+            ['goods_id' => 6853, 'price' => 500, 'quality' => 2, 'card_type' => 'chinamobile,chinaunicom,chinatelecom'],
+        ]
+    ],
+    'official_sn' => true, 'refill_type' => 'api'];
+
+$yunshanfeiy_phone = ['name' => 'yunshanfeiy', 'store_id' => 74, 'qualitys' => '2',
+    'amount' => [
+        10 => [
+            ['goods_id' => 6854, 'price' => 10, 'quality' => 2, 'card_type' => 'chinamobile,chinaunicom,chinatelecom'],
+        ],
+        20 => [
+            ['goods_id' => 6855, 'price' => 20, 'quality' => 2, 'card_type' => 'chinamobile,chinaunicom,chinatelecom'],
+        ],
+        30 => [
+            ['goods_id' => 6856, 'price' => 30, 'quality' => 2, 'card_type' => 'chinamobile,chinaunicom,chinatelecom'],
+        ],
+        50 => [
+            ['goods_id' => 6857, 'price' => 50, 'quality' => 2, 'card_type' => 'chinamobile,chinaunicom,chinatelecom'],
+        ],
+        100 => [
+            ['goods_id' => 6858, 'price' => 100, 'quality' => 2, 'card_type' => 'chinamobile,chinaunicom,chinatelecom'],
+        ],
+        200 => [
+            ['goods_id' => 6859, 'price' => 200, 'quality' => 2, 'card_type' => 'chinamobile,chinaunicom,chinatelecom'],
+        ],
+        300 => [
+            ['goods_id' => 6860, 'price' => 300, 'quality' => 2, 'card_type' => 'chinamobile,chinaunicom,chinatelecom'],
+        ],
+        500 => [
+            ['goods_id' => 6861, 'price' => 500, 'quality' => 2, 'card_type' => 'chinamobile,chinaunicom,chinatelecom'],
+        ]
+    ],
+    'official_sn' => true, 'refill_type' => 'api'];
+
+
 $phone_providers = [
     ['name' => 'yezi_hf', 'cfg' => $yezi_hf_phone],
     ['name' => 'yezia', 'cfg' => $yezia_phone],
@@ -1623,6 +1769,11 @@ $phone_providers = [
     ['name' => 'hongtai_fy', 'cfg' => $hongtai_fy_phone],
     ['name' => 'by_online_cb', 'cfg' => $by_online_cb_phone],
     ['name' => 'by_online_kami_cb', 'cfg' => $by_online_kami_cb_phone],
+    ['name' => 'blueciyuefeiy', 'cfg' => $blueciyuefeiy_phone],
+    ['name' => 'wangxinnoy', 'cfg' => $wangxinnoy_phone],
+    ['name' => 'momokafei', 'cfg' => $momokafei_phone],
+    ['name' => 'qudaiwafeiy', 'cfg' => $qudaiwafeiy_phone],
+    ['name' => 'yunshanfeiy', 'cfg' => $yunshanfeiy_phone],
 
 ];
 
@@ -1696,6 +1847,12 @@ $huanqiqy = ['name' => 'huanqiqy', 'store_id' => 66, 'qualitys' => '1',
     ],
     'official_sn' => true, 'refill_type' => 'api'];
 
+$huanxishuqy = ['name' => 'huanxishuqy', 'store_id' => 69, 'qualitys' => '1',
+    'amount' => [
+        100 => [['goods_id' => 6821, 'price' => 99, 'quality' => 1, 'card_type' => 'third']],
+    ],
+    'official_sn' => true, 'refill_type' => 'api'];
+
 $third_providers = [
     ['name' => 'byq_tianrui', 'cfg' => $byq_tianrui],
     ['name' => 'youlaicomeqy', 'cfg' => $youlaicomeqy],
@@ -1708,6 +1865,7 @@ $third_providers = [
     ['name' => 'chuangshihz', 'cfg' => $chuangshihz],
     ['name' => 'manhuiqy', 'cfg' => $manhuiqy],
     ['name' => 'huanqiqy', 'cfg' => $huanqiqy],
+    ['name' => 'huanxishuqy', 'cfg' => $huanxishuqy],
 ];
 $config['third_providers'] = $third_providers;
 

+ 1 - 1
data/logic/queue.logic.php

@@ -1735,7 +1735,7 @@ class queueLogic
         }
 
         [$succ, $msg, $offical_sn] = $provider->query($refill_info);
-        Log::record("order_sn={$refill_info['order_sn']} offical_sn=$offical_sn");
+        Log::record("order_sn={$refill_info['order_sn']} offical_sn=$offical_sn", Log::DEBUG);
 
         return callback($succ, "$chname provider query $msg.");
     }

+ 23 - 0
data/model/refill_exception.model.php

@@ -44,4 +44,27 @@ class refill_exceptionModel extends Model
         $item = $this->field('*')->where(['order_sn' => $order_sn])->find();
         return !empty($item);
     }
+
+    public function getAllExceptionOrders($condition)
+    {
+        $len = 1000;
+
+        $i = 0;
+        $orders = [];
+        while (true)
+        {
+            $start = $i * $len;
+            $items = $this->table('refill_exception')
+                ->where($condition)
+                ->order('oper_time desc')
+                ->limit("{$start},{$len}")
+                ->select();
+            $orders = array_merge($orders,$items);
+            if (empty($items) || count($items) < $len) {
+                break;
+            }
+            $i++;
+        }
+        return $orders;
+    }
 }

+ 0 - 32
docker/compose/youjun/acc/docker-compose.yml

@@ -1,32 +0,0 @@
-version: "3.7"
-
-services:
-  nginxsrv:
-    image: nginx:alpine
-    ports:
-      - "80:80"
-    volumes:
-      - ../../../../:/var/www/html
-      - ../conf/etc/localtime:/etc/localtime:ro
-      - ../conf/nginx/nginx.conf:/etc/nginx/nginx.conf:ro
-      - /mnt/upload:/var/www/html/data/upload
-    container_name: "yj-nginx"
-    command: [nginx,'-g','daemon off;']
-    extra_hosts:
-      - "docker.hostip:172.17.0.1"
-
-  mobilesrv:
-    image: php-zts:7.3.18
-    ports:
-      - "9100:9100"
-    volumes:
-      - ../../../../:/var/www/html
-      - ../conf/etc/localtime:/etc/localtime:ro
-      - ../conf/php/php.ini:/usr/local/etc/php/php.ini
-      - /mnt/shoplog:/var/www/html/data/log
-      - /mnt/upload:/var/www/html/data/upload
-      - ../conf/php/mobile-spwan-start:/usr/local/bin/docker-spwan-start
-    container_name: "yj-mobile"
-    command: ['docker-spwan-start']
-    extra_hosts:
-      - "docker.hostip:172.17.0.1"

+ 2 - 2
docker/compose/youjun/conf/nginx/nginx_admin.conf

@@ -31,7 +31,7 @@ http
     {
     	listen       80;
         set  $folder_name /var/www/html;
-        server_name admin.xyzshops.cn;
+        server_name youjun.xyzshops.cn;
         root $folder_name;
         index index.html index.php; 
 
@@ -88,7 +88,7 @@ http
         location ~ \.php$ {
 	        add_header Cache-Control no-store;
             root           $folder_name;
-            fastcgi_pass   docker.hostip:9000;
+            fastcgi_pass   websrv:9000;
             fastcgi_index  index.php;
             fastcgi_param  SCRIPT_FILENAME  $folder_name$fastcgi_script_name;
             fastcgi_buffer_size  1024K;

+ 2 - 4
docker/compose/youjun/admin/docker-compose.yml

@@ -10,22 +10,20 @@ services:
       - ../conf/etc/localtime:/etc/localtime:ro
       - ../conf/nginx/nginx_admin.conf:/etc/nginx/nginx.conf:ro
       - /mnt/upload:/var/www/html/data/upload
-    container_name: "yjweb-nginx"
+    container_name: "yj-nginx"
     command: [nginx,'-g','daemon off;']
     extra_hosts:
       - "docker.hostip:172.17.0.1"
 
   websrv:
     image: php-fpm:alpine
-    ports:
-      - "9000:9000"
     volumes:
       - ../../../../:/var/www/html
       - ../conf/etc/localtime:/etc/localtime:ro
       - ../conf/php/php.ini:/usr/local/etc/php/php.ini
       - ../conf/php-fpm/php-fpm.conf:/usr/local/etc/php-fpm.conf
       - /mnt/upload:/var/www/html/data/upload
-      - /mnt/shoplog:/var/www/html/data/log
+      - /mnt/yjlog:/var/www/html/data/log
     container_name: "yj-web"
     command: [php-fpm]
     extra_hosts:

+ 0 - 2
helper/mtopcard/mtopcard.php

@@ -2,8 +2,6 @@
 
 namespace mtopcard;
 
-use login\pub_userinfo_log;
-
 require_once(BASE_HELPER_PATH . '/mtopcard/card_query.php');
 require_once(BASE_HELPER_PATH . '/mtopcard/open_query.php');
 require_once(BASE_HELPER_PATH . '/mtopcard/topcard.php');

+ 14 - 0
helper/refill/api/xyz/bier_fs/config.php

@@ -92,6 +92,18 @@ class config
                 100 => 'CMCCLNr100r',
                 200 => 'CMCCLNr200r',
             ],
+            //甘肃
+            28 => [
+                50  => 'CMCCGSr50r',
+                100 => 'CMCCGSr100r',
+                200 => 'CMCCGSr200r',
+            ],
+            //黑龙江
+            8 => [
+                50  => 'CMCCHLJr50r',
+                100 => 'CMCCHLJr100r',
+                200 => 'CMCCHLJr200r',
+            ],
         ],
         mtopcard\ChinaTelecomCard => [
             //四川
@@ -205,6 +217,8 @@ class config
         "4-50-14" => 47.75, "4-100-14" => 95.5, "4-200-14" => 191,//江西 14
         "4-50-17" => 47.75, "4-100-17" => 95.5, "4-200-17" => 191,//湖北 17
         "4-50-6" => 47.75, "4-100-6" => 95.5, "4-200-6" => 191,//辽宁 6
+        "4-50-28" => 47.75, "4-100-28" => 95.5, "4-200-28" => 191,//甘肃 28
+        "4-50-8" => 47.75, "4-100-8" => 95.5, "4-200-8" => 191,//黑龙江 8
 
         "6-30-23" => 28.65, "6-50-23" => 47.75, "6-100-23" => 95.5, "6-200-23" => 191,//四川 23
         "6-30-15" => 28.65, "6-50-15" => 47.75, "6-100-15" => 95.5, "6-200-15" => 191,//山东 15

+ 15 - 0
helper/refill/api/xyz/bier_fs/椰子.txt

@@ -217,3 +217,18 @@ CTCCHBr30r
 CTCCHBr50r
 CTCCHBr100r
 CTCCHBr200r
+
+2023.6.19
+比尔甘肃 黑龙江移动调价
+
+甘肃移动产品编码:
+
+CMCCGSr50r
+CMCCGSr100r
+CMCCGSr200r
+
+黑龙江移动产品编码:
+
+CMCCHLJr50r
+CMCCHLJr100r
+CMCCHLJr200r

BIN
helper/refill/api/xyz/dezhi_fs/20230625浙江移动调价函.jpg


BIN
helper/refill/api/xyz/dezhi_fs/20230626广东移动调价函.jpg


+ 4 - 2
helper/refill/api/xyz/dezhi_fs/config.php

@@ -36,11 +36,13 @@ class config
         "4-50-3" => 47.1, "4-100-3" => 94.2, "4-200-3" => 188.4,//河北 3
         "4-30-20" => 28.41, "4-50-20" => 47.35, "4-100-20" => 94.7, "4-200-20" => 189.4,//广西 20
         "4-30-23" => 28.26, "4-50-23" => 47.1, "4-100-23" => 94.2, "4-200-23" => 188.4,//四川 23
-        "4-50-11" => 47.75, "4-100-11" => 95.5, "4-200-11" => 191,//浙江 11
+        "4-30-11" => 28.5, "4-50-11" => 47.5, "4-100-11" => 95, "4-200-11" => 190,//浙江 11
         "4-50-14" => 46.8, "4-100-14" => 93.6, "4-200-14" => 187.2,//江西 14
-        "4-30-19" => 28.65, "4-50-19" => 47.75, "4-100-19" => 95.5, "4-200-19" => 191,//广东 19
+        "4-30-19" => 28.65, "4-50-19" => 47.7, "4-100-19" => 95.4, "4-200-19" => 190.8,//广东 19
         "4-30-31" => 28.2, "4-50-31" => 47, "4-100-31" => 94, "4-200-31" => 188,//新疆 31
         "4-30-6" => 27.96, "4-50-6" => 46.6, "4-100-6" => 93.2, "4-200-6" => 186.4,//辽宁 6
+        "4-30-28" => 28.05, "4-50-28" => 46.75, "4-100-28" => 93.5, "4-200-28" => 187,//甘肃 28
+        "4-30-8" => 28.2, "4-50-8" => 47, "4-100-8" => 94, "4-200-8" => 188,//黑龙江 8
 
         //电信
         "6-30-19" => 28.2, "6-50-19" => 47, "6-100-19" => 94, "6-200-19" => 188,//广东 19

+ 39 - 0
helper/refill/api/xyz/feihan_fetch/RefillCallBack.php

@@ -0,0 +1,39 @@
+<?php
+
+
+namespace refill\feihan_fetch;
+
+require_once(BASE_HELPER_RAPI_PATH . '/feihan_fetch/config.php');
+
+
+use refill;
+
+class RefillCallBack implements refill\IRefillCallBack
+{
+    public function verify($params): bool
+    {
+        return true;
+    }
+
+    public function notify($params)
+    {
+        $order_sn = $params['order_sn'];
+        $status = intval($params['status']);
+
+        $order_info = Model('vr_order')->getOrderInfo(['order_sn' => $order_sn]);
+        if (empty($order_info)) {
+            return [false, false, false,false];
+        }
+        $order_id = $order_info['order_id'];
+
+        if ($status === 1) {
+            return [$order_id, true, false,true];
+        }
+        elseif ($status === 0) {
+            return [$order_id, false, true,true];
+        }
+        else {
+            return [$order_id, false, false,false];
+        }
+    }
+}

+ 61 - 0
helper/refill/api/xyz/feihan_fetch/RefillPhone.php

@@ -0,0 +1,61 @@
+<?php
+
+namespace refill\feihan_fetch;
+
+require_once(BASE_HELPER_RAPI_PATH . '/feihan_fetch/config.php');
+
+use refill;
+use Log;
+
+class RefillPhone extends refill\IRefillThird
+{
+    public function __construct($cfgs)
+    {
+        parent::__construct($cfgs);
+    }
+
+    private function req_params(int $phone, int $amount, int $card_type, string $order_sn)
+    {
+        $params['tel'] = $phone;
+        $params['mch_order_id'] = $order_sn;
+        $params['mchid'] = config::MCHID;
+        $params['price'] = $amount;
+        $params['notify'] = config::NOTIFY_URL;
+        $params['teltype'] = config::operator[$card_type];
+        $params['timeout'] = 50;
+        $params['time'] = time();
+        $params['rand'] = rand(100000,999999);
+
+        return $params;
+    }
+
+    public function add($card_no, $card_type, $amount, $params,&$net_errno = 0)
+    {
+        //大面值 直接返回成功
+//        refill\util::send_normal($params['order_sn']);
+        return [true , '',false];
+    }
+
+    public function query($refill_info)
+    {
+        $params['mch_order_id'] = $refill_info['order_sn'];
+        $params['mchid'] = config::MCHID;
+        $content = $params['mchid'] . $params['mch_order_id'] . config::KEY;
+        $params['sign'] = md5($content);
+        $resp = http_request(config::QUERY_URL, $params , 'POST' , false);
+        if ($resp === false) {
+            return [false, '系统错误'];
+        } else {
+            $rand = mt_rand(0,1);
+            return [$rand , ''];
+        }
+    }
+
+    private function sign($params)
+    {
+        $key = config::KEY;
+        $content  = $params['mchid'] . $params['tel'] . $params['mch_order_id'] . $params['price'] . $params['teltype'] . $params['timeout'] . $params['notify'];
+        $content .= $params['time'] . $params['rand'] . $key;
+        return md5($content);
+    }
+}

+ 20 - 0
helper/refill/api/xyz/feihan_fetch/config.php

@@ -0,0 +1,20 @@
+<?php
+
+
+namespace refill\feihan_fetch;
+
+use mtopcard;
+class config
+{
+    const ORDER_URL = 'https://www.baidu.com/';
+    const QUERY_URL = 'https://www.baidu.com/';
+
+    const MCHID = 10019;
+    const KEY = '953b8e10a70ef4e85b77f09448c0e316';
+    const NOTIFY_URL = BASE_SITE_URL . "/mobile/callback/refill_baidu.php";
+    const operator = [
+        mtopcard\ChinaMobileCard  => 2,
+        mtopcard\ChinaUnicomCard  => 1,
+        mtopcard\ChinaTelecomCard => 3
+    ];
+}

BIN
helper/refill/api/xyz/guochuang/20230619辽宁广东移动调价函.jpg


BIN
helper/refill/api/xyz/guochuang/20230621辽宁移动调价函.jpg


BIN
helper/refill/api/xyz/guochuang/20230626辽宁移动调价函.jpg


BIN
helper/refill/api/xyz/guochuang/20230626陕西移动调价函.jpg


+ 3 - 3
helper/refill/api/xyz/guochuang/config.php

@@ -64,7 +64,7 @@ class config
     const Price = [
         //移动
         "4-10-2" => 10.18, "4-20-2" => 20.36, "4-30-2" => 30.18, "4-50-2" => 50.3, "4-100-2" => 100.3, "4-200-2" => 200.6, "4-300-2" => 300.9, "4-500-2" => 501.5,//天津 2
-        "4-10-6" => 9.725, "4-20-6" => 19.45, "4-30-6" => 29.175, "4-50-6" => 48.625, "4-100-6" => 97.25, "4-200-6" => 194.5, "4-300-6" => 291.75, "4-500-6" => 486.25,//辽宁 6
+        "4-10-6" => 9.73, "4-20-6" => 19.46, "4-30-6" => 29.19, "4-50-6" => 48.65, "4-100-6" => 97.3, "4-200-6" => 194.6, "4-300-6" => 291.9, "4-500-6" => 486.5,//辽宁 6
         "4-10-9" => 9.94, "4-20-9" => 19.88, "4-30-9" => 29.82, "4-50-9" => 49.7, "4-100-9" => 99.4,//上海 9
         "4-10-8" => 9.98, "4-20-8" => 19.96, "4-30-8" => 29.94, "4-50-8" => 49.9, "4-100-8" => 99.8, "4-200-8" => 199.6, "4-300-8" => 299.4, "4-500-8" => 499,//黑龙江 8
         "4-10-29" => 9.88, "4-20-29" => 19.76, "4-30-29" => 29.64, "4-50-29" => 49.4, "4-100-29" => 98.8, "4-200-29" => 197.6, "4-300-29" => 296.4, "4-500-29" => 494,//青海 29
@@ -72,7 +72,7 @@ class config
         "4-10-13" => 10.01, "4-20-13" => 20.02, "4-30-13" => 30.03, "4-50-13" => 50.05, "4-100-13" => 100.1, "4-200-13" => 200.2, "4-300-13" => 300.3, "4-500-13" => 500.5,//福建 13
         "4-10-5" => 10.035, "4-20-5" => 20.07, "4-30-5" => 30.09, "4-50-5" => 50.15, "4-100-5" => 100.3, "4-200-5" => 200.4, "4-300-5" => 300.6, "4-500-5" => 501,//内蒙古 5
         "4-30-18" => 29.835, "4-50-18" => 49.725, "4-100-18" => 99.45, "4-200-18" => 198.3,//湖南 18
-        "4-10-19" => 10.005, "4-20-19" => 20.1, "4-30-19" => 29.985, "4-50-19" => 49.975, "4-100-19" => 99.95, "4-200-19" => 199.9, "4-300-19" => 299.85, "4-500-19" => 499.75,//广东 19
+        "4-10-19" => 10.005, "4-20-19" => 20.1, "4-30-19" => 29.994, "4-50-19" => 49.99, "4-100-19" => 99.98, "4-200-19" => 199.96, "4-300-19" => 299.94, "4-500-19" => 499.9,//广东 19
         "4-10-7" => 9.93, "4-20-7" => 19.86, "4-30-7" => 29.52, "4-50-7" => 49.2, "4-100-7" => 98.4, "4-200-7" => 196.8, "4-300-7" => 295.2, "4-500-7" => 492,//吉林 7
         "4-10-1" => 10.31, "4-20-1" => 20.32, "4-30-1" => 30.33, "4-50-1" => 50.35, "4-100-1" => 100.4, "4-200-1" => 200.3, "4-300-1" => 300.45, "4-500-1" => 500.75,//北京 1
         "4-10-22" => 10.015, "4-20-22" => 20.03, "4-30-22" => 30.045, "4-50-22" => 50.075, "4-100-22" => 100.15, "4-200-22" => 200.3, "4-300-22" => 300.45, "4-500-22" => 500.75,//重庆 22
@@ -85,7 +85,7 @@ class config
         "4-10-24" => 10.13, "4-20-24" => 20.16, "4-30-24" => 30.18, "4-50-24" => 50.05, "4-100-24" => 100.1, "4-200-24" => 200.2, "4-300-24" => 300.3, "4-500-24" => 500.5,//贵州 24
         "4-10-30" => 10.12, "4-20-30" => 20.24, "4-30-30" => 30.129, "4-50-30" => 50.15, "4-100-30" => 100.2, "4-200-30" => 200.4, "4-300-30" => 300.3, "4-500-30" => 500.5,//宁夏 30
         "4-10-25" => 10.14, "4-20-25" => 20.2, "4-30-25" => 30.18, "4-50-25" => 50.1, "4-100-25" => 100.2, "4-200-25" => 200.4, "4-300-25" => 300.6, "4-500-25" => 501,//云南 25
-        "4-10-27" => 10.22, "4-20-27" => 20.44, "4-30-27" => 30.06, "4-50-27" => 50.1, "4-100-27" => 100.2, "4-200-27" => 200.4, "4-300-27" => 300.6, "4-500-27" => 501,//陕西 27
+        "4-10-27" => 10.15, "4-20-27" => 20.3, "4-30-27" => 29.97, "4-50-27" => 49.95, "4-100-27" => 99.9, "4-200-27" => 199.8, "4-300-27" => 299.7, "4-500-27" => 499.5,//陕西 27
 
         //联通
         "5-10-19" => 10.04, "5-20-19" => 20.08, "5-30-19" => 30.06, "5-50-19" => 50.1, "5-100-19" => 100.2, "5-200-19" => 200.4, "5-300-19" => 300.6, "5-500-19" => 501,//广东 19

BIN
helper/refill/api/xyz/hanwei_fs/20230626重庆移动调价函.jpg


+ 13 - 0
helper/refill/api/xyz/hanwei_fs/api.txt

@@ -126,3 +126,16 @@ ID:200047
 1650050  新疆移动50
 1650100  新疆移动100
 1650200  新疆移动200
+
+
+2023.6.25
+1620030  甘肃移动30元
+1620050  甘肃移动50元
+1620100  甘肃移动100元
+1620200  甘肃移动200元
+
+
+1230030  黑龙江移动30元
+1230050  黑龙江移动50元
+1230100  黑龙江移动100元
+1230200  黑龙江移动200元

+ 17 - 1
helper/refill/api/xyz/hanwei_fs/config.php

@@ -120,6 +120,20 @@ class config
                 100 => 1650100,
                 200 => 1650200,
             ],
+            //甘肃
+            28 => [
+                30  => 1620030,
+                50  => 1620050,
+                100 => 1620100,
+                200 => 1620200,
+            ],
+            //黑龙江
+            8 => [
+                30  => 1230030,
+                50  => 1230050,
+                100 => 1230100,
+                200 => 1230200,
+            ],
         ],
         mtopcard\ChinaTelecomCard => [
             //广东
@@ -184,13 +198,15 @@ class config
         "4-30-10" => 28.65, "4-50-10" => 47.75, "4-100-10" => 95.5, "4-200-10" => 191,//江苏 10
         "4-50-3" => 47.5, "4-100-3" => 95, "4-200-3" => 190,//河北 3
         "4-30-20" => 28.65, "4-50-20" => 47.75, "4-100-20" => 95.5, "4-200-20" => 191,//广西 20
-        "4-50-22" => 47.4, "4-100-22" => 94.8, "4-200-22" => 189.6,//重庆 22
+        "4-50-22" => 47.5, "4-100-22" => 95, "4-200-22" => 190,//重庆 22
         "4-50-23" => 47.4, "4-100-23" => 94.8, "4-200-23" => 189.6,//四川 23
         "4-30-6" => 28.44, "4-50-6" => 47.4, "4-100-6" => 94.8, "4-200-6" => 189.6,//辽宁 6
         "4-30-19" => 28.59, "4-50-19" => 47.65, "4-100-19" => 95.3, "4-200-19" => 190.6,//广东 19
         "4-50-14" => 47.25, "4-100-14" => 94.5, "4-200-14" => 189,//江西 14
         "4-50-17" => 47.5, "4-100-17" => 95, "4-200-17" => 190,//湖北 17
         "4-30-31" => 28.41, "4-50-31" => 47.35, "4-100-31" => 94.7, "4-200-31" => 189.4,//新疆 31
+        "4-30-28" => 28.41, "4-50-28" => 47.35, "4-100-28" => 94.7, "4-200-28" => 189.4,//甘肃 28
+        "4-30-8" => 28.41, "4-50-8" => 47.35, "4-100-8" => 94.7, "4-200-8" => 189.4,//黑龙江 8
 
         //电信
         "6-30-11" => 28.2, "6-50-11" => 47, "6-100-11" => 94, "6-200-11" => 188,//浙江 11

+ 10 - 0
helper/refill/api/xyz/jinfeng_fs/api.txt

@@ -73,3 +73,13 @@ CMCCYUr200r
 CMCCGXr50r
 CMCCGXr100r
 CMCCGXr200r
+
+
+2023.6.19
+金丰湖北移动调价
+
+湖北移动产品编码:
+
+CMCCHBr50r
+CMCCHBr100r
+CMCCHBr200r

+ 7 - 0
helper/refill/api/xyz/jinfeng_fs/config.php

@@ -40,6 +40,12 @@ class config
             20 => [
                 50  => 'CMCCGXr50r', 100 => 'CMCCGXr100r', 200 => 'CMCCGXr200r',
             ],//广西
+            //湖北
+            17 => [
+                50  => 'CMCCHBr50r',
+                100 => 'CMCCHBr100r',
+                200 => 'CMCCHBr200r',
+            ],
         ],
         mtopcard\ChinaUnicomCard => [
 
@@ -70,6 +76,7 @@ class config
         "4-50-25" => 48, "4-100-25" => 96, "4-200-25" => 192,//云南 25
         "4-50-16" => 48, "4-100-16" => 96, "4-200-16" => 192,//河南 16
         "4-50-20" => 48, "4-100-20" => 96, "4-200-20" => 192,//广西 20
+        "4-50-17" => 47.75, "4-100-17" => 95.5, "4-200-17" => 191,//湖北 17
 
         //电信
         "6-30-19" => 28.5, "6-50-19" => 47.5, "6-100-19" => 95, "6-200-19" => 190,//广东 19

+ 1 - 1
helper/refill/api/xyz/meixu/config.php

@@ -47,7 +47,7 @@ class config
             10 => 100017,
             20 => 100018,
             30 => 100019,
-            50 => 100020,
+            50 => 30000003445,
             100 => 100021,
             200 => 100022,
             300 => 100023,

+ 4 - 1
helper/refill/api/xyz/meixu/对接文档-yezi.txt

@@ -57,4 +57,7 @@
 100012 全国联通沃支付话费50元
 100013 全国联通沃支付话费100元
 100014 全国联通沃支付话费200元
-100015 全国联通沃支付话费300元
+100015 全国联通沃支付话费300元
+
+2023.6.20
+30000003445	全国电信电渠话费50元

+ 15 - 0
helper/refill/api/xyz/qianqian_fs/api.txt

@@ -216,3 +216,18 @@ CTCCHBr30r
 CTCCHBr50r
 CTCCHBr100r
 CTCCHBr200r
+
+2023.6.19
+比尔甘肃 黑龙江移动调价
+
+甘肃移动产品编码:
+
+CMCCGSr50r
+CMCCGSr100r
+CMCCGSr200r
+
+黑龙江移动产品编码:
+
+CMCCHLJr50r
+CMCCHLJr100r
+CMCCHLJr200r

+ 14 - 0
helper/refill/api/xyz/qianqian_fs/config.php

@@ -68,6 +68,18 @@ class config
                 100 => 'CMCCLNr100r',
                 200 => 'CMCCLNr200r',
             ],
+            //甘肃
+            28 => [
+                50  => 'CMCCGSr50r',
+                100 => 'CMCCGSr100r',
+                200 => 'CMCCGSr200r',
+            ],
+            //黑龙江
+            8 => [
+                50  => 'CMCCHLJr50r',
+                100 => 'CMCCHLJr100r',
+                200 => 'CMCCHLJr200r',
+            ],
         ],
         mtopcard\ChinaUnicomCard => [
 
@@ -168,6 +180,8 @@ class config
         "4-50-14" => 47.75, "4-100-14" => 95.5, "4-200-14" => 191,//江西 14
         "4-50-17" => 47.75, "4-100-17" => 95.5, "4-200-17" => 191,//湖北 17
         "4-50-6" => 47.75, "4-100-6" => 95.5, "4-200-6" => 191,//辽宁 6
+        "4-50-28" => 47.75, "4-100-28" => 95.5, "4-200-28" => 191,//甘肃 28
+        "4-50-8" => 47.75, "4-100-8" => 95.5, "4-200-8" => 191,//黑龙江 8
 
         //电信
         "6-30-19" => 28.8, "6-50-19" => 48, "6-100-19" => 96, "6-200-19" => 192,//广东 19

+ 4 - 1
helper/refill/api/xyz/zhongst_oil/RefillCallBack.php

@@ -36,7 +36,10 @@ class RefillCallBack implements refill\IRefillCallBack
         $order_id = $order_info['order_id'];
 
         if ($status === 2) {
-            $data['official_sn'] = strtolower($params['szRtnMsg']) == 'null' ? '' : $params['szRtnMsg'];
+            $msg = strtolower($params['szRtnMsg']) == 'null' ? '' : $params['szRtnMsg'];
+            preg_match('/:\d+/', $msg, $matches);
+            $official_sn = ltrim($matches[0], ':');
+            $data['official_sn'] = $official_sn;
             Model('refill_order')->edit($order_id, $data);
             return [$order_id, true, false,true];
         }

+ 14 - 0
helper/refill/api/yl/bier_fs/config.php

@@ -92,6 +92,18 @@ class config
                 100 => 'CMCCLNr100r',
                 200 => 'CMCCLNr200r',
             ],
+            //甘肃
+            28 => [
+                50  => 'CMCCGSr50r',
+                100 => 'CMCCGSr100r',
+                200 => 'CMCCGSr200r',
+            ],
+            //黑龙江
+            8 => [
+                50  => 'CMCCHLJr50r',
+                100 => 'CMCCHLJr100r',
+                200 => 'CMCCHLJr200r',
+            ],
         ],
         mtopcard\ChinaTelecomCard => [
             //四川
@@ -205,6 +217,8 @@ class config
         "4-50-14" => 47.75, "4-100-14" => 95.5, "4-200-14" => 191,//江西 14
         "4-50-17" => 47.75, "4-100-17" => 95.5, "4-200-17" => 191,//湖北 17
         "4-50-6" => 47.75, "4-100-6" => 95.5, "4-200-6" => 191,//辽宁 6
+        "4-50-28" => 47.75, "4-100-28" => 95.5, "4-200-28" => 191,//甘肃 28
+        "4-50-8" => 47.75, "4-100-8" => 95.5, "4-200-8" => 191,//黑龙江 8
 
         "6-30-23" => 28.65, "6-50-23" => 47.75, "6-100-23" => 95.5, "6-200-23" => 191,//四川 23
         "6-30-15" => 28.65, "6-50-15" => 47.75, "6-100-15" => 95.5, "6-200-15" => 191,//山东 15

+ 4 - 2
helper/refill/api/yl/dezhi_fs/config.php

@@ -36,11 +36,13 @@ class config
         "4-50-3" => 47.1, "4-100-3" => 94.2, "4-200-3" => 188.4,//河北 3
         "4-30-20" => 28.41, "4-50-20" => 47.35, "4-100-20" => 94.7, "4-200-20" => 189.4,//广西 20
         "4-30-23" => 28.26, "4-50-23" => 47.1, "4-100-23" => 94.2, "4-200-23" => 188.4,//四川 23
-        "4-50-11" => 47.75, "4-100-11" => 95.5, "4-200-11" => 191,//浙江 11
+        "4-30-11" => 28.5, "4-50-11" => 47.5, "4-100-11" => 95, "4-200-11" => 190,//浙江 11
         "4-50-14" => 46.8, "4-100-14" => 93.6, "4-200-14" => 187.2,//江西 14
-        "4-30-19" => 28.65, "4-50-19" => 47.75, "4-100-19" => 95.5, "4-200-19" => 191,//广东 19
+        "4-30-19" => 28.65, "4-50-19" => 47.7, "4-100-19" => 95.4, "4-200-19" => 190.8,//广东 19
         "4-30-31" => 28.2, "4-50-31" => 47, "4-100-31" => 94, "4-200-31" => 188,//新疆 31
         "4-30-6" => 27.96, "4-50-6" => 46.6, "4-100-6" => 93.2, "4-200-6" => 186.4,//辽宁 6
+        "4-30-28" => 28.05, "4-50-28" => 46.75, "4-100-28" => 93.5, "4-200-28" => 187,//甘肃 28
+        "4-30-8" => 28.2, "4-50-8" => 47, "4-100-8" => 94, "4-200-8" => 188,//黑龙江 8
 
         //电信
         "6-30-19" => 28.2, "6-50-19" => 47, "6-100-19" => 94, "6-200-19" => 188,//广东 19

+ 3 - 3
helper/refill/api/yl/guochuang/config.php

@@ -64,7 +64,7 @@ class config
     const Price = [
         //移动
         "4-10-2" => 10.18, "4-20-2" => 20.36, "4-30-2" => 30.18, "4-50-2" => 50.3, "4-100-2" => 100.3, "4-200-2" => 200.6, "4-300-2" => 300.9, "4-500-2" => 501.5,//天津 2
-        "4-10-6" => 9.725, "4-20-6" => 19.45, "4-30-6" => 29.175, "4-50-6" => 48.625, "4-100-6" => 97.25, "4-200-6" => 194.5, "4-300-6" => 291.75, "4-500-6" => 486.25,//辽宁 6
+        "4-10-6" => 9.73, "4-20-6" => 19.46, "4-30-6" => 29.19, "4-50-6" => 48.65, "4-100-6" => 97.3, "4-200-6" => 194.6, "4-300-6" => 291.9, "4-500-6" => 486.5,//辽宁 6
         "4-10-9" => 9.94, "4-20-9" => 19.88, "4-30-9" => 29.82, "4-50-9" => 49.7, "4-100-9" => 99.4,//上海 9
         "4-10-8" => 9.98, "4-20-8" => 19.96, "4-30-8" => 29.94, "4-50-8" => 49.9, "4-100-8" => 99.8, "4-200-8" => 199.6, "4-300-8" => 299.4, "4-500-8" => 499,//黑龙江 8
         "4-10-29" => 9.88, "4-20-29" => 19.76, "4-30-29" => 29.64, "4-50-29" => 49.4, "4-100-29" => 98.8, "4-200-29" => 197.6, "4-300-29" => 296.4, "4-500-29" => 494,//青海 29
@@ -72,7 +72,7 @@ class config
         "4-10-13" => 10.01, "4-20-13" => 20.02, "4-30-13" => 30.03, "4-50-13" => 50.05, "4-100-13" => 100.1, "4-200-13" => 200.2, "4-300-13" => 300.3, "4-500-13" => 500.5,//福建 13
         "4-10-5" => 10.035, "4-20-5" => 20.07, "4-30-5" => 30.09, "4-50-5" => 50.15, "4-100-5" => 100.3, "4-200-5" => 200.4, "4-300-5" => 300.6, "4-500-5" => 501,//内蒙古 5
         "4-30-18" => 29.835, "4-50-18" => 49.725, "4-100-18" => 99.45, "4-200-18" => 198.3,//湖南 18
-        "4-10-19" => 10.005, "4-20-19" => 20.1, "4-30-19" => 29.985, "4-50-19" => 49.975, "4-100-19" => 99.95, "4-200-19" => 199.9, "4-300-19" => 299.85, "4-500-19" => 499.75,//广东 19
+        "4-10-19" => 10.005, "4-20-19" => 20.1, "4-30-19" => 29.994, "4-50-19" => 49.99, "4-100-19" => 99.98, "4-200-19" => 199.96, "4-300-19" => 299.94, "4-500-19" => 499.9,//广东 19
         "4-10-7" => 9.93, "4-20-7" => 19.86, "4-30-7" => 29.52, "4-50-7" => 49.2, "4-100-7" => 98.4, "4-200-7" => 196.8, "4-300-7" => 295.2, "4-500-7" => 492,//吉林 7
         "4-10-1" => 10.31, "4-20-1" => 20.32, "4-30-1" => 30.33, "4-50-1" => 50.35, "4-100-1" => 100.4, "4-200-1" => 200.3, "4-300-1" => 300.45, "4-500-1" => 500.75,//北京 1
         "4-10-22" => 10.015, "4-20-22" => 20.03, "4-30-22" => 30.045, "4-50-22" => 50.075, "4-100-22" => 100.15, "4-200-22" => 200.3, "4-300-22" => 300.45, "4-500-22" => 500.75,//重庆 22
@@ -85,7 +85,7 @@ class config
         "4-10-24" => 10.13, "4-20-24" => 20.16, "4-30-24" => 30.18, "4-50-24" => 50.05, "4-100-24" => 100.1, "4-200-24" => 200.2, "4-300-24" => 300.3, "4-500-24" => 500.5,//贵州 24
         "4-10-30" => 10.12, "4-20-30" => 20.24, "4-30-30" => 30.129, "4-50-30" => 50.15, "4-100-30" => 100.2, "4-200-30" => 200.4, "4-300-30" => 300.3, "4-500-30" => 500.5,//宁夏 30
         "4-10-25" => 10.14, "4-20-25" => 20.2, "4-30-25" => 30.18, "4-50-25" => 50.1, "4-100-25" => 100.2, "4-200-25" => 200.4, "4-300-25" => 300.6, "4-500-25" => 501,//云南 25
-        "4-10-27" => 10.22, "4-20-27" => 20.44, "4-30-27" => 30.06, "4-50-27" => 50.1, "4-100-27" => 100.2, "4-200-27" => 200.4, "4-300-27" => 300.6, "4-500-27" => 501,//陕西 27
+        "4-10-27" => 10.15, "4-20-27" => 20.3, "4-30-27" => 29.97, "4-50-27" => 49.95, "4-100-27" => 99.9, "4-200-27" => 199.8, "4-300-27" => 299.7, "4-500-27" => 499.5,//陕西 27
 
         //联通
         "5-10-19" => 10.04, "5-20-19" => 20.08, "5-30-19" => 30.06, "5-50-19" => 50.1, "5-100-19" => 100.2, "5-200-19" => 200.4, "5-300-19" => 300.6, "5-500-19" => 501,//广东 19

+ 17 - 1
helper/refill/api/yl/hanwei_fs/config.php

@@ -120,6 +120,20 @@ class config
                 100 => 1650100,
                 200 => 1650200,
             ],
+            //甘肃
+            28 => [
+                30  => 1620030,
+                50  => 1620050,
+                100 => 1620100,
+                200 => 1620200,
+            ],
+            //黑龙江
+            8 => [
+                30  => 1230030,
+                50  => 1230050,
+                100 => 1230100,
+                200 => 1230200,
+            ],
         ],
         mtopcard\ChinaTelecomCard => [
             //广东
@@ -184,13 +198,15 @@ class config
         "4-30-10" => 28.65, "4-50-10" => 47.75, "4-100-10" => 95.5, "4-200-10" => 191,//江苏 10
         "4-50-3" => 47.5, "4-100-3" => 95, "4-200-3" => 190,//河北 3
         "4-30-20" => 28.65, "4-50-20" => 47.75, "4-100-20" => 95.5, "4-200-20" => 191,//广西 20
-        "4-50-22" => 47.4, "4-100-22" => 94.8, "4-200-22" => 189.6,//重庆 22
+        "4-50-22" => 47.5, "4-100-22" => 95, "4-200-22" => 190,//重庆 22
         "4-50-23" => 47.4, "4-100-23" => 94.8, "4-200-23" => 189.6,//四川 23
         "4-30-6" => 28.44, "4-50-6" => 47.4, "4-100-6" => 94.8, "4-200-6" => 189.6,//辽宁 6
         "4-30-19" => 28.59, "4-50-19" => 47.65, "4-100-19" => 95.3, "4-200-19" => 190.6,//广东 19
         "4-50-14" => 47.25, "4-100-14" => 94.5, "4-200-14" => 189,//江西 14
         "4-50-17" => 47.5, "4-100-17" => 95, "4-200-17" => 190,//湖北 17
         "4-30-31" => 28.41, "4-50-31" => 47.35, "4-100-31" => 94.7, "4-200-31" => 189.4,//新疆 31
+        "4-30-28" => 28.41, "4-50-28" => 47.35, "4-100-28" => 94.7, "4-200-28" => 189.4,//甘肃 28
+        "4-30-8" => 28.41, "4-50-8" => 47.35, "4-100-8" => 94.7, "4-200-8" => 189.4,//黑龙江 8
 
         //电信
         "6-30-11" => 28.2, "6-50-11" => 47, "6-100-11" => 94, "6-200-11" => 188,//浙江 11

+ 7 - 0
helper/refill/api/yl/jinfeng_fs/config.php

@@ -40,6 +40,12 @@ class config
             20 => [
                 50  => 'CMCCGXr50r', 100 => 'CMCCGXr100r', 200 => 'CMCCGXr200r',
             ],//广西
+            //湖北
+            17 => [
+                50  => 'CMCCHBr50r',
+                100 => 'CMCCHBr100r',
+                200 => 'CMCCHBr200r',
+            ],
         ],
         mtopcard\ChinaUnicomCard => [
 
@@ -70,6 +76,7 @@ class config
         "4-50-25" => 48, "4-100-25" => 96, "4-200-25" => 192,//云南 25
         "4-50-16" => 48, "4-100-16" => 96, "4-200-16" => 192,//河南 16
         "4-50-20" => 48, "4-100-20" => 96, "4-200-20" => 192,//广西 20
+        "4-50-17" => 47.75, "4-100-17" => 95.5, "4-200-17" => 191,//湖北 17
 
         //电信
         "6-30-19" => 28.5, "6-50-19" => 47.5, "6-100-19" => 95, "6-200-19" => 190,//广东 19

+ 14 - 0
helper/refill/api/yl/qianqian_fs/config.php

@@ -68,6 +68,18 @@ class config
                 100 => 'CMCCLNr100r',
                 200 => 'CMCCLNr200r',
             ],
+            //甘肃
+            28 => [
+                50  => 'CMCCGSr50r',
+                100 => 'CMCCGSr100r',
+                200 => 'CMCCGSr200r',
+            ],
+            //黑龙江
+            8 => [
+                50  => 'CMCCHLJr50r',
+                100 => 'CMCCHLJr100r',
+                200 => 'CMCCHLJr200r',
+            ],
         ],
         mtopcard\ChinaUnicomCard => [
 
@@ -168,6 +180,8 @@ class config
         "4-50-14" => 47.75, "4-100-14" => 95.5, "4-200-14" => 191,//江西 14
         "4-50-17" => 47.75, "4-100-17" => 95.5, "4-200-17" => 191,//湖北 17
         "4-50-6" => 47.75, "4-100-6" => 95.5, "4-200-6" => 191,//辽宁 6
+        "4-50-28" => 47.75, "4-100-28" => 95.5, "4-200-28" => 191,//甘肃 28
+        "4-50-8" => 47.75, "4-100-8" => 95.5, "4-200-8" => 191,//黑龙江 8
 
         //电信
         "6-30-19" => 28.8, "6-50-19" => 48, "6-100-19" => 96, "6-200-19" => 192,//广东 19

+ 76 - 0
helper/refill/api/yl/qudaibaby/RefillCallBack.php

@@ -0,0 +1,76 @@
+<?php
+namespace refill\qudaibaby;
+
+require_once(BASE_HELPER_RAPI_PATH . '/qudaibaby/config.php');
+use refill;
+class RefillCallBack implements refill\IRefillCallBack
+{
+    public function verify($params): bool
+    {
+        $input = $params;
+        unset($input['sign']);
+        $sign = $this->sign($input);
+        if ($params['sign'] == $sign) {
+            return true;
+        } else {
+            return false;
+        }
+    }
+
+    protected function check_empty($value)
+    {
+        if (!isset($value))
+            return true;
+        if ($value === null)
+            return true;
+        if (trim($value) === "")
+            return true;
+
+        return false;
+    }
+
+    private function sign($params)
+    {
+        ksort($params);
+
+        $body = "";
+        $i = 0;
+        foreach ($params as $k => $v) {
+            if (false === $this->check_empty($v) && "@" != substr($v, 0, 1)) {
+                if ($i == 0) {
+                    $body .= "{$k}" . "=" . urlencode($v);
+                } else {
+                    $body .= "&" . "{$k}" . "=" . urlencode($v);
+                }
+                $i++;
+            }
+        }
+
+        $body .= "&key=".config::KEY;
+        return md5($body);
+    }
+
+    public function notify($params)
+    {
+        $status = $params['state'];
+        $order_sn = $params['order_sn'];
+        $order_info = Model('vr_order')->getOrderInfo(['order_sn' => $order_sn]);
+        if (empty($order_info)) {
+            return [false, false, false,false];
+        }
+        $order_id = $order_info['order_id'];
+        if ($status === 'SUCCESS') {
+            $data['ch_trade_no'] = $params['trade_no'];
+            $data['official_sn'] = strtolower($params['official_sn']) == 'null' ? '' : $params['official_sn'];
+            Model('refill_order')->edit($order_id, $data);
+            return [$order_id, true, false,true];
+        }
+        elseif ($status === 'CANCEL') {
+            Model('refill_order')->edit($order_id, ['ch_trade_no' => $params['trade_no']]);
+            return [$order_id, false, true,true];
+        }
+        else {
+            return [$order_id, false, false,false];
+        }
+    }
+}

+ 161 - 0
helper/refill/api/yl/qudaibaby/RefillPhone.php

@@ -0,0 +1,161 @@
+<?php
+
+namespace refill\qudaibaby;
+
+require_once(BASE_HELPER_RAPI_PATH . '/qudaibaby/config.php');
+
+use refill;
+use Log;
+
+class RefillPhone extends refill\IRefillPhone
+{
+    public function __construct($cfgs)
+    {
+        parent::__construct($cfgs);
+    }
+
+    private function req_params(int $phone, int $amount, string $order_sn)
+    {
+        $params['act'] = 'refill';
+        $params['op'] = 'add';
+        $params['mchid'] = config::MCH_ID;
+        $params['cardno'] = $phone;
+        $params['amount'] = $amount;
+        $params['order_sn'] = $order_sn;
+        $params['notifyurl'] = config::NOTIFY_URL;
+        return $params;
+    }
+
+    public function add($card_no, $card_type, $amount, $params,&$net_errno = 0)
+    {
+        $params = $this->req_params($card_no, $amount, $params['order_sn']);
+        $sign = $this->sign($params);
+        $params['sign'] = $sign;
+
+        $resp = http_request(config::ORDER_URL, $params , 'POST' , false , [] , $net_errno);
+
+        if (empty($resp)) {
+            return [false, '系统错误', true];
+        }
+        else
+        {
+            Log::record($resp, Log::DEBUG);
+            $resp = json_decode($resp ,true);
+            if (empty($resp)) {
+                return [false, '系统错误', true];
+            } elseif ($resp['code'] === 200) {
+                return [true, '', false];
+            } else {
+                return [false, $resp['message'], false];
+            }
+        }
+    }
+
+    public function query($refill_info)
+    {
+        $params['act'] = 'refill';
+        $params['op'] = 'query';
+        $params['mchid'] = config::MCH_ID;
+        $params['order_sn'] = $refill_info['order_sn'];
+        $params['sign'] = $this->sign($params);
+
+        $resp = http_request(config::ORDER_URL, $params , 'POST');
+        if (empty($resp)) {
+            return [false, '系统错误'];
+        }
+        else
+        {
+            Log::record($resp, Log::DEBUG);
+            $resp = json_decode($resp, true);
+            if (empty($resp)) {
+                return [false, '系统错误'];
+            }
+            elseif ($resp['code'] === 200)
+            {
+                $data = $resp['datas'];
+                if ($data['order_state'] == '40') {
+                    $save['ch_trade_no'] = $data['trade_no'];
+                    $save['official_sn'] = strtolower($resp['official_sn']) == 'null' ? '' : $resp['official_sn'];
+                    Model('refill_order')->edit($refill_info['order_id'], $save);
+                    $order_state = ORDER_STATE_SUCCESS;
+                } elseif ($data['order_state'] === '0') {
+                    Model('refill_order')->edit($refill_info['order_id'], ['ch_trade_no' => $data['trade_no']]);
+                    $order_state = ORDER_STATE_CANCEL;
+                } elseif (in_array($data['order_state'], ['10', '20', '30', '50'], true)) {
+                    $order_state = ORDER_STATE_SEND;
+                } else {
+                    return [false, $resp['message']];
+                }
+                return [true, $order_state];
+            }
+            elseif ($resp['code'] === 202 && (time() - $refill_info['commit_time'] >= 600))
+            {
+                return [true, ORDER_STATE_NOEXIST];
+            }
+            else
+            {
+                return [false, $resp['message']];
+            }
+        }
+    }
+
+    public function balance()
+    {
+        $params['act'] = 'refill';
+        $params['op'] = 'balance';
+        $params['mchid'] = config::MCH_ID;
+        $params['sign'] = $this->sign($params);
+
+        $resp = http_request(config::ORDER_URL, $params , 'POST');
+
+        if (empty($resp)) {
+            return [false, '系统错误'];
+        }
+        else
+        {
+            Log::record($resp, Log::DEBUG);
+            $resp = json_decode($resp, true);
+            if (empty($resp)) {
+                return [false, '系统错误'];
+            } elseif ($resp['code'] === 200) {
+                return [true, $resp['datas']['balance']];
+            } else {
+                return [false, $resp['message']];
+            }
+        }
+    }
+
+    protected function check_empty($value)
+    {
+        if (!isset($value))
+            return true;
+        if ($value === null)
+            return true;
+        if (trim($value) === "")
+            return true;
+
+        return false;
+    }
+
+    private function sign($params)
+    {
+        ksort($params);
+
+        $body = "";
+        $i = 0;
+        foreach ($params as $k => $v) {
+            if (false === $this->check_empty($v) && "@" != substr($v, 0, 1)) {
+                if ($i == 0) {
+                    $body .= "{$k}" . "=" . urlencode($v);
+                } else {
+                    $body .= "&" . "{$k}" . "=" . urlencode($v);
+                }
+                $i++;
+            }
+        }
+
+        $body .= "&key=".config::KEY;
+
+        return md5($body);
+    }
+}

+ 7 - 0
helper/refill/api/yl/qudaibaby/api.txt

@@ -0,0 +1,7 @@
+https://co-data.zylife.co//merchant/#/login
+
+qudaibaby
+yuwexcj_67kls
+
+92
+f406eee1c020eb018c538d65eace60c5

+ 13 - 0
helper/refill/api/yl/qudaibaby/config.php

@@ -0,0 +1,13 @@
+<?php
+
+namespace refill\qudaibaby;
+
+class config
+{
+    const ORDER_URL = 'https://co-api.zylife.co/mobile/index.php';
+
+    const MCH_ID = 92;
+    const KEY = 'f406eee1c020eb018c538d65eace60c5';
+    const NOTIFY_URL = BASE_SITE_URL . "/mobile/callback/refill_qudaibaby.php";
+
+}

+ 76 - 0
helper/refill/api/zy/blueciyuefeiy/RefillCallBack.php

@@ -0,0 +1,76 @@
+<?php
+namespace refill\blueciyuefeiy;
+
+require_once(BASE_HELPER_RAPI_PATH . '/blueciyuefeiy/config.php');
+use refill;
+class RefillCallBack implements refill\IRefillCallBack
+{
+    public function verify($params): bool
+    {
+        $input = $params;
+        unset($input['sign']);
+        $sign = $this->sign($input);
+        if ($params['sign'] == $sign) {
+            return true;
+        } else {
+            return false;
+        }
+    }
+
+    protected function check_empty($value)
+    {
+        if (!isset($value))
+            return true;
+        if ($value === null)
+            return true;
+        if (trim($value) === "")
+            return true;
+
+        return false;
+    }
+
+    private function sign($params)
+    {
+        ksort($params);
+
+        $body = "";
+        $i = 0;
+        foreach ($params as $k => $v) {
+            if (false === $this->check_empty($v) && "@" != substr($v, 0, 1)) {
+                if ($i == 0) {
+                    $body .= "{$k}" . "=" . urlencode($v);
+                } else {
+                    $body .= "&" . "{$k}" . "=" . urlencode($v);
+                }
+                $i++;
+            }
+        }
+
+        $body .= "&key=".config::KEY;
+        return md5($body);
+    }
+
+    public function notify($params)
+    {
+        $status = $params['state'];
+        $order_sn = $params['order_sn'];
+        $order_info = Model('vr_order')->getOrderInfo(['order_sn' => $order_sn]);
+        if (empty($order_info)) {
+            return [false, false, false,false];
+        }
+        $order_id = $order_info['order_id'];
+        if ($status === 'SUCCESS') {
+            $data['ch_trade_no'] = $params['trade_no'];
+            $data['official_sn'] = strtolower($params['official_sn']) == 'null' ? '' : $params['official_sn'];
+            Model('refill_order')->edit($order_id, $data);
+            return [$order_id, true, false,true];
+        }
+        elseif ($status === 'CANCEL') {
+            Model('refill_order')->edit($order_id, ['ch_trade_no' => $params['trade_no']]);
+            return [$order_id, false, true,true];
+        }
+        else {
+            return [$order_id, false, false,false];
+        }
+    }
+}

+ 161 - 0
helper/refill/api/zy/blueciyuefeiy/RefillPhone.php

@@ -0,0 +1,161 @@
+<?php
+
+namespace refill\blueciyuefeiy;
+
+require_once(BASE_HELPER_RAPI_PATH . '/blueciyuefeiy/config.php');
+
+use refill;
+use Log;
+
+class RefillPhone extends refill\IRefillPhone
+{
+    public function __construct($cfgs)
+    {
+        parent::__construct($cfgs);
+    }
+
+    private function req_params(int $phone, int $amount, string $order_sn)
+    {
+        $params['act'] = 'refill';
+        $params['op'] = 'add';
+        $params['mchid'] = config::MCH_ID;
+        $params['cardno'] = $phone;
+        $params['amount'] = $amount;
+        $params['order_sn'] = $order_sn;
+        $params['notifyurl'] = config::NOTIFY_URL;
+        return $params;
+    }
+
+    public function add($card_no, $card_type, $amount, $params,&$net_errno = 0)
+    {
+        $params = $this->req_params($card_no, $amount, $params['order_sn']);
+        $sign = $this->sign($params);
+        $params['sign'] = $sign;
+
+        $resp = http_request(config::ORDER_URL, $params , 'POST' , false , [] , $net_errno);
+
+        if (empty($resp)) {
+            return [false, '系统错误', true];
+        }
+        else
+        {
+            Log::record($resp, Log::DEBUG);
+            $resp = json_decode($resp ,true);
+            if (empty($resp)) {
+                return [false, '系统错误', true];
+            } elseif ($resp['code'] === 200) {
+                return [true, '', false];
+            } else {
+                return [false, $resp['message'], false];
+            }
+        }
+    }
+
+    public function query($refill_info)
+    {
+        $params['act'] = 'refill';
+        $params['op'] = 'query';
+        $params['mchid'] = config::MCH_ID;
+        $params['order_sn'] = $refill_info['order_sn'];
+        $params['sign'] = $this->sign($params);
+
+        $resp = http_request(config::ORDER_URL, $params , 'POST');
+        if (empty($resp)) {
+            return [false, '系统错误'];
+        }
+        else
+        {
+            Log::record($resp, Log::DEBUG);
+            $resp = json_decode($resp, true);
+            if (empty($resp)) {
+                return [false, '系统错误'];
+            }
+            elseif ($resp['code'] === 200)
+            {
+                $data = $resp['datas'];
+                if ($data['order_state'] == '40') {
+                    $save['ch_trade_no'] = $data['trade_no'];
+                    $save['official_sn'] = strtolower($resp['official_sn']) == 'null' ? '' : $resp['official_sn'];
+                    Model('refill_order')->edit($refill_info['order_id'], $save);
+                    $order_state = ORDER_STATE_SUCCESS;
+                } elseif ($data['order_state'] === '0') {
+                    Model('refill_order')->edit($refill_info['order_id'], ['ch_trade_no' => $data['trade_no']]);
+                    $order_state = ORDER_STATE_CANCEL;
+                } elseif (in_array($data['order_state'], ['10', '20', '30', '50'], true)) {
+                    $order_state = ORDER_STATE_SEND;
+                } else {
+                    return [false, $resp['message']];
+                }
+                return [true, $order_state];
+            }
+            elseif ($resp['code'] === 202 && (time() - $refill_info['commit_time'] >= 600))
+            {
+                return [true, ORDER_STATE_NOEXIST];
+            }
+            else
+            {
+                return [false, $resp['message']];
+            }
+        }
+    }
+
+    public function balance()
+    {
+        $params['act'] = 'refill';
+        $params['op'] = 'balance';
+        $params['mchid'] = config::MCH_ID;
+        $params['sign'] = $this->sign($params);
+
+        $resp = http_request(config::ORDER_URL, $params , 'POST');
+
+        if (empty($resp)) {
+            return [false, '系统错误'];
+        }
+        else
+        {
+            Log::record($resp, Log::DEBUG);
+            $resp = json_decode($resp, true);
+            if (empty($resp)) {
+                return [false, '系统错误'];
+            } elseif ($resp['code'] === 200) {
+                return [true, $resp['datas']['balance']];
+            } else {
+                return [false, $resp['message']];
+            }
+        }
+    }
+
+    protected function check_empty($value)
+    {
+        if (!isset($value))
+            return true;
+        if ($value === null)
+            return true;
+        if (trim($value) === "")
+            return true;
+
+        return false;
+    }
+
+    private function sign($params)
+    {
+        ksort($params);
+
+        $body = "";
+        $i = 0;
+        foreach ($params as $k => $v) {
+            if (false === $this->check_empty($v) && "@" != substr($v, 0, 1)) {
+                if ($i == 0) {
+                    $body .= "{$k}" . "=" . urlencode($v);
+                } else {
+                    $body .= "&" . "{$k}" . "=" . urlencode($v);
+                }
+                $i++;
+            }
+        }
+
+        $body .= "&key=".config::KEY;
+
+        return md5($body);
+    }
+}

+ 7 - 0
helper/refill/api/zy/blueciyuefeiy/api.txt

@@ -0,0 +1,7 @@
+https://admin.xyzshops.cn/merchant/#/login
+
+blueciyuefeiy
+hjx_yu3c
+
+10425
+7e703e5bd1a31c80d57c1c4dec1412b9

+ 13 - 0
helper/refill/api/zy/blueciyuefeiy/config.php

@@ -0,0 +1,13 @@
+<?php
+
+namespace refill\blueciyuefeiy;
+
+class config
+{
+    const ORDER_URL = 'https://www.xyzshops.cn/mobile/index.php';
+
+    const MCH_ID = 10425;
+    const KEY = '7e703e5bd1a31c80d57c1c4dec1412b9';
+    const NOTIFY_URL = BASE_SITE_URL . "/mobile/callback/refill_blueciyuefeiy.php";
+
+}

+ 76 - 0
helper/refill/api/zy/huanxishuqy/RefillCallBack.php

@@ -0,0 +1,76 @@
+<?php
+namespace refill\huanxishuqy;
+
+require_once(BASE_HELPER_RAPI_PATH . '/huanxishuqy/config.php');
+use refill;
+class RefillCallBack implements refill\IRefillCallBack
+{
+    public function verify($params): bool
+    {
+        $input = $params;
+        unset($input['sign']);
+        $sign = $this->sign($input);
+        if ($params['sign'] == $sign) {
+            return true;
+        } else {
+            return false;
+        }
+    }
+
+    protected function check_empty($value)
+    {
+        if (!isset($value))
+            return true;
+        if ($value === null)
+            return true;
+        if (trim($value) === "")
+            return true;
+
+        return false;
+    }
+
+    private function sign($params)
+    {
+        ksort($params);
+
+        $body = "";
+        $i = 0;
+        foreach ($params as $k => $v) {
+            if (false === $this->check_empty($v) && "@" != substr($v, 0, 1)) {
+                if ($i == 0) {
+                    $body .= "{$k}" . "=" . urlencode($v);
+                } else {
+                    $body .= "&" . "{$k}" . "=" . urlencode($v);
+                }
+                $i++;
+            }
+        }
+
+        $body .= "&key=".config::KEY;
+        return md5($body);
+    }
+
+    public function notify($params)
+    {
+        $status = $params['state'];
+        $order_sn = $params['order_sn'];
+        $order_info = Model('vr_order')->getOrderInfo(['order_sn' => $order_sn]);
+        if (empty($order_info)) {
+            return [false, false, false,false];
+        }
+        $order_id = $order_info['order_id'];
+        if ($status === 'SUCCESS') {
+            $data['ch_trade_no'] = $params['trade_no'];
+            $data['official_sn'] = strtolower($params['official_sn']) == 'null' ? '' : $params['official_sn'];
+            Model('refill_order')->edit($order_id, $data);
+            return [$order_id, true, false,true];
+        }
+        elseif ($status === 'CANCEL') {
+            Model('refill_order')->edit($order_id, ['ch_trade_no' => $params['trade_no']]);
+            return [$order_id, false, true,true];
+        }
+        else {
+            return [$order_id, false, false,false];
+        }
+    }
+}

+ 176 - 0
helper/refill/api/zy/huanxishuqy/RefillPhone.php

@@ -0,0 +1,176 @@
+<?php
+
+namespace refill\huanxishuqy;
+
+require_once(BASE_HELPER_RAPI_PATH . '/huanxishuqy/config.php');
+
+use refill;
+use Log;
+
+class RefillPhone extends refill\IRefillThird
+{
+    public function __construct($cfgs)
+    {
+        parent::__construct($cfgs);
+    }
+
+    private function req_params($phone, string $order_sn, $product_code)
+    {
+        $params['act'] = 'refill';
+        $params['op'] = 'add_third';
+        $params['product_code'] = $product_code;
+        $params['mchid'] = config::MCH_ID;
+        $params['cardno'] = $phone;
+        $params['order_sn'] = $order_sn;
+        $params['quantity'] = 1;
+        $params['notifyurl'] = config::NOTIFY_URL;
+        return $params;
+    }
+
+    private function getProductCode($goods_id, $sys_pcode)
+    {
+        $thrid_refill = Model('thrid_refill');
+        $product = $thrid_refill->getProviderProduct($this->mStoreID,$goods_id,$sys_pcode);
+        if (empty($product)) {
+            return false;
+        } else {
+            return $product['channel_code'];
+        }
+    }
+
+    public function add($card_no, $card_type, $amount, $params,&$net_errno = 0)
+    {
+        $goods_id = intval($params['goods_id']);
+        $product_code = $this->getProductCode($goods_id, $params['product_code']);
+
+        $params = $this->req_params($card_no, $params['order_sn'], $product_code);
+        $sign = $this->sign($params);
+        $params['sign'] = $sign;
+
+        $resp = http_request(config::ORDER_URL, $params , 'POST' , false , [] , $net_errno);
+
+        if (empty($resp)) {
+            return [false, '系统错误', true];
+        }
+        else
+        {
+            Log::record($resp, Log::DEBUG);
+            $resp = json_decode($resp ,true);
+            if (empty($resp)) {
+                return [false, '系统错误', true];
+            } elseif ($resp['code'] === 200) {
+                return [true, '', false];
+            } else {
+                return [false, $resp['message'], false];
+            }
+        }
+    }
+
+    public function query($refill_info)
+    {
+        $params['act'] = 'refill';
+        $params['op'] = 'query';
+        $params['mchid'] = config::MCH_ID;
+        $params['order_sn'] = $refill_info['order_sn'];
+        $params['sign'] = $this->sign($params);
+
+        $resp = http_request(config::ORDER_URL, $params , 'POST');
+        if (empty($resp)) {
+            return [false, '系统错误'];
+        }
+        else
+        {
+            Log::record($resp, Log::DEBUG);
+            $resp = json_decode($resp, true);
+            if (empty($resp)) {
+                return [false, '系统错误'];
+            }
+            elseif ($resp['code'] === 200)
+            {
+                $data = $resp['datas'];
+                if ($data['order_state'] == '40') {
+                    $save['ch_trade_no'] = $data['trade_no'];
+                    $save['official_sn'] = strtolower($resp['official_sn']) == 'null' ? '' : $resp['official_sn'];
+                    Model('refill_order')->edit($refill_info['order_id'], $save);
+                    $order_state = ORDER_STATE_SUCCESS;
+                } elseif ($data['order_state'] === '0') {
+                    Model('refill_order')->edit($refill_info['order_id'], ['ch_trade_no' => $data['trade_no']]);
+                    $order_state = ORDER_STATE_CANCEL;
+                } elseif (in_array($data['order_state'], ['10', '20', '30', '50'], true)) {
+                    $order_state = ORDER_STATE_SEND;
+                } else {
+                    return [false, $resp['message']];
+                }
+                return [true, $order_state];
+            }
+            elseif ($resp['code'] === 202 && (time() - $refill_info['commit_time'] >= 600))
+            {
+                return [true, ORDER_STATE_NOEXIST];
+            }
+            else
+            {
+                return [false, $resp['message']];
+            }
+        }
+    }
+
+    public function balance()
+    {
+        $params['act'] = 'refill';
+        $params['op'] = 'balance';
+        $params['mchid'] = config::MCH_ID;
+        $params['sign'] = $this->sign($params);
+
+        $resp = http_request(config::ORDER_URL, $params , 'POST');
+
+        if (empty($resp)) {
+            return [false, '系统错误'];
+        }
+        else
+        {
+            Log::record($resp, Log::DEBUG);
+            $resp = json_decode($resp, true);
+            if (empty($resp)) {
+                return [false, '系统错误'];
+            } elseif ($resp['code'] === 200) {
+                return [true, $resp['datas']['balance']];
+            } else {
+                return [false, $resp['message']];
+            }
+        }
+    }
+
+    protected function check_empty($value)
+    {
+        if (!isset($value))
+            return true;
+        if ($value === null)
+            return true;
+        if (trim($value) === "")
+            return true;
+
+        return false;
+    }
+
+    private function sign($params)
+    {
+        ksort($params);
+
+        $body = "";
+        $i = 0;
+        foreach ($params as $k => $v) {
+            if (false === $this->check_empty($v) && "@" != substr($v, 0, 1)) {
+                if ($i == 0) {
+                    $body .= "{$k}" . "=" . urlencode($v);
+                } else {
+                    $body .= "&" . "{$k}" . "=" . urlencode($v);
+                }
+                $i++;
+            }
+        }
+
+        $body .= "&key=".config::KEY;
+
+        return md5($body);
+    }
+}

+ 7 - 0
helper/refill/api/zy/huanxishuqy/api.txt

@@ -0,0 +1,7 @@
+https://admin.xyzshops.cn/merchant/#/login
+
+huanxishuqy
+xy3_yl2_ni
+
+10384
+4b0b005dd655fb89c776ec6ce3819179

+ 13 - 0
helper/refill/api/zy/huanxishuqy/config.php

@@ -0,0 +1,13 @@
+<?php
+
+namespace refill\huanxishuqy;
+
+class config
+{
+    const ORDER_URL = 'https://www.xyzshops.cn/mobile/index.php';
+
+    const MCH_ID = 10384;
+    const KEY = '4b0b005dd655fb89c776ec6ce3819179';
+    const NOTIFY_URL = BASE_SITE_URL . "/mobile/callback/refill_huanxishuqy.php";
+
+}

+ 76 - 0
helper/refill/api/zy/momokafei/RefillCallBack.php

@@ -0,0 +1,76 @@
+<?php
+namespace refill\momokafei;
+
+require_once(BASE_HELPER_RAPI_PATH . '/momokafei/config.php');
+use refill;
+class RefillCallBack implements refill\IRefillCallBack
+{
+    public function verify($params): bool
+    {
+        $input = $params;
+        unset($input['sign']);
+        $sign = $this->sign($input);
+        if ($params['sign'] == $sign) {
+            return true;
+        } else {
+            return false;
+        }
+    }
+
+    protected function check_empty($value)
+    {
+        if (!isset($value))
+            return true;
+        if ($value === null)
+            return true;
+        if (trim($value) === "")
+            return true;
+
+        return false;
+    }
+
+    private function sign($params)
+    {
+        ksort($params);
+
+        $body = "";
+        $i = 0;
+        foreach ($params as $k => $v) {
+            if (false === $this->check_empty($v) && "@" != substr($v, 0, 1)) {
+                if ($i == 0) {
+                    $body .= "{$k}" . "=" . urlencode($v);
+                } else {
+                    $body .= "&" . "{$k}" . "=" . urlencode($v);
+                }
+                $i++;
+            }
+        }
+
+        $body .= "&key=".config::KEY;
+        return md5($body);
+    }
+
+    public function notify($params)
+    {
+        $status = $params['state'];
+        $order_sn = $params['order_sn'];
+        $order_info = Model('vr_order')->getOrderInfo(['order_sn' => $order_sn]);
+        if (empty($order_info)) {
+            return [false, false, false,false];
+        }
+        $order_id = $order_info['order_id'];
+        if ($status === 'SUCCESS') {
+            $data['ch_trade_no'] = $params['trade_no'];
+            $data['official_sn'] = strtolower($params['official_sn']) == 'null' ? '' : $params['official_sn'];
+            Model('refill_order')->edit($order_id, $data);
+            return [$order_id, true, false,true];
+        }
+        elseif ($status === 'CANCEL') {
+            Model('refill_order')->edit($order_id, ['ch_trade_no' => $params['trade_no']]);
+            return [$order_id, false, true,true];
+        }
+        else {
+            return [$order_id, false, false,false];
+        }
+    }
+}

+ 161 - 0
helper/refill/api/zy/momokafei/RefillPhone.php

@@ -0,0 +1,161 @@
+<?php
+
+namespace refill\momokafei;
+
+require_once(BASE_HELPER_RAPI_PATH . '/momokafei/config.php');
+
+use refill;
+use Log;
+
+class RefillPhone extends refill\IRefillPhone
+{
+    public function __construct($cfgs)
+    {
+        parent::__construct($cfgs);
+    }
+
+    private function req_params(int $phone, int $amount, string $order_sn)
+    {
+        $params['act'] = 'refill';
+        $params['op'] = 'add';
+        $params['mchid'] = config::MCH_ID;
+        $params['cardno'] = $phone;
+        $params['amount'] = $amount;
+        $params['order_sn'] = $order_sn;
+        $params['notifyurl'] = config::NOTIFY_URL;
+        return $params;
+    }
+
+    public function add($card_no, $card_type, $amount, $params,&$net_errno = 0)
+    {
+        $params = $this->req_params($card_no, $amount, $params['order_sn']);
+        $sign = $this->sign($params);
+        $params['sign'] = $sign;
+
+        $resp = http_request(config::ORDER_URL, $params , 'POST' , false , [] , $net_errno);
+
+        if (empty($resp)) {
+            return [false, '系统错误', true];
+        }
+        else
+        {
+            Log::record($resp, Log::DEBUG);
+            $resp = json_decode($resp ,true);
+            if (empty($resp)) {
+                return [false, '系统错误', true];
+            } elseif ($resp['code'] === 200) {
+                return [true, '', false];
+            } else {
+                return [false, $resp['message'], false];
+            }
+        }
+    }
+
+    public function query($refill_info)
+    {
+        $params['act'] = 'refill';
+        $params['op'] = 'query';
+        $params['mchid'] = config::MCH_ID;
+        $params['order_sn'] = $refill_info['order_sn'];
+        $params['sign'] = $this->sign($params);
+
+        $resp = http_request(config::ORDER_URL, $params , 'POST');
+        if (empty($resp)) {
+            return [false, '系统错误'];
+        }
+        else
+        {
+            Log::record($resp, Log::DEBUG);
+            $resp = json_decode($resp, true);
+            if (empty($resp)) {
+                return [false, '系统错误'];
+            }
+            elseif ($resp['code'] === 200)
+            {
+                $data = $resp['datas'];
+                if ($data['order_state'] == '40') {
+                    $save['ch_trade_no'] = $data['trade_no'];
+                    $save['official_sn'] = strtolower($resp['official_sn']) == 'null' ? '' : $resp['official_sn'];
+                    Model('refill_order')->edit($refill_info['order_id'], $save);
+                    $order_state = ORDER_STATE_SUCCESS;
+                } elseif ($data['order_state'] === '0') {
+                    Model('refill_order')->edit($refill_info['order_id'], ['ch_trade_no' => $data['trade_no']]);
+                    $order_state = ORDER_STATE_CANCEL;
+                } elseif (in_array($data['order_state'], ['10', '20', '30', '50'], true)) {
+                    $order_state = ORDER_STATE_SEND;
+                } else {
+                    return [false, $resp['message']];
+                }
+                return [true, $order_state];
+            }
+            elseif ($resp['code'] === 202 && (time() - $refill_info['commit_time'] >= 600))
+            {
+                return [true, ORDER_STATE_NOEXIST];
+            }
+            else
+            {
+                return [false, $resp['message']];
+            }
+        }
+    }
+
+    public function balance()
+    {
+        $params['act'] = 'refill';
+        $params['op'] = 'balance';
+        $params['mchid'] = config::MCH_ID;
+        $params['sign'] = $this->sign($params);
+
+        $resp = http_request(config::ORDER_URL, $params , 'POST');
+
+        if (empty($resp)) {
+            return [false, '系统错误'];
+        }
+        else
+        {
+            Log::record($resp, Log::DEBUG);
+            $resp = json_decode($resp, true);
+            if (empty($resp)) {
+                return [false, '系统错误'];
+            } elseif ($resp['code'] === 200) {
+                return [true, $resp['datas']['balance']];
+            } else {
+                return [false, $resp['message']];
+            }
+        }
+    }
+
+    protected function check_empty($value)
+    {
+        if (!isset($value))
+            return true;
+        if ($value === null)
+            return true;
+        if (trim($value) === "")
+            return true;
+
+        return false;
+    }
+
+    private function sign($params)
+    {
+        ksort($params);
+
+        $body = "";
+        $i = 0;
+        foreach ($params as $k => $v) {
+            if (false === $this->check_empty($v) && "@" != substr($v, 0, 1)) {
+                if ($i == 0) {
+                    $body .= "{$k}" . "=" . urlencode($v);
+                } else {
+                    $body .= "&" . "{$k}" . "=" . urlencode($v);
+                }
+                $i++;
+            }
+        }
+
+        $body .= "&key=".config::KEY;
+
+        return md5($body);
+    }
+}

+ 7 - 0
helper/refill/api/zy/momokafei/api.txt

@@ -0,0 +1,7 @@
+https://admin.xyzshops.cn/merchant/#/login
+
+momokafei
+jhx_qqq
+
+10431
+e0316f66f3027e261c7d8641ac5e2c5c

+ 13 - 0
helper/refill/api/zy/momokafei/config.php

@@ -0,0 +1,13 @@
+<?php
+
+namespace refill\momokafei;
+
+class config
+{
+    const ORDER_URL = 'https://www.xyzshops.cn/mobile/index.php';
+
+    const MCH_ID = 10431;
+    const KEY = 'e0316f66f3027e261c7d8641ac5e2c5c';
+    const NOTIFY_URL = BASE_SITE_URL . "/mobile/callback/refill_momokafei.php";
+
+}

+ 76 - 0
helper/refill/api/zy/qudaiwafeiy/RefillCallBack.php

@@ -0,0 +1,76 @@
+<?php
+namespace refill\qudaiwafeiy;
+
+require_once(BASE_HELPER_RAPI_PATH . '/qudaiwafeiy/config.php');
+use refill;
+class RefillCallBack implements refill\IRefillCallBack
+{
+    public function verify($params): bool
+    {
+        $input = $params;
+        unset($input['sign']);
+        $sign = $this->sign($input);
+        if ($params['sign'] == $sign) {
+            return true;
+        } else {
+            return false;
+        }
+    }
+
+    protected function check_empty($value)
+    {
+        if (!isset($value))
+            return true;
+        if ($value === null)
+            return true;
+        if (trim($value) === "")
+            return true;
+
+        return false;
+    }
+
+    private function sign($params)
+    {
+        ksort($params);
+
+        $body = "";
+        $i = 0;
+        foreach ($params as $k => $v) {
+            if (false === $this->check_empty($v) && "@" != substr($v, 0, 1)) {
+                if ($i == 0) {
+                    $body .= "{$k}" . "=" . urlencode($v);
+                } else {
+                    $body .= "&" . "{$k}" . "=" . urlencode($v);
+                }
+                $i++;
+            }
+        }
+
+        $body .= "&key=".config::KEY;
+        return md5($body);
+    }
+
+    public function notify($params)
+    {
+        $status = $params['state'];
+        $order_sn = $params['order_sn'];
+        $order_info = Model('vr_order')->getOrderInfo(['order_sn' => $order_sn]);
+        if (empty($order_info)) {
+            return [false, false, false,false];
+        }
+        $order_id = $order_info['order_id'];
+        if ($status === 'SUCCESS') {
+            $data['ch_trade_no'] = $params['trade_no'];
+            $data['official_sn'] = strtolower($params['official_sn']) == 'null' ? '' : $params['official_sn'];
+            Model('refill_order')->edit($order_id, $data);
+            return [$order_id, true, false,true];
+        }
+        elseif ($status === 'CANCEL') {
+            Model('refill_order')->edit($order_id, ['ch_trade_no' => $params['trade_no']]);
+            return [$order_id, false, true,true];
+        }
+        else {
+            return [$order_id, false, false,false];
+        }
+    }
+}

+ 161 - 0
helper/refill/api/zy/qudaiwafeiy/RefillPhone.php

@@ -0,0 +1,161 @@
+<?php
+
+namespace refill\qudaiwafeiy;
+
+require_once(BASE_HELPER_RAPI_PATH . '/qudaiwafeiy/config.php');
+
+use refill;
+use Log;
+
+class RefillPhone extends refill\IRefillPhone
+{
+    public function __construct($cfgs)
+    {
+        parent::__construct($cfgs);
+    }
+
+    private function req_params(int $phone, int $amount, string $order_sn)
+    {
+        $params['act'] = 'refill';
+        $params['op'] = 'add';
+        $params['mchid'] = config::MCH_ID;
+        $params['cardno'] = $phone;
+        $params['amount'] = $amount;
+        $params['order_sn'] = $order_sn;
+        $params['notifyurl'] = config::NOTIFY_URL;
+        return $params;
+    }
+
+    public function add($card_no, $card_type, $amount, $params,&$net_errno = 0)
+    {
+        $params = $this->req_params($card_no, $amount, $params['order_sn']);
+        $sign = $this->sign($params);
+        $params['sign'] = $sign;
+
+        $resp = http_request(config::ORDER_URL, $params , 'POST' , false , [] , $net_errno);
+
+        if (empty($resp)) {
+            return [false, '系统错误', true];
+        }
+        else
+        {
+            Log::record($resp, Log::DEBUG);
+            $resp = json_decode($resp ,true);
+            if (empty($resp)) {
+                return [false, '系统错误', true];
+            } elseif ($resp['code'] === 200) {
+                return [true, '', false];
+            } else {
+                return [false, $resp['message'], false];
+            }
+        }
+    }
+
+    public function query($refill_info)
+    {
+        $params['act'] = 'refill';
+        $params['op'] = 'query';
+        $params['mchid'] = config::MCH_ID;
+        $params['order_sn'] = $refill_info['order_sn'];
+        $params['sign'] = $this->sign($params);
+
+        $resp = http_request(config::ORDER_URL, $params , 'POST');
+        if (empty($resp)) {
+            return [false, '系统错误'];
+        }
+        else
+        {
+            Log::record($resp, Log::DEBUG);
+            $resp = json_decode($resp, true);
+            if (empty($resp)) {
+                return [false, '系统错误'];
+            }
+            elseif ($resp['code'] === 200)
+            {
+                $data = $resp['datas'];
+                if ($data['order_state'] == '40') {
+                    $save['ch_trade_no'] = $data['trade_no'];
+                    $save['official_sn'] = strtolower($resp['official_sn']) == 'null' ? '' : $resp['official_sn'];
+                    Model('refill_order')->edit($refill_info['order_id'], $save);
+                    $order_state = ORDER_STATE_SUCCESS;
+                } elseif ($data['order_state'] === '0') {
+                    Model('refill_order')->edit($refill_info['order_id'], ['ch_trade_no' => $data['trade_no']]);
+                    $order_state = ORDER_STATE_CANCEL;
+                } elseif (in_array($data['order_state'], ['10', '20', '30', '50'], true)) {
+                    $order_state = ORDER_STATE_SEND;
+                } else {
+                    return [false, $resp['message']];
+                }
+                return [true, $order_state];
+            }
+            elseif ($resp['code'] === 202 && (time() - $refill_info['commit_time'] >= 600))
+            {
+                return [true, ORDER_STATE_NOEXIST];
+            }
+            else
+            {
+                return [false, $resp['message']];
+            }
+        }
+    }
+
+    public function balance()
+    {
+        $params['act'] = 'refill';
+        $params['op'] = 'balance';
+        $params['mchid'] = config::MCH_ID;
+        $params['sign'] = $this->sign($params);
+
+        $resp = http_request(config::ORDER_URL, $params , 'POST');
+
+        if (empty($resp)) {
+            return [false, '系统错误'];
+        }
+        else
+        {
+            Log::record($resp, Log::DEBUG);
+            $resp = json_decode($resp, true);
+            if (empty($resp)) {
+                return [false, '系统错误'];
+            } elseif ($resp['code'] === 200) {
+                return [true, $resp['datas']['balance']];
+            } else {
+                return [false, $resp['message']];
+            }
+        }
+    }
+
+    protected function check_empty($value)
+    {
+        if (!isset($value))
+            return true;
+        if ($value === null)
+            return true;
+        if (trim($value) === "")
+            return true;
+
+        return false;
+    }
+
+    private function sign($params)
+    {
+        ksort($params);
+
+        $body = "";
+        $i = 0;
+        foreach ($params as $k => $v) {
+            if (false === $this->check_empty($v) && "@" != substr($v, 0, 1)) {
+                if ($i == 0) {
+                    $body .= "{$k}" . "=" . urlencode($v);
+                } else {
+                    $body .= "&" . "{$k}" . "=" . urlencode($v);
+                }
+                $i++;
+            }
+        }
+
+        $body .= "&key=".config::KEY;
+
+        return md5($body);
+    }
+}

+ 7 - 0
helper/refill/api/zy/qudaiwafeiy/api.txt

@@ -0,0 +1,7 @@
+https://admin.xyzshops.cn/merchant/#/login
+
+qudaiwafeiy
+xhkdf_78xcgv
+
+10432
+96b8e456e5f91f39c7a9335dd7d94314

+ 13 - 0
helper/refill/api/zy/qudaiwafeiy/config.php

@@ -0,0 +1,13 @@
+<?php
+
+namespace refill\qudaiwafeiy;
+
+class config
+{
+    const ORDER_URL = 'https://www.xyzshops.cn/mobile/index.php';
+
+    const MCH_ID = 10432;
+    const KEY = '96b8e456e5f91f39c7a9335dd7d94314';
+    const NOTIFY_URL = BASE_SITE_URL . "/mobile/callback/refill_qudaiwafeiy.php";
+
+}

+ 76 - 0
helper/refill/api/zy/wangxinnoy/RefillCallBack.php

@@ -0,0 +1,76 @@
+<?php
+namespace refill\wangxinnoy;
+
+require_once(BASE_HELPER_RAPI_PATH . '/wangxinnoy/config.php');
+use refill;
+class RefillCallBack implements refill\IRefillCallBack
+{
+    public function verify($params): bool
+    {
+        $input = $params;
+        unset($input['sign']);
+        $sign = $this->sign($input);
+        if ($params['sign'] == $sign) {
+            return true;
+        } else {
+            return false;
+        }
+    }
+
+    protected function check_empty($value)
+    {
+        if (!isset($value))
+            return true;
+        if ($value === null)
+            return true;
+        if (trim($value) === "")
+            return true;
+
+        return false;
+    }
+
+    private function sign($params)
+    {
+        ksort($params);
+
+        $body = "";
+        $i = 0;
+        foreach ($params as $k => $v) {
+            if (false === $this->check_empty($v) && "@" != substr($v, 0, 1)) {
+                if ($i == 0) {
+                    $body .= "{$k}" . "=" . urlencode($v);
+                } else {
+                    $body .= "&" . "{$k}" . "=" . urlencode($v);
+                }
+                $i++;
+            }
+        }
+
+        $body .= "&key=".config::KEY;
+        return md5($body);
+    }
+
+    public function notify($params)
+    {
+        $status = $params['state'];
+        $order_sn = $params['order_sn'];
+        $order_info = Model('vr_order')->getOrderInfo(['order_sn' => $order_sn]);
+        if (empty($order_info)) {
+            return [false, false, false,false];
+        }
+        $order_id = $order_info['order_id'];
+        if ($status === 'SUCCESS') {
+            $data['ch_trade_no'] = $params['trade_no'];
+            $data['official_sn'] = strtolower($params['official_sn']) == 'null' ? '' : $params['official_sn'];
+            Model('refill_order')->edit($order_id, $data);
+            return [$order_id, true, false,true];
+        }
+        elseif ($status === 'CANCEL') {
+            Model('refill_order')->edit($order_id, ['ch_trade_no' => $params['trade_no']]);
+            return [$order_id, false, true,true];
+        }
+        else {
+            return [$order_id, false, false,false];
+        }
+    }
+}

+ 161 - 0
helper/refill/api/zy/wangxinnoy/RefillPhone.php

@@ -0,0 +1,161 @@
+<?php
+
+namespace refill\wangxinnoy;
+
+require_once(BASE_HELPER_RAPI_PATH . '/wangxinnoy/config.php');
+
+use refill;
+use Log;
+
+class RefillPhone extends refill\IRefillPhone
+{
+    public function __construct($cfgs)
+    {
+        parent::__construct($cfgs);
+    }
+
+    private function req_params(int $phone, int $amount, string $order_sn)
+    {
+        $params['act'] = 'refill';
+        $params['op'] = 'add';
+        $params['mchid'] = config::MCH_ID;
+        $params['cardno'] = $phone;
+        $params['amount'] = $amount;
+        $params['order_sn'] = $order_sn;
+        $params['notifyurl'] = config::NOTIFY_URL;
+        return $params;
+    }
+
+    public function add($card_no, $card_type, $amount, $params,&$net_errno = 0)
+    {
+        $params = $this->req_params($card_no, $amount, $params['order_sn']);
+        $sign = $this->sign($params);
+        $params['sign'] = $sign;
+
+        $resp = http_request(config::ORDER_URL, $params , 'POST' , false , [] , $net_errno);
+
+        if (empty($resp)) {
+            return [false, '系统错误', true];
+        }
+        else
+        {
+            Log::record($resp, Log::DEBUG);
+            $resp = json_decode($resp ,true);
+            if (empty($resp)) {
+                return [false, '系统错误', true];
+            } elseif ($resp['code'] === 200) {
+                return [true, '', false];
+            } else {
+                return [false, $resp['message'], false];
+            }
+        }
+    }
+
+    public function query($refill_info)
+    {
+        $params['act'] = 'refill';
+        $params['op'] = 'query';
+        $params['mchid'] = config::MCH_ID;
+        $params['order_sn'] = $refill_info['order_sn'];
+        $params['sign'] = $this->sign($params);
+
+        $resp = http_request(config::ORDER_URL, $params , 'POST');
+        if (empty($resp)) {
+            return [false, '系统错误'];
+        }
+        else
+        {
+            Log::record($resp, Log::DEBUG);
+            $resp = json_decode($resp, true);
+            if (empty($resp)) {
+                return [false, '系统错误'];
+            }
+            elseif ($resp['code'] === 200)
+            {
+                $data = $resp['datas'];
+                if ($data['order_state'] == '40') {
+                    $save['ch_trade_no'] = $data['trade_no'];
+                    $save['official_sn'] = strtolower($resp['official_sn']) == 'null' ? '' : $resp['official_sn'];
+                    Model('refill_order')->edit($refill_info['order_id'], $save);
+                    $order_state = ORDER_STATE_SUCCESS;
+                } elseif ($data['order_state'] === '0') {
+                    Model('refill_order')->edit($refill_info['order_id'], ['ch_trade_no' => $data['trade_no']]);
+                    $order_state = ORDER_STATE_CANCEL;
+                } elseif (in_array($data['order_state'], ['10', '20', '30', '50'], true)) {
+                    $order_state = ORDER_STATE_SEND;
+                } else {
+                    return [false, $resp['message']];
+                }
+                return [true, $order_state];
+            }
+            elseif ($resp['code'] === 202 && (time() - $refill_info['commit_time'] >= 600))
+            {
+                return [true, ORDER_STATE_NOEXIST];
+            }
+            else
+            {
+                return [false, $resp['message']];
+            }
+        }
+    }
+
+    public function balance()
+    {
+        $params['act'] = 'refill';
+        $params['op'] = 'balance';
+        $params['mchid'] = config::MCH_ID;
+        $params['sign'] = $this->sign($params);
+
+        $resp = http_request(config::ORDER_URL, $params , 'POST');
+
+        if (empty($resp)) {
+            return [false, '系统错误'];
+        }
+        else
+        {
+            Log::record($resp, Log::DEBUG);
+            $resp = json_decode($resp, true);
+            if (empty($resp)) {
+                return [false, '系统错误'];
+            } elseif ($resp['code'] === 200) {
+                return [true, $resp['datas']['balance']];
+            } else {
+                return [false, $resp['message']];
+            }
+        }
+    }
+
+    protected function check_empty($value)
+    {
+        if (!isset($value))
+            return true;
+        if ($value === null)
+            return true;
+        if (trim($value) === "")
+            return true;
+
+        return false;
+    }
+
+    private function sign($params)
+    {
+        ksort($params);
+
+        $body = "";
+        $i = 0;
+        foreach ($params as $k => $v) {
+            if (false === $this->check_empty($v) && "@" != substr($v, 0, 1)) {
+                if ($i == 0) {
+                    $body .= "{$k}" . "=" . urlencode($v);
+                } else {
+                    $body .= "&" . "{$k}" . "=" . urlencode($v);
+                }
+                $i++;
+            }
+        }
+
+        $body .= "&key=".config::KEY;
+
+        return md5($body);
+    }
+}

+ 7 - 0
helper/refill/api/zy/wangxinnoy/api.txt

@@ -0,0 +1,7 @@
+https://admin.xyzshops.cn/merchant/#/login
+
+wangxinnoy
+du2k_klj2
+
+10426
+b266c2198063f45d704b41b74e6a0887

+ 13 - 0
helper/refill/api/zy/wangxinnoy/config.php

@@ -0,0 +1,13 @@
+<?php
+
+namespace refill\wangxinnoy;
+
+class config
+{
+    const ORDER_URL = 'https://www.xyzshops.cn/mobile/index.php';
+
+    const MCH_ID = 10426;
+    const KEY = 'b266c2198063f45d704b41b74e6a0887';
+    const NOTIFY_URL = BASE_SITE_URL . "/mobile/callback/refill_wangxinnoy.php";
+
+}

+ 76 - 0
helper/refill/api/zy/yunshanfeiy/RefillCallBack.php

@@ -0,0 +1,76 @@
+<?php
+namespace refill\yunshanfeiy;
+
+require_once(BASE_HELPER_RAPI_PATH . '/yunshanfeiy/config.php');
+use refill;
+class RefillCallBack implements refill\IRefillCallBack
+{
+    public function verify($params): bool
+    {
+        $input = $params;
+        unset($input['sign']);
+        $sign = $this->sign($input);
+        if ($params['sign'] == $sign) {
+            return true;
+        } else {
+            return false;
+        }
+    }
+
+    protected function check_empty($value)
+    {
+        if (!isset($value))
+            return true;
+        if ($value === null)
+            return true;
+        if (trim($value) === "")
+            return true;
+
+        return false;
+    }
+
+    private function sign($params)
+    {
+        ksort($params);
+
+        $body = "";
+        $i = 0;
+        foreach ($params as $k => $v) {
+            if (false === $this->check_empty($v) && "@" != substr($v, 0, 1)) {
+                if ($i == 0) {
+                    $body .= "{$k}" . "=" . urlencode($v);
+                } else {
+                    $body .= "&" . "{$k}" . "=" . urlencode($v);
+                }
+                $i++;
+            }
+        }
+
+        $body .= "&key=".config::KEY;
+        return md5($body);
+    }
+
+    public function notify($params)
+    {
+        $status = $params['state'];
+        $order_sn = $params['order_sn'];
+        $order_info = Model('vr_order')->getOrderInfo(['order_sn' => $order_sn]);
+        if (empty($order_info)) {
+            return [false, false, false,false];
+        }
+        $order_id = $order_info['order_id'];
+        if ($status === 'SUCCESS') {
+            $data['ch_trade_no'] = $params['trade_no'];
+            $data['official_sn'] = strtolower($params['official_sn']) == 'null' ? '' : $params['official_sn'];
+            Model('refill_order')->edit($order_id, $data);
+            return [$order_id, true, false,true];
+        }
+        elseif ($status === 'CANCEL') {
+            Model('refill_order')->edit($order_id, ['ch_trade_no' => $params['trade_no']]);
+            return [$order_id, false, true,true];
+        }
+        else {
+            return [$order_id, false, false,false];
+        }
+    }
+}

+ 161 - 0
helper/refill/api/zy/yunshanfeiy/RefillPhone.php

@@ -0,0 +1,161 @@
+<?php
+
+namespace refill\yunshanfeiy;
+
+require_once(BASE_HELPER_RAPI_PATH . '/yunshanfeiy/config.php');
+
+use refill;
+use Log;
+
+class RefillPhone extends refill\IRefillPhone
+{
+    public function __construct($cfgs)
+    {
+        parent::__construct($cfgs);
+    }
+
+    private function req_params(int $phone, int $amount, string $order_sn)
+    {
+        $params['act'] = 'refill';
+        $params['op'] = 'add';
+        $params['mchid'] = config::MCH_ID;
+        $params['cardno'] = $phone;
+        $params['amount'] = $amount;
+        $params['order_sn'] = $order_sn;
+        $params['notifyurl'] = config::NOTIFY_URL;
+        return $params;
+    }
+
+    public function add($card_no, $card_type, $amount, $params,&$net_errno = 0)
+    {
+        $params = $this->req_params($card_no, $amount, $params['order_sn']);
+        $sign = $this->sign($params);
+        $params['sign'] = $sign;
+
+        $resp = http_request(config::ORDER_URL, $params , 'POST' , false , [] , $net_errno);
+
+        if (empty($resp)) {
+            return [false, '系统错误', true];
+        }
+        else
+        {
+            Log::record($resp, Log::DEBUG);
+            $resp = json_decode($resp ,true);
+            if (empty($resp)) {
+                return [false, '系统错误', true];
+            } elseif ($resp['code'] === 200) {
+                return [true, '', false];
+            } else {
+                return [false, $resp['message'], false];
+            }
+        }
+    }
+
+    public function query($refill_info)
+    {
+        $params['act'] = 'refill';
+        $params['op'] = 'query';
+        $params['mchid'] = config::MCH_ID;
+        $params['order_sn'] = $refill_info['order_sn'];
+        $params['sign'] = $this->sign($params);
+
+        $resp = http_request(config::ORDER_URL, $params , 'POST');
+        if (empty($resp)) {
+            return [false, '系统错误'];
+        }
+        else
+        {
+            Log::record($resp, Log::DEBUG);
+            $resp = json_decode($resp, true);
+            if (empty($resp)) {
+                return [false, '系统错误'];
+            }
+            elseif ($resp['code'] === 200)
+            {
+                $data = $resp['datas'];
+                if ($data['order_state'] == '40') {
+                    $save['ch_trade_no'] = $data['trade_no'];
+                    $save['official_sn'] = strtolower($resp['official_sn']) == 'null' ? '' : $resp['official_sn'];
+                    Model('refill_order')->edit($refill_info['order_id'], $save);
+                    $order_state = ORDER_STATE_SUCCESS;
+                } elseif ($data['order_state'] === '0') {
+                    Model('refill_order')->edit($refill_info['order_id'], ['ch_trade_no' => $data['trade_no']]);
+                    $order_state = ORDER_STATE_CANCEL;
+                } elseif (in_array($data['order_state'], ['10', '20', '30', '50'], true)) {
+                    $order_state = ORDER_STATE_SEND;
+                } else {
+                    return [false, $resp['message']];
+                }
+                return [true, $order_state];
+            }
+            elseif ($resp['code'] === 202 && (time() - $refill_info['commit_time'] >= 600))
+            {
+                return [true, ORDER_STATE_NOEXIST];
+            }
+            else
+            {
+                return [false, $resp['message']];
+            }
+        }
+    }
+
+    public function balance()
+    {
+        $params['act'] = 'refill';
+        $params['op'] = 'balance';
+        $params['mchid'] = config::MCH_ID;
+        $params['sign'] = $this->sign($params);
+
+        $resp = http_request(config::ORDER_URL, $params , 'POST');
+
+        if (empty($resp)) {
+            return [false, '系统错误'];
+        }
+        else
+        {
+            Log::record($resp, Log::DEBUG);
+            $resp = json_decode($resp, true);
+            if (empty($resp)) {
+                return [false, '系统错误'];
+            } elseif ($resp['code'] === 200) {
+                return [true, $resp['datas']['balance']];
+            } else {
+                return [false, $resp['message']];
+            }
+        }
+    }
+
+    protected function check_empty($value)
+    {
+        if (!isset($value))
+            return true;
+        if ($value === null)
+            return true;
+        if (trim($value) === "")
+            return true;
+
+        return false;
+    }
+
+    private function sign($params)
+    {
+        ksort($params);
+
+        $body = "";
+        $i = 0;
+        foreach ($params as $k => $v) {
+            if (false === $this->check_empty($v) && "@" != substr($v, 0, 1)) {
+                if ($i == 0) {
+                    $body .= "{$k}" . "=" . urlencode($v);
+                } else {
+                    $body .= "&" . "{$k}" . "=" . urlencode($v);
+                }
+                $i++;
+            }
+        }
+
+        $body .= "&key=".config::KEY;
+
+        return md5($body);
+    }
+}

+ 7 - 0
helper/refill/api/zy/yunshanfeiy/api.txt

@@ -0,0 +1,7 @@
+https://admin.xyzshops.cn/merchant/#/login
+
+yunshanfeiy
+jklop34_chlxi2
+
+10433
+56f8bec2c35e188299bc18c6b978d6b4

+ 13 - 0
helper/refill/api/zy/yunshanfeiy/config.php

@@ -0,0 +1,13 @@
+<?php
+
+namespace refill\yunshanfeiy;
+
+class config
+{
+    const ORDER_URL = 'https://www.xyzshops.cn/mobile/index.php';
+
+    const MCH_ID = 10433;
+    const KEY = '56f8bec2c35e188299bc18c6b978d6b4';
+    const NOTIFY_URL = BASE_SITE_URL . "/mobile/callback/refill_yunshanfeiy.php";
+
+}

+ 1 - 1
helper/refill/policy/PolicyUtil.php

@@ -4,7 +4,7 @@ namespace refill;
 
 class PolicyUtil
 {
-    private const MixedQuality = [Quality::DefSuccess, Quality::NormalCardkey, Quality::NormalQuick,Quality::NormalQuickCardkey];
+    private const MixedQuality = [Quality::DefSuccess, Quality::NormalCardkey, Quality::NormalQuick, Quality::NormalQuickCardkey, Quality::QuickCardkey];
     public static function mixed_quality($quality) : bool
     {
         if(in_array($quality,PolicyUtil::MixedQuality)) {

+ 2 - 1
helper/refill/policy/mchctl.php

@@ -34,7 +34,8 @@ class mchctl
                 $quality == Quality::NormalQuick ||
                 $quality == Quality::NormalCardkey ||
                 $quality == Quality::SlowSixNormal ||
-                $quality == Quality::NormalQuickCardkey
+                $quality == Quality::NormalQuickCardkey ||
+                $quality == Quality::QuickCardkey
             ) {
             }
             elseif ($quality >= Quality::LowestQuality && $quality <= Quality::HighestQuality) {

+ 2 - 1
helper/refill/policy/quaility.php

@@ -27,7 +27,8 @@ class Quality
     const NormalQuick = 14;
     const SlowSixNormal = 15;
     const NormalCardkey = 16;
-    const NormalQuickCardkey = 17;
+    const NormalQuickCardkey = 17; //1->2->3
+    const QuickCardkey = 18; //2 -> 3
 
     const OilWithoutSN = 1;
     const OilQuick = 2;

+ 2 - 0
helper/refill/policy/xyz/quality_ploy.php

@@ -27,6 +27,7 @@ class quality_ploy extends Quality
             self::SlowSixNormal => ['retry_times' => 65, 'retry_timeout' => 22500, 'per_secs' => 21600],
             self::NormalCardkey => ['retry_times' => 65, 'retry_timeout' => 120, 'per_secs' => 120],
             self::NormalQuickCardkey => ['retry_times' => 65, 'retry_timeout' => 120, 'per_secs' => 120],
+            self::QuickCardkey => ['retry_times' => 65, 'retry_timeout' => 120, 'per_secs' => 120],
 
             self::OilSN_NONE_HAS => ['retry_times' => 65, 'retry_timeout' => 1800, 'per_secs' => 120],
             self::OilSN_HAS_NONE => ['retry_times' => 65, 'retry_timeout' => 1800, 'per_secs' => 120],
@@ -59,6 +60,7 @@ class quality_ploy extends Quality
             self::SlowSixNormal => [self::SlowSix, self::Normal],
             self::NormalCardkey => [self::Normal, self::CardKey],
             self::NormalQuickCardkey => [self::Normal, self::Quick, self::CardKey],
+            self::QuickCardkey => [self::Quick, self::CardKey],
 
             self::OilSN_NONE_HAS => [self::OilWithoutSN, self::OilWithSN],
             self::OilSN_HAS_NONE => [self::OilWithSN, self::OilWithoutSN],

BIN
mch_turn-refill.png


+ 4 - 0
mobile/callback/refill_blueciyuefeiy.php

@@ -0,0 +1,4 @@
+<?php
+
+refill\util::push_notify('blueciyuefeiy',$_POST);
+echo ('SUCCESS');

+ 4 - 0
mobile/callback/refill_huanxishuqy.php

@@ -0,0 +1,4 @@
+<?php
+
+refill\util::push_notify('huanxishuqy',$_POST);
+echo ('SUCCESS');

+ 4 - 0
mobile/callback/refill_momokafei.php

@@ -0,0 +1,4 @@
+<?php
+
+refill\util::push_notify('momokafei',$_POST);
+echo ('SUCCESS');

+ 4 - 0
mobile/callback/refill_qudaibaby.php

@@ -0,0 +1,4 @@
+<?php
+
+refill\util::push_notify('qudaibaby',$_POST);
+echo ('SUCCESS');

+ 4 - 0
mobile/callback/refill_qudaiwafeiy.php

@@ -0,0 +1,4 @@
+<?php
+
+refill\util::push_notify('qudaiwafeiy',$_POST);
+echo ('SUCCESS');

+ 4 - 0
mobile/callback/refill_wangxinnoy.php

@@ -0,0 +1,4 @@
+<?php
+
+refill\util::push_notify('wangxinnoy',$_POST);
+echo ('SUCCESS');

+ 4 - 0
mobile/callback/refill_yunshanfeiy.php

@@ -0,0 +1,4 @@
+<?php
+
+refill\util::push_notify('yunshanfeiy',$_POST);
+echo ('SUCCESS');