Преглед на файлове

Merge branch 'raccount' of 39.97.239.116:gyfl/xyzshop into raccount

stanley-king преди 10 месеца
родител
ревизия
b12193b04f
променени са 59 файла, в които са добавени 1527 реда и са изтрити 100 реда
  1. 3 0
      admin/control/merchant.php
  2. 1 1
      admin/control/refill_detail.php
  3. 11 1
      admin/templates/default/merchant.index.php
  4. 7 0
      admin/templates/default/provider.group.set.php
  5. 26 16
      admin/templates/default/refill.order.batch.php
  6. 4 4
      admin/templates/default/refill.order.index.php
  7. 11 6
      admin/templates/default/refill.order.search.php
  8. 156 38
      data/config/xyz/refill.ini.php
  9. 41 0
      data/config/yl/refill.ini.php
  10. 1 1
      helper/refill/api/xyz/dongyefs/config.php
  11. BIN
      helper/refill/api/xyz/guochuang/20240517_yd_liaoning.png
  12. BIN
      helper/refill/api/xyz/guochuang/20240521_yd_shandong.jpg
  13. BIN
      helper/refill/api/xyz/guochuang/20240522_dx_shanxi.jpg
  14. BIN
      helper/refill/api/xyz/guochuang/20240526_yd_liaoning.jpg
  15. BIN
      helper/refill/api/xyz/guochuang/20240527_yd_shandong.jpg
  16. BIN
      helper/refill/api/xyz/guochuang/20240528_yd_liaoning.png
  17. BIN
      helper/refill/api/xyz/guochuang/20240601_yd_liaoning.jpg
  18. BIN
      helper/refill/api/xyz/guochuang/20240603_yd_liaoning.jpg
  19. BIN
      helper/refill/api/xyz/guochuang/20240607_yd_liaoning.jpg
  20. BIN
      helper/refill/api/xyz/guochuang/20240611_dx_shanxi.jpg
  21. BIN
      helper/refill/api/xyz/guochuang/20240611_yd_qinghai.jpg
  22. BIN
      helper/refill/api/xyz/guochuang/20240614_yd_hebei.jpg
  23. 6 6
      helper/refill/api/xyz/guochuang/config.php
  24. 28 0
      helper/refill/api/xyz/hengyeshi_sec/API.MD
  25. BIN
      helper/refill/api/xyz/hengyeshi_sec/API.doc
  26. 52 0
      helper/refill/api/xyz/hengyeshi_sec/RefillCallBack.php
  27. 155 0
      helper/refill/api/xyz/hengyeshi_sec/RefillPhone.php
  28. 38 0
      helper/refill/api/xyz/hengyeshi_sec/config.php
  29. 24 0
      helper/refill/api/xyz/huifen_fast_sec/API.MD
  30. 40 0
      helper/refill/api/xyz/huifen_fast_sec/RefillCallBack.php
  31. 154 0
      helper/refill/api/xyz/huifen_fast_sec/RefillPhone.php
  32. 50 0
      helper/refill/api/xyz/huifen_fast_sec/config.php
  33. BIN
      helper/refill/api/xyz/meixu/code_2024.5.28.xlsx
  34. 4 4
      helper/refill/api/xyz/meixu/config.php
  35. BIN
      helper/refill/api/xyz/meixu_fs/20240613.code.xlsx
  36. 31 5
      helper/refill/api/xyz/meixu_fs/config.php
  37. 7 2
      helper/refill/api/xyz/yiqiandq/API.MD
  38. 5 4
      helper/refill/api/xyz/yiqiandq/config.php
  39. 30 0
      helper/refill/api/xyz/yuansheng_sec/API.MD
  40. 49 0
      helper/refill/api/xyz/yuansheng_sec/RefillCallBack.php
  41. 154 0
      helper/refill/api/xyz/yuansheng_sec/RefillPhone.php
  42. 41 0
      helper/refill/api/xyz/yuansheng_sec/config.php
  43. 33 0
      helper/refill/api/yl/gudelake/API.MD
  44. 52 0
      helper/refill/api/yl/gudelake/RefillCallBack.php
  45. 146 0
      helper/refill/api/yl/gudelake/RefillPhone.php
  46. 46 0
      helper/refill/api/yl/gudelake/config.php
  47. 6 6
      helper/refill/api/yl/guochuang/config.php
  48. BIN
      helper/refill/api/yl/xingchuang_fs/20240603_yd_jl_nx_fj.jpg
  49. BIN
      helper/refill/api/yl/xingchuang_fs/20240614_dx_beijing.png
  50. 14 1
      helper/refill/api/yl/xingchuang_fs/API.MD
  51. 22 1
      helper/refill/api/yl/xingchuang_fs/config.php
  52. 14 1
      helper/refill/api/yl/yuansheng_fs/API.MD
  53. 21 0
      helper/refill/api/yl/yuansheng_fs/config.php
  54. 1 1
      helper/refill/chprice_helper.php
  55. 4 0
      mobile/callback/refill_gudelake.php
  56. 4 0
      mobile/callback/refill_hengyeshi_sec.php
  57. 6 0
      mobile/callback/refill_huifen_fast_sec.php
  58. 4 0
      mobile/callback/refill_yuansheng_sec.php
  59. 25 2
      test/TestRefill.php

+ 3 - 0
admin/control/merchant.php

@@ -33,6 +33,9 @@ class merchantControl extends SystemControl
         if (trim($_GET['merchant_name']) != '') {
             $condition['company_name'] = ['like', '%' . $_GET['merchant_name'] . '%'];
         }
+        if (empty($_GET['merchant_name']) && empty($_GET['show_state'])) {
+            $condition['merchant_state'] = 1;
+        }
         $debt_total = 0;
         $available_total = 0;
         $merchant_list = $model_merchant->getMerchantList($condition, 200, 'available_predeposit desc,merchant_state asc,mchid desc', true);

+ 1 - 1
admin/control/refill_detail.php

@@ -52,7 +52,7 @@ class refill_detailControl extends SystemControl
             $this->RefillDetailExport($condition, $merchants);
             exit;
         } else {
-            $list = $mod->getRefillDetailList($condition, 200, 1000);
+            $list = $mod->getRefillDetailList($condition, 200, 1000, '*', 'order_time asc');
             $list = $this->DataFormat($list, $merchants);
         }
 

+ 11 - 1
admin/templates/default/merchant.index.php

@@ -12,6 +12,11 @@
     a {
         color: #0D93BF !important;
     }
+
+    .left-50 {
+        display: inline-block;
+        margin-left: 150px !important;
+    }
 </style>
 <?php
 
@@ -72,6 +77,7 @@ defined('InShopNC') or exit('Access Invalid!'); ?>
     <form method="post" id="merchant_name_form">
         <input type="hidden" name="form_submit" value="ok" />
         <a href="#" class="btns" id="close"><span>全部关闭机构</span></a>
+        <a href="#" class="btns left-50" id="show-state"><span>展示全部机构</span></a>
 
         <div>
             <table class="table tb-type2 myTable" width="100%" id="app-gas-content">
@@ -236,6 +242,10 @@ defined('InShopNC') or exit('Access Invalid!'); ?>
         $('#just span').each(function(index, item) {
             let text = $.trim($(item).text())
             $(item).text(text)
-        })
+        });
+        //显示全部机构
+        $('#show-state').click(function() {
+            window.location.href = `index.php?act=merchant&op=merchant&show_state=1`
+        });
     });
 </script>

+ 7 - 0
admin/templates/default/provider.group.set.php

@@ -196,5 +196,12 @@
               })
           }
         })
+
+        // 设置已经禁用的通道不显示
+        $('span.textColor').each(function() {
+            if ($(this).css('color') === 'rgb(255, 0, 0)') {
+                $(this).closest('tr').hide();
+            }
+        });
     });
 </script>

+ 26 - 16
admin/templates/default/refill.order.batch.php

@@ -160,6 +160,9 @@
         width: 351px;
         text-align: center;
      }
+     .space_btns {
+         margin-right: 30px;
+     }
 </style>
 
 <?php defined('InShopNC') or exit('Access Invalid!'); ?>
@@ -208,8 +211,8 @@
                     </select>
                 </td>
                 <th><label class="query_ors">供方名称</label></th>
-                <td>
-                    <select name="store_id" class="">
+                <td class="layui-form" id="provider_filter" style="width: 110px;">
+                    <select name="store_id" lay-search>
                         <option value=""><?php echo $lang['nc_please_choose']; ?></option>
                         <?php foreach ($output['provider_list'] as $provider) { ?>
                             <option value="<?php echo $provider['store_id'] ?>"
@@ -268,22 +271,25 @@
                 </td>
             </tr>
             <tr>
-                <td></td>
-                <td id="hover">
-                    <a href="#" class="btns success" title="所选的订单全部手动处理为成功,只有待收货状态可操作">
+                <td>
+                    <a href="#" class="btns callback" title="所选的订单全部手动处理为回调,只有交易完成或已取消状态可操作">
+                        <span><i class="icon-edit"></i>批量回调</span>
+                    </a>
+                </td>
+                <td id="hover" colspan="2">
+
+                    <a href="#" class="btns success space_btns" title="所选的订单全部手动处理为成功,只有待收货状态可操作">
                         <span><i class="icon-edit"></i>批量成功</span>
                     </a>
-                    <a href="#" class="btns fail" title="所选的订单全部手动处理为失败,只有待收货状态可操作">
+                    <a href="#" class="btns fail space_btns" title="所选的订单全部手动处理为失败,只有待收货状态可操作">
                         <span><i class="icon-edit"></i>批量失败</span>
                     </a>
-                    <a href="#" class="btns callback" title="所选的订单全部手动处理为回调,只有交易完成或已取消状态可操作">
-                        <span><i class="icon-edit"></i>批量回调</span>
-                    </a>
-                    <a href="#" class="btns resale" title="所选的订单全部手动处理为返销,只有交易完成状态可操作">
+
+                    <a href="#" class="btns resale space_btns" title="所选的订单全部手动处理为返销,只有交易完成状态可操作">
                         <span><i class="icon-edit"></i>批量返销</span>
                     </a>
                 </td>
-                <th></th>
+<!--                <th></th>-->
                 <td>
                     <a href="#" class="btns" onclick="hCopyCardNo(event)">
                         <span><i class="icon-edit"></i>拷贝充值卡号</span>
@@ -516,14 +522,18 @@
         })
 
         // 供方名称颜色
-        $('.textColor').each(function () {
-            let color = $(this).attr('data-color')
-            if (color == '1') {
-                $(this).css('color', 'green')
+        $('.textColor').each(function (i) {
+            let val = $(this).val();
+            let ly_item = $('#provider_filter .layui-anim dd[lay-value="' + val + '"]');
+
+            let color = $(this).data('color');
+            if (color === 1) {
+                ly_item.css('color', 'green')
             } else {
-                $(this).css('color', 'red')
+                ly_item.css('color', 'red')
             }
         })
+
         //批量操作
         $('.success').click(function() {
             layer.confirm('您确定要批量成功', {

+ 4 - 4
admin/templates/default/refill.order.index.php

@@ -530,11 +530,11 @@
                 <th class="align-center">订单状态</th>
                 <th class="align-left">运营商流水号</th>
                 <th class="align-left">错误原因</th>
-                <th class="align-center">质量</th>
                 <th class="align-left">客户单号</th>
                 <th class="align-left">供方名称</th>
                 <th class="align-left">供方单号</th>
                 <th class="align-right">次数</th>
+                <th class="align-center">质量</th>
                 <th class="align-center">初始质量</th>
                 <!--            <th class="align-center">扣款金额</th>-->
                 <th class="align-center"><?php echo $lang['nc_handle']; ?></th>
@@ -575,11 +575,11 @@
                         <td class="align-center"><?php echo orderState($order); ?></td>
                         <td class="align-left"><?php echo $order['official_sn']; ?></td>
                         <td class="align-left"><?php echo $order['err_msg']; ?></td>
-                        <td class="align-center"><?php echo $order['quality_text']; ?></td>
                         <td class="align-left"><?php echo $order['mch_order']; ?></td>
                         <td class="align-left"><?php echo $order['channel_name']; ?></td>
                         <td class="align-left" class="ch_trade_no"><?php echo $order['ch_trade_no']; ?></td>
                         <td class="align-right"><?php echo $order['commit_times']; ?></td>
+                        <td class="align-center"><?php echo $order['quality_text']; ?></td>
                         <td class="align-center"><?php echo $order['org_quality_text']; ?></td>
                         <!--                    <td class="align-center">--><?php //echo $order['mch_amount'];
                                                                             ?>
@@ -1121,7 +1121,7 @@
     }
 
     function hCopyChannel(e) {
-        copy_some(16)
+        copy_some(15)
     }
 
     function hCopyCardNo(e) {
@@ -1133,6 +1133,6 @@
     }
 
     function hCopyMchOrder(e) {
-        copy_some(14)
+        copy_some(13)
     }
 </script>

+ 11 - 6
admin/templates/default/refill.order.search.php

@@ -187,8 +187,8 @@
                     </select>
                 </td>
                 <th><label class="query_ors">供方名称</label></th>
-                <td>
-                    <select name="store_id" class="">
+                <td class="layui-form" id="provider_filter" style="width: 110px;">
+                    <select name="store_id" lay-search>
                         <option value=""><?php echo $lang['nc_please_choose']; ?></option>
                         <?php foreach ($output['provider_list'] as $provider) { ?>
                             <option value="<?php echo $provider['store_id'] ?>"
@@ -488,15 +488,20 @@
                 $(this)[0].style.backgroundColor = '#fff'
             })
         })
+
         // 供方名称颜色
         $('.textColor').each(function () {
-            let color = $(this).attr('data-color')
-            if (color == '1') {
-                $(this).css('color', 'green')
+            let val = $(this).val();
+            let ly_item = $('#provider_filter .layui-anim dd[lay-value="' + val + '"]');
+
+            let color = $(this).data('color');
+            if (color === 1) {
+                ly_item.css('color', 'green')
             } else {
-                $(this).css('color', 'red')
+                ly_item.css('color', 'red')
             }
         })
+
         // 导出Excel
         $('#ncexport').click(function() {
             const export_flag = $('input[name="export"]');

+ 156 - 38
data/config/xyz/refill.ini.php

@@ -3728,52 +3728,52 @@ $yinghuochong_phone = ['name' => 'yinghuochong', 'store_id' => 159,'qualitys' =>
 $meixu_phone = ['name' => 'meixu', 'store_id' => 160,'qualitys' => '2',
     'amount' => [
         10 => [
-            ['goods_id' => 7349, 'price' => 10.065, 'quality' => 2, 'card_type' => 'chinamobile'],
-            ['goods_id' => 7349, 'price' => 10.02, 'quality' => 2, 'card_type' => 'chinaunicom'],
-            ['goods_id' => 7349, 'price' => 10, 'quality' => 2, 'card_type' => 'chinatelecom']
+            ['goods_id' => 7349, 'price' => 10.28, 'quality' => 2, 'card_type' => 'chinamobile'],
+            ['goods_id' => 7349, 'price' => 10.09, 'quality' => 2, 'card_type' => 'chinaunicom'],
+            ['goods_id' => 7349, 'price' => 10.36, 'quality' => 2, 'card_type' => 'chinatelecom']
         ],
 
         20 => [
-            ['goods_id' => 7350, 'price' => 20.13, 'quality' => 2, 'card_type' => 'chinamobile'],
-            ['goods_id' => 7350, 'price' => 20.04, 'quality' => 2, 'card_type' => 'chinaunicom'],
-            ['goods_id' => 7350, 'price' => 20, 'quality' => 2, 'card_type' => 'chinatelecom']
+            ['goods_id' => 7350, 'price' => 20.56, 'quality' => 2, 'card_type' => 'chinamobile'],
+            ['goods_id' => 7350, 'price' => 20.1, 'quality' => 2, 'card_type' => 'chinaunicom'],
+            ['goods_id' => 7350, 'price' => 20.5, 'quality' => 2, 'card_type' => 'chinatelecom']
         ],
 
         30 => [
-            ['goods_id' => 7351, 'price' => 30.195, 'quality' => 2, 'card_type' => 'chinamobile'],
-            ['goods_id' => 7351, 'price' => 30.06, 'quality' => 2, 'card_type' => 'chinaunicom'],
-            ['goods_id' => 7351, 'price' => 30, 'quality' => 2, 'card_type' => 'chinatelecom']
+            ['goods_id' => 7351, 'price' => 30.84, 'quality' => 2, 'card_type' => 'chinamobile'],
+            ['goods_id' => 7351, 'price' => 30.12, 'quality' => 2, 'card_type' => 'chinaunicom'],
+            ['goods_id' => 7351, 'price' => 30.54, 'quality' => 2, 'card_type' => 'chinatelecom']
         ],
 
         50 => [
-            ['goods_id' => 7352, 'price' => 50.325, 'quality' => 2, 'card_type' => 'chinamobile'],
-            ['goods_id' => 7352, 'price' => 50.1, 'quality' => 2, 'card_type' => 'chinaunicom'],
-            ['goods_id' => 7352, 'price' => 50, 'quality' => 2, 'card_type' => 'chinatelecom']
+            ['goods_id' => 7352, 'price' => 50.4, 'quality' => 2, 'card_type' => 'chinamobile'],
+            ['goods_id' => 7352, 'price' => 50.08, 'quality' => 2, 'card_type' => 'chinaunicom'],
+            ['goods_id' => 7352, 'price' => 50.35, 'quality' => 2, 'card_type' => 'chinatelecom']
         ],
 
         100 => [
-            ['goods_id' => 7353, 'price' => 99.95, 'quality' => 2, 'card_type' => 'chinamobile'],
-            ['goods_id' => 7353, 'price' => 100.2, 'quality' => 2, 'card_type' => 'chinaunicom'],
-            ['goods_id' => 7353, 'price' => 100, 'quality' => 2, 'card_type' => 'chinatelecom']
+            ['goods_id' => 7353, 'price' => 100.18, 'quality' => 2, 'card_type' => 'chinamobile'],
+            ['goods_id' => 7353, 'price' => 100.16, 'quality' => 2, 'card_type' => 'chinaunicom'],
+            ['goods_id' => 7353, 'price' => 100.23, 'quality' => 2, 'card_type' => 'chinatelecom']
         ],
 
         200 => [
-            ['goods_id' => 7354, 'price' => 199.9, 'quality' => 2, 'card_type' => 'chinamobile'],
-            ['goods_id' => 7354, 'price' => 200.4, 'quality' => 2, 'card_type' => 'chinaunicom'],
-            ['goods_id' => 7354, 'price' => 200, 'quality' => 2, 'card_type' => 'chinatelecom']
+            ['goods_id' => 7354, 'price' => 200.2, 'quality' => 2, 'card_type' => 'chinamobile'],
+            ['goods_id' => 7354, 'price' => 200.32, 'quality' => 2, 'card_type' => 'chinaunicom'],
+            ['goods_id' => 7354, 'price' => 200.36, 'quality' => 2, 'card_type' => 'chinatelecom']
         ],
 
         300 => [
-            ['goods_id' => 7355, 'price' => 299.85, 'quality' => 2, 'card_type' => 'chinamobile'],
-            ['goods_id' => 7355, 'price' => 300.6, 'quality' => 2, 'card_type' => 'chinaunicom'],
-            ['goods_id' => 7355, 'price' => 300, 'quality' => 2, 'card_type' => 'chinatelecom']
+            ['goods_id' => 7355, 'price' => 300.3, 'quality' => 2, 'card_type' => 'chinamobile'],
+            ['goods_id' => 7355, 'price' => 300.48, 'quality' => 2, 'card_type' => 'chinaunicom'],
+            ['goods_id' => 7355, 'price' => 300.54, 'quality' => 2, 'card_type' => 'chinatelecom']
         ],
 
-        500 => [
-            ['goods_id' => 7356, 'price' => 499.75, 'quality' => 2, 'card_type' => 'chinamobile'],
-            ['goods_id' => 7356, 'price' => 501, 'quality' => 2, 'card_type' => 'chinaunicom'],
-            ['goods_id' => 7356, 'price' => 500, 'quality' => 2, 'card_type' => 'chinatelecom']
-        ]
+//        500 => [
+//            ['goods_id' => 7356, 'price' => 500.9, 'quality' => 2, 'card_type' => 'chinamobile'],
+//            ['goods_id' => 7356, 'price' => 500.5, 'quality' => 2, 'card_type' => 'chinaunicom'],
+//            ['goods_id' => 7356, 'price' => 500.9, 'quality' => 2, 'card_type' => 'chinatelecom']
+//        ]
     ],
     'official_sn' => true, 'refill_type' => 'api'];
 
@@ -9902,13 +9902,25 @@ $yiqiandq_phone = ['name' => 'yiqiandq', 'store_id' => 377,'qualitys' => '2',
 
 //        50 => [['goods_id' => 8956, 'price' => 50.5, 'quality' => 2, 'card_type' => 'chinatelecom']],
 
-        100 => [['goods_id' => 8957, 'price' => 100.2, 'quality' => 2, 'card_type' => 'chinatelecom']],
+        100 => [
+            ['goods_id' => 8957, 'price' => 100.7, 'quality' => 2, 'card_type' => 'chinamobile'],
+            ['goods_id' => 8957, 'price' => 100.2, 'quality' => 2, 'card_type' => 'chinatelecom']
+        ],
 
-        200 => [['goods_id' => 8958, 'price' => 200.2, 'quality' => 2, 'card_type' => 'chinatelecom']],
+        200 => [
+            ['goods_id' => 8957, 'price' => 201.4, 'quality' => 2, 'card_type' => 'chinamobile'],
+            ['goods_id' => 8958, 'price' => 200.2, 'quality' => 2, 'card_type' => 'chinatelecom']
+        ],
 
-        300 => [['goods_id' => 8959, 'price' => 300.3, 'quality' => 2, 'card_type' => 'chinatelecom']],
+        300 => [
+            ['goods_id' => 8957, 'price' => 302.1, 'quality' => 2, 'card_type' => 'chinamobile'],
+            ['goods_id' => 8959, 'price' => 300.3, 'quality' => 2, 'card_type' => 'chinatelecom']
+        ],
 
-        500 => [['goods_id' => 8960, 'price' => 500.5, 'quality' => 2, 'card_type' => 'chinatelecom']]
+        500 => [
+            ['goods_id' => 8957, 'price' => 503.5, 'quality' => 2, 'card_type' => 'chinamobile'],
+            ['goods_id' => 8960, 'price' => 500.5, 'quality' => 2, 'card_type' => 'chinatelecom']
+        ]
     ],
     'official_sn' => true, 'refill_type' => 'api'];
 
@@ -10357,35 +10369,35 @@ $huifen_fast_phone = ['name' => 'huifen_fast', 'store_id' => 391, 'qualitys' =>
 //            ['goods_id' => 9066, 'price' => 21.1, 'quality' => 2, 'card_type' => 'chinaunicom'],
 //            ['goods_id' => 9066, 'price' => 21.1, 'quality' => 2, 'card_type' => 'chinatelecom'],
 //        ],
-//        30 => [
+        30 => [
 //            ['goods_id' => 9067, 'price' => 31.11, 'quality' => 2, 'card_type' => 'chinamobile'],
 //            ['goods_id' => 9067, 'price' => 30.9, 'quality' => 2, 'card_type' => 'chinaunicom'],
-//            ['goods_id' => 9067, 'price' => 30.93, 'quality' => 2, 'card_type' => 'chinatelecom'],
-//        ],
+            ['goods_id' => 9067, 'price' => 31.05, 'quality' => 2, 'card_type' => 'chinatelecom'],
+        ],
         50 => [
             ['goods_id' => 9068, 'price' => 50.4, 'quality' => 2, 'card_type' => 'chinamobile'],
 //            ['goods_id' => 9068, 'price' => 51.5, 'quality' => 2, 'card_type' => 'chinaunicom'],
-//            ['goods_id' => 9068, 'price' => 51.55, 'quality' => 2, 'card_type' => 'chinatelecom'],
+            ['goods_id' => 9068, 'price' => 50.75, 'quality' => 2, 'card_type' => 'chinatelecom'],
         ],
         100 => [
             ['goods_id' => 9069, 'price' => 100.5, 'quality' => 2, 'card_type' => 'chinamobile'],
             ['goods_id' => 9069, 'price' => 100, 'quality' => 2, 'card_type' => 'chinaunicom'],
-            ['goods_id' => 9069, 'price' => 100, 'quality' => 2, 'card_type' => 'chinatelecom'],
+            ['goods_id' => 9069, 'price' => 100.8, 'quality' => 2, 'card_type' => 'chinatelecom'],
         ],
         200 => [
             ['goods_id' => 9070, 'price' => 201, 'quality' => 2, 'card_type' => 'chinamobile'],
             ['goods_id' => 9070, 'price' => 200, 'quality' => 2, 'card_type' => 'chinaunicom'],
-            ['goods_id' => 9070, 'price' => 200, 'quality' => 2, 'card_type' => 'chinatelecom'],
+            ['goods_id' => 9070, 'price' => 201.6, 'quality' => 2, 'card_type' => 'chinatelecom'],
         ],
         300 => [
             ['goods_id' => 9071, 'price' => 301.5, 'quality' => 2, 'card_type' => 'chinamobile'],
             ['goods_id' => 9071, 'price' => 300, 'quality' => 2, 'card_type' => 'chinaunicom'],
-            ['goods_id' => 9071, 'price' => 300, 'quality' => 2, 'card_type' => 'chinatelecom'],
+            ['goods_id' => 9071, 'price' => 303, 'quality' => 2, 'card_type' => 'chinatelecom'],
         ],
         500 => [
             ['goods_id' => 9072, 'price' => 502.5, 'quality' => 2, 'card_type' => 'chinamobile'],
             ['goods_id' => 9072, 'price' => 500, 'quality' => 2, 'card_type' => 'chinaunicom'],
-            ['goods_id' => 9072, 'price' => 500, 'quality' => 2, 'card_type' => 'chinatelecom'],
+            ['goods_id' => 9072, 'price' => 505, 'quality' => 2, 'card_type' => 'chinatelecom'],
         ]
     ],
     'official_sn' => true, 'refill_type' => 'api'];
@@ -11093,6 +11105,109 @@ $kachong_sec_phone = ['name' => 'kachong_sec', 'store_id' => 409, 'qualitys' =>
     ],
     'official_sn' => true, 'refill_type' => 'api'];
 
+$huifen_fast_sec_phone = ['name' => 'huifen_fast_sec', 'store_id' => 410, 'qualitys' => '2',
+    'amount' => [
+        10 => [
+            ['goods_id' => 9240, 'price' => 10.35, 'quality' => 2, 'card_type' => 'chinamobile'],
+            ['goods_id' => 9240, 'price' => 10.12, 'quality' => 2, 'card_type' => 'chinaunicom'],
+            ['goods_id' => 9240, 'price' => 10.35, 'quality' => 2, 'card_type' => 'chinatelecom'],
+        ],
+        20 => [
+            ['goods_id' => 9241, 'price' => 20.7, 'quality' => 2, 'card_type' => 'chinamobile'],
+            ['goods_id' => 9241, 'price' => 20.24, 'quality' => 2, 'card_type' => 'chinaunicom'],
+            ['goods_id' => 9241, 'price' => 20.7, 'quality' => 2, 'card_type' => 'chinatelecom'],
+        ],
+        30 => [
+            ['goods_id' => 9242, 'price' => 31.05, 'quality' => 2, 'card_type' => 'chinamobile'],
+            ['goods_id' => 9242, 'price' => 30.36, 'quality' => 2, 'card_type' => 'chinaunicom'],
+            ['goods_id' => 9242, 'price' => 31.05, 'quality' => 2, 'card_type' => 'chinatelecom'],
+        ],
+        50 => [
+            ['goods_id' => 9243, 'price' => 50.9, 'quality' => 2, 'card_type' => 'chinamobile'],
+            ['goods_id' => 9243, 'price' => 50.1, 'quality' => 2, 'card_type' => 'chinaunicom'],
+            ['goods_id' => 9243, 'price' => 50.9, 'quality' => 2, 'card_type' => 'chinatelecom'],
+        ],
+        100 => [
+            ['goods_id' => 9244, 'price' => 100.5, 'quality' => 2, 'card_type' => 'chinamobile'],
+            ['goods_id' => 9244, 'price' => 100.2, 'quality' => 2, 'card_type' => 'chinaunicom'],
+            ['goods_id' => 9244, 'price' => 100.8, 'quality' => 2, 'card_type' => 'chinatelecom'],
+        ],
+        200 => [
+            ['goods_id' => 9245, 'price' => 201, 'quality' => 2, 'card_type' => 'chinamobile'],
+            ['goods_id' => 9245, 'price' => 200.4, 'quality' => 2, 'card_type' => 'chinaunicom'],
+            ['goods_id' => 9245, 'price' => 201.6, 'quality' => 2, 'card_type' => 'chinatelecom'],
+        ],
+        300 => [
+            ['goods_id' => 9246, 'price' => 301.5, 'quality' => 2, 'card_type' => 'chinamobile'],
+            ['goods_id' => 9246, 'price' => 300.6, 'quality' => 2, 'card_type' => 'chinaunicom'],
+            ['goods_id' => 9246, 'price' => 303, 'quality' => 2, 'card_type' => 'chinatelecom'],
+        ],
+        500 => [
+            ['goods_id' => 9247, 'price' => 502.5, 'quality' => 2, 'card_type' => 'chinamobile'],
+            ['goods_id' => 9247, 'price' => 501, 'quality' => 2, 'card_type' => 'chinaunicom'],
+            ['goods_id' => 9247, 'price' => 505, 'quality' => 2, 'card_type' => 'chinatelecom'],
+        ]
+    ],
+    'official_sn' => true, 'refill_type' => 'api'];
+
+$hengyeshi_sec_phone = ['name' => 'hengyeshi_sec', 'store_id' => 411, 'qualitys' => '1',
+    'amount' => [
+//        10 => [
+//            ['goods_id' => 9248, 'price' => 10, 'quality' => 1, 'card_type' => 'chinamobile'],
+//        ],
+//        20 => [
+//            ['goods_id' => 9249, 'price' => 20, 'quality' => 1, 'card_type' => 'chinamobile'],
+//        ],
+//        30 => [
+//            ['goods_id' => 9250, 'price' => 30, 'quality' => 1, 'card_type' => 'chinamobile'],
+//        ],
+        50 => [
+            ['goods_id' => 9251, 'price' => 48.75, 'quality' => 1, 'card_type' => 'chinamobile'],
+        ],
+        100 => [
+            ['goods_id' => 9252, 'price' => 97.5, 'quality' => 1, 'card_type' => 'chinamobile'],
+        ],
+        200 => [
+            ['goods_id' => 9253, 'price' => 195, 'quality' => 1, 'card_type' => 'chinamobile'],
+        ],
+//        300 => [
+//            ['goods_id' => 9254, 'price' => 300, 'quality' => 1, 'card_type' => 'chinamobile'],
+//        ],
+//        500 => [
+//            ['goods_id' => 9255, 'price' => 500, 'quality' => 1, 'card_type' => 'chinamobile'],
+//        ]
+    ],
+    'official_sn' => true, 'refill_type' => 'api'];
+
+$yuansheng_sec_phone = ['name' => 'yuansheng_sec', 'store_id' => 412, 'qualitys' => '1',
+    'amount' => [
+//        10 => [
+//            ['goods_id' => 9256, 'price' => 10, 'quality' => 1, 'card_type' => 'chinamobile'],
+//        ],
+//        20 => [
+//            ['goods_id' => 9257, 'price' => 20, 'quality' => 1, 'card_type' => 'chinamobile'],
+//        ],
+//        30 => [
+//            ['goods_id' => 9258, 'price' => 30, 'quality' => 1, 'card_type' => 'chinamobile'],
+//        ],
+        50 => [
+            ['goods_id' => 9259, 'price' => 48.65, 'quality' => 1, 'card_type' => 'chinamobile'],
+        ],
+        100 => [
+            ['goods_id' => 9260, 'price' => 97.3, 'quality' => 1, 'card_type' => 'chinamobile'],
+        ],
+        200 => [
+            ['goods_id' => 9261, 'price' => 194.6, 'quality' => 1, 'card_type' => 'chinamobile'],
+        ],
+//        300 => [
+//            ['goods_id' => 9262, 'price' => 300, 'quality' => 1, 'card_type' => 'chinamobile'],
+//        ],
+//        500 => [
+//            ['goods_id' => 9263, 'price' => 500, 'quality' => 1, 'card_type' => 'chinamobile'],
+//        ]
+    ],
+    'official_sn' => true, 'refill_type' => 'api'];
+
 $phone_providers = [
 //    ['name' => 'beixt', 'cfg' => $beixt_p hone],
 //    ['name' => 'bxtwt', 'cfg' => $bxtwt_phone],
@@ -11420,6 +11535,9 @@ $phone_providers = [
     ['name' => 'dunhui', 'cfg' => $dunhui_phone],
     ['name' => 'ruizhi_tax_yj', 'cfg' => $ruizhi_tax_yj_phone],
     ['name' => 'kachong_sec', 'cfg' => $kachong_sec_phone],
+    ['name' => 'huifen_fast_sec', 'cfg' => $huifen_fast_sec_phone],
+    ['name' => 'hengyeshi_sec', 'cfg' => $hengyeshi_sec_phone],
+    ['name' => 'yuansheng_sec', 'cfg' => $yuansheng_sec_phone],
 ];
 $config['phone_providers'] = $phone_providers;
 

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

@@ -8586,6 +8586,46 @@ $yuansheng_fs_phone = ['name' => 'yuansheng_fs', 'store_id' => 324, 'qualitys' =
     ],
     'official_sn' => true, 'refill_type' => 'api'];
 
+$gudelake_phone = ['name' => 'gudelake', 'store_id' => 325, 'qualitys' => '1',
+    'amount' => [
+//        10 => [
+//            ['goods_id' => 8611, 'price' => 10, 'quality' => 1, 'card_type' => 'chinamobile'],
+//            ['goods_id' => 8611, 'price' => 10, 'quality' => 1, 'card_type' => 'chinaunicom'],
+//        ],
+//        20 => [
+//            ['goods_id' => 8612, 'price' => 20, 'quality' => 1, 'card_type' => 'chinamobile'],
+//            ['goods_id' => 8612, 'price' => 20, 'quality' => 1, 'card_type' => 'chinaunicom'],
+//        ],
+        30 => [
+//            ['goods_id' => 8613, 'price' => 30, 'quality' => 1, 'card_type' => 'chinamobile'],
+            ['goods_id' => 8613, 'price' => 28.5, 'quality' => 1, 'card_type' => 'chinaunicom'],
+        ],
+        50 => [
+            ['goods_id' => 8614, 'price' => 48.5, 'quality' => 1, 'card_type' => 'chinamobile'],
+            ['goods_id' => 8614, 'price' => 47.5, 'quality' => 1, 'card_type' => 'chinaunicom'],
+            ['goods_id' => 8614, 'price' => 48.5, 'quality' => 1, 'card_type' => 'chinatelecom'],
+        ],
+        100 => [
+            ['goods_id' => 8615, 'price' => 97, 'quality' => 1, 'card_type' => 'chinamobile'],
+            ['goods_id' => 8615, 'price' => 95, 'quality' => 1, 'card_type' => 'chinaunicom'],
+            ['goods_id' => 8615, 'price' => 97, 'quality' => 1, 'card_type' => 'chinatelecom'],
+        ],
+        200 => [
+            ['goods_id' => 8616, 'price' => 194, 'quality' => 1, 'card_type' => 'chinamobile'],
+            ['goods_id' => 8616, 'price' => 190, 'quality' => 1, 'card_type' => 'chinaunicom'],
+            ['goods_id' => 8616, 'price' => 194, 'quality' => 1, 'card_type' => 'chinatelecom'],
+        ],
+//        300 => [
+//            ['goods_id' => 8617, 'price' => 300, 'quality' => 1, 'card_type' => 'chinamobile'],
+//            ['goods_id' => 8617, 'price' => 300, 'quality' => 1, 'card_type' => 'chinaunicom'],
+//        ],
+//        500 => [
+//            ['goods_id' => 8618, 'price' => 500, 'quality' => 1, 'card_type' => 'chinamobile'],
+//            ['goods_id' => 8618, 'price' => 500, 'quality' => 1, 'card_type' => 'chinaunicom'],
+//        ]
+    ],
+    'official_sn' => true, 'refill_type' => 'api'];
+
 $phone_providers = [
 //    ['name' => 'beixt', 'cfg' => $beixt_phone],
 //    ['name' => 'bxtwt', 'cfg' => $bxtwt_phone],
@@ -8857,6 +8897,7 @@ $phone_providers = [
     ['name' => 'yuansheng_trd', 'cfg' => $yuansheng_trd_phone],
     ['name' => 'xinbao_fifth', 'cfg' => $xinbao_fifth_phone],
     ['name' => 'yuansheng_fs', 'cfg' => $yuansheng_fs_phone],
+    ['name' => 'gudelake', 'cfg' => $gudelake_phone],
 ];
 
 $config['phone_providers'] = $phone_providers;

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

@@ -107,7 +107,7 @@ class config
         "4-30-7" => 29.73, "4-50-7" => 49.55, "4-100-7" => 99.1, "4-200-7" => 198.2, "4-300-7" => 297.3, "4-500-7" => 495.5,//吉林 7
         "4-10-9" => 9.91, "4-20-9" => 19.82, "4-30-9" => 29.73, "4-50-9" => 49.55, "4-100-9" => 99.1, "4-200-9" => 198.2, "4-300-9" => 297.3, "4-500-9" => 495.5,//上海 9
         "4-10-13" => 9.89, "4-20-13" => 19.78, "4-30-13" => 29.67, "4-50-13" => 49.45, "4-100-13" => 98.9, "4-200-13" => 197.8, "4-300-13" => 296.7, "4-500-13" => 494.5,//福建 13
-        "4-30-19" => 30, "4-50-19" => 50, "4-100-19" => 100, "4-200-19" => 200, "4-300-19" => 300, "4-500-19" => 500,//广东 19
+        "4-30-19" => 30, "4-50-19" => 50.6, "4-100-19" => 101.2, "4-200-19" => 202.4, "4-300-19" => 303.6, "4-500-19" => 506,//广东 19
         "4-10-29" => 9.82, "4-20-29" => 19.64, "4-30-29" => 29.46, "4-50-29" => 49.1, "4-100-29" => 98.2, "4-200-29" => 196.4, "4-300-29" => 294.6, "4-500-29" => 491,//青海 29
         "4-10-8" => 10.04, "4-20-8" => 20.08, "4-30-8" => 30.12, "4-50-8" => 50.2, "4-100-8" => 100.4, "4-200-8" => 200.8,//黑龙江 8
         "4-50-5" => 50.1, "4-100-5" => 100.2, "4-200-5" => 200.4, "4-300-5" => 300.6, "4-500-5" => 501,//内蒙古 5

BIN
helper/refill/api/xyz/guochuang/20240517_yd_liaoning.png


BIN
helper/refill/api/xyz/guochuang/20240521_yd_shandong.jpg


BIN
helper/refill/api/xyz/guochuang/20240522_dx_shanxi.jpg


BIN
helper/refill/api/xyz/guochuang/20240526_yd_liaoning.jpg


BIN
helper/refill/api/xyz/guochuang/20240527_yd_shandong.jpg


BIN
helper/refill/api/xyz/guochuang/20240528_yd_liaoning.png


BIN
helper/refill/api/xyz/guochuang/20240601_yd_liaoning.jpg


BIN
helper/refill/api/xyz/guochuang/20240603_yd_liaoning.jpg


BIN
helper/refill/api/xyz/guochuang/20240607_yd_liaoning.jpg


BIN
helper/refill/api/xyz/guochuang/20240611_dx_shanxi.jpg


BIN
helper/refill/api/xyz/guochuang/20240611_yd_qinghai.jpg


BIN
helper/refill/api/xyz/guochuang/20240614_yd_hebei.jpg


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

@@ -64,10 +64,10 @@ class config
     const Price = [
         //移动
         "4-10-2" => 10.28, "4-20-2" => 20.56, "4-30-2" => 30.84, "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.64, "4-20-6" => 19.28, "4-30-6" => 28.92, "4-50-6" => 48.2, "4-100-6" => 96.4, "4-200-6" => 192.8, "4-300-6" => 289.2, "4-500-6" => 482,//辽宁 6
+        "4-10-6" => 9.655, "4-20-6" => 19.31, "4-30-6" => 28.965, "4-50-6" => 48.275, "4-100-6" => 96.55, "4-200-6" => 193.1, "4-300-6" => 289.65, "4-500-6" => 482.75,//辽宁 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.85, "4-20-29" => 19.7, "4-30-29" => 29.55, "4-50-29" => 49.25, "4-100-29" => 98.5, "4-200-29" => 197, "4-300-29" => 295.5, "4-500-29" => 492.5,//青海 29
+        "4-10-29" => 9.84, "4-20-29" => 19.68, "4-30-29" => 29.52, "4-50-29" => 49.2, "4-100-29" => 98.4, "4-200-29" => 196.8, "4-300-29" => 295.2, "4-500-29" => 492,//青海 29
         "4-10-28" => 10.45, "4-20-28" => 20.74, "4-30-28" => 31.11, "4-50-28" => 50.65, "4-100-28" => 99.85, "4-200-28" => 199.7, "4-300-28" => 299.55, "4-500-28" => 499.25,//甘肃 28
         "4-10-13" => 9.965, "4-20-13" => 19.93, "4-30-13" => 29.895, "4-50-13" => 49.825, "4-100-13" => 99.65, "4-200-13" => 199.3, "4-300-13" => 298.95, "4-500-13" => 498.25,//福建 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
@@ -76,7 +76,7 @@ class config
         "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
-        "4-10-15" => 10.34, "4-20-15" => 20.54, "4-30-15" => 30.57, "4-50-15" => 50.6, "4-100-15" => 99.3, "4-200-15" => 198.6, "4-300-15" => 297.9,//山东 15
+        "4-10-15" => 10.47, "4-20-15" => 20.64, "4-30-15" => 30.66, "4-50-15" => 50.7, "4-100-15" => 99.3, "4-200-15" => 198.6, "4-300-15" => 297.9,//山东 15
         "4-10-10" => 9.945, "4-20-10" => 19.89, "4-30-10" => 30.18, "4-50-10" => 50.2, "4-100-10" => 100.2, "4-200-10" => 200.4, "4-300-10" => 300.6, "4-500-10" => 501,//江苏 10
         "4-10-11" => 9.945, "4-20-11" => 19.89, "4-30-11" => 29.835, "4-50-11" => 49.725, "4-100-11" => 99.45, "4-200-11" => 198.9, "4-300-11" => 298.35, "4-500-11" => 497.25,//浙江 11
         "4-10-17" => 9.945, "4-20-17" => 19.89, "4-30-17" => 29.835, "4-50-17" => 49.725, "4-100-17" => 99.45, "4-200-17" => 198.9, "4-300-17" => 298.35, "4-500-17" => 497.25,//湖北 17
@@ -87,7 +87,7 @@ class config
         "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.29, "4-20-27" => 20.58, "4-30-27" => 30.48, "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-31" => 10.4, "4-20-31" => 20.5,//新疆 31
-        "4-10-3" => 10.36, "4-20-3" => 20.72, "4-30-3" => 31.08, "4-50-3" => 50.4,//河北 3
+        "4-10-3" => 10.33, "4-20-3" => 20.66, "4-30-3" => 30.99, "4-50-3" => 50.4,//河北 3
         "4-10-23" => 10.31, "4-20-23" => 20.62, "4-30-23" => 30.93,//四川 23
 
         //联通
@@ -98,8 +98,8 @@ class config
         "5-20-23" => 20.08, "5-30-23" => 30.12, "5-50-23" => 50.2, "5-100-23" => 100.4, "5-200-23" => 200.8, "5-300-23" => 301.2, "5-500-23" => 502,//四川 23
         "5-10-31" => 10.22, "5-20-31" => 20.22, "5-30-31" => 30.24, "5-50-31" => 50.25, "5-100-31" => 100.3, "5-200-31" => 200.4, "5-300-31" => 300.6, "5-500-31" => 501,//新疆 31
         //电信
-        "6-10-27" => 10.16, "6-20-27" => 20.18, "6-30-27" => 30.24, "6-50-27" => 50.3, "6-100-27" => 100.45, "6-200-27" => 200.6, "6-300-27" => 300.9, "6-500-27" => 501.5,//陕西 27
-        "6-10-4" => 9.935, "6-20-4" => 19.87, "6-30-4" => 29.805, "6-50-4" => 49.675, "6-100-4" => 99.35, "6-200-4" => 198.7, "6-300-4" => 298.05, "6-500-4" => 496.75,//山西 4
+        "6-10-27" => 10.02, "6-20-27" => 20.04, "6-30-27" => 30.06, "6-50-27" => 50.1, "6-100-27" => 100.2, "6-200-27" => 200.4, "6-300-27" => 300.6, "6-500-27" => 501,//陕西 27
+        "6-10-4" => 10.16, "6-20-4" => 20.32, "6-30-4" => 30.48, "6-50-4" => 49.675, "6-100-4" => 99.35, "6-200-4" => 198.7, "6-300-4" => 298.05, "6-500-4" => 496.75,//山西 4
         "6-10-18" => 10.04, "6-20-18" => 20.08, "6-30-18" => 30.12, "6-50-18" => 50.15, "6-100-18" => 100.3, "6-200-18" => 200.6, "6-300-18" => 300.9, "6-500-18" => 501.5,//湖南 18
         "6-10-15" => 10.22, "6-20-15" => 20.24, "6-30-15" => 30.27, "6-50-15" => 50.7, "6-100-15" => 100.8, "6-200-15" => 200.4, "6-300-15" => 300.6, "6-500-15" => 501,//山东 15
         "6-10-12" => 10.21, "6-20-12" => 20.22, "6-30-12" => 30.24, "6-50-12" => 50.25, "6-100-12" => 100.5, "6-200-12" => 200.8, "6-300-12" => 301.2, "6-500-12" => 502,//安徽 12

+ 28 - 0
helper/refill/api/xyz/hengyeshi_sec/API.MD

@@ -0,0 +1,28 @@
+
+## 恒耶是2号
+
+### 账号信息
+- 后台登录地址:http://1.94.31.238:10060
+- 登录名:福庆顺全国2号
+- 初始密码:123456
+
+### 接口信息
+- 用户id:10002746
+- 密钥:Zz5SQ2Gw4bAhJ46fChSne3GwxS36Ccnk
+
+## 接口地址
+话费充值接口:http://1.94.31.238:9086/onlinepay.do
+订单查询接口:http://1.94.31.238:9086/searchpay.do
+账户余额查询接口:http://1.94.31.238:9086/searchbalance.do
+
+## 店铺账号
+- 账号:hengyeshi_sec
+- 密码:hengyeshi_sec67890
+
+## 编码
+30000000909 全国移动50元直充
+30000000910 全国移动100元直充
+30000000911 全国移动200元直充
+
+## 折扣
+97.5

BIN
helper/refill/api/xyz/hengyeshi_sec/API.doc


+ 52 - 0
helper/refill/api/xyz/hengyeshi_sec/RefillCallBack.php

@@ -0,0 +1,52 @@
+<?php
+namespace refill\hengyeshi_sec;
+
+require_once(BASE_HELPER_RAPI_PATH . '/hengyeshi_sec/config.php');
+
+use refill;
+class RefillCallBack implements refill\IRefillCallBack
+{
+    public function verify($params): bool
+    {
+        $sign = $this->sign($params);
+        if ($params['sign'] == $sign) {
+            return true;
+        } else {
+            return false;
+        }
+    }
+
+    private function sign($params): string
+    {
+        $userid = config::USER_ID;
+        $key = config::KEY;
+        $content = "userid=$userid&orderid={$params['orderid']}&sporderid={$params['sporderid']}&merchantsubmittime={$params['merchantsubmittime']}";
+        $content .= "&resultno={$params['resultno']}&key=$key";
+
+        return strtoupper(md5($content));
+    }
+
+    public function notify($params): array
+    {
+        $status = intval($params['resultno']);
+        $order_sn = $params['sporderid'];
+        $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) {
+            $official_sn = $params['remark1'] ?? '';
+            $ch_trade_no = $params['orderid'] ?? '';
+            Model('refill_order')->edit($order_id, ['official_sn' => $official_sn, 'ch_trade_no' => $ch_trade_no]);
+            return [$order_id, true, false, true, $official_sn];
+        } elseif ($status === 9) {
+            $ch_trade_no = $params['orderid'] ?? '';
+            Model('refill_order')->edit($order_id, ['ch_trade_no' => $ch_trade_no]);
+            return [$order_id, false, true, true, ''];
+        } else {
+            return [$order_id, false, false, false, ''];
+        }
+    }
+}

+ 155 - 0
helper/refill/api/xyz/hengyeshi_sec/RefillPhone.php

@@ -0,0 +1,155 @@
+<?php
+
+namespace refill\hengyeshi_sec;
+
+require_once(BASE_HELPER_RAPI_PATH . '/hengyeshi_sec/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, $card_type, string $order_sn): array
+    {
+        $params['userid'] = config::USER_ID;
+        $params['productid'] = config::ProductIdS[$card_type][$amount];
+        $params['price'] = $amount;
+        $params['num'] = 1;
+        $params['mobile'] = $phone;
+        $params['spordertime'] = date("YmdHis");
+        $params['sporderid'] = $order_sn;
+        $params['back_url'] = config::NOTIFY_URL;
+        $params['paytype'] = config::operator[$card_type];
+
+        return $params;
+    }
+
+    public function add($card_no, $card_type, $amount, $params, &$net_errno = 0): array
+    {
+        $order_sn = $params['order_sn'];
+        $params = $this->req_params($card_no, $amount, $card_type, $order_sn);
+
+        $sign = $this->sign($params);
+        $params['sign'] = $sign;
+
+        $resp = http_request(config::ORDER_URL, $params, 'POST', false, config::ExtHeaders, $net_errno);
+
+        if (empty($resp)) {
+            return [false, '网络错误', true];
+        }
+        else
+        {
+            Log::record($resp, Log::DEBUG);
+            $resp = $this->xmlToArray($resp);
+            if (empty($resp)) {
+                return [false, '网络错误', true];
+            }
+
+            $resultno = $resp['resultno'];
+            if (in_array($resultno, ['0', '2'], true)) {
+                return [true, $resp['orderid'], false];
+            } elseif (in_array($resultno, config::ERR_NOS, true)) {
+                return [false, $resultno, false];
+            } elseif ($resultno === '9999' || $resultno === '5006') {
+                $net_errno = "HTTP-{$resultno}";
+                return [false, $resultno, true];
+            } else {
+                $err = 998;
+                $net_errno = "HTTP-{$err}";
+                return [false, $resultno, true];
+            }
+        }
+    }
+
+    public function query($refill_info): array
+    {
+        $params['userid'] = config::USER_ID;
+        $params['sporderid'] = $refill_info['order_sn'];
+        $key = config::KEY;
+        $content = "userid={$params['userid']}&sporderid={$params['sporderid']}&key={$key}";
+        $params['sign'] = md5($content);
+
+        $resp = http_request(config::QUERY_URL, $params, 'POST', false, config::ExtHeaders);
+
+        if (empty($resp)) {
+            return [false, '网络错误', ''];
+        }
+        else
+        {
+            Log::record($resp, Log::DEBUG);
+            $resp = $this->xmlToArray($resp);
+            if (empty($resp))
+            {
+                return [false, '网络错误', ''];
+            }
+            else
+            {
+                $official_sn = $resp['remark1'] ?? '';
+                $ch_trade_no = $resp['orderid'] ?? '';
+
+                $resultno = $resp['resultno'];
+                if ($resultno === '1') {
+                    Model('refill_order')->edit($refill_info['order_id'], ['official_sn' => $official_sn,'ch_trade_no' => $ch_trade_no]);
+                    $order_state = ORDER_STATE_SUCCESS;
+                } elseif ($resultno === '9') {
+                    Model('refill_order')->edit($refill_info['order_id'], ['ch_trade_no' => $ch_trade_no]);
+                    $order_state = ORDER_STATE_CANCEL;
+                } elseif ($resultno === '5007' && (time() - $refill_info['commit_time'] > 600)) {
+                    $order_state = ORDER_STATE_NOEXIST;
+                } else {
+                    $order_state = ORDER_STATE_SEND;
+                }
+
+                return [true, $order_state, $official_sn];
+            }
+        }
+    }
+
+    public function balance(): array
+    {
+        $params['userid'] = config::USER_ID;
+        $key = config::KEY;
+        $content = "userid={$params['userid']}&key={$key}";
+        $params['sign'] = md5($content);
+
+        $resp = http_request(config::BALANCE_URL, $params, 'POST', false, config::ExtHeaders);
+
+        if (empty($resp)) {
+            return [false, '网络错误'];
+        }
+        else
+        {
+            Log::record($resp, Log::DEBUG);
+            $resp = $this->xmlToArray($resp);
+            if (empty($resp)) {
+                return [false, '网络错误'];
+            } elseif ($resp['resultno'] === '1') {
+                return [true, $resp['balance']];
+            } else {
+                return [false, $resp['resultno']];
+            }
+        }
+    }
+
+    private function sign($params): string
+    {
+        $userid = config::USER_ID;
+        $key = config::KEY;
+        $content = "userid={$userid}&productid={$params['productid']}&price={$params['price']}&num={$params['num']}&mobile={$params['mobile']}&spordertime={$params['spordertime']}";
+        $content .= "&sporderid={$params['sporderid']}&key={$key}";
+        return md5($content);
+    }
+
+    public function xmlToArray($xml)
+    {
+        $replace_str = str_replace(' ','','encoding="gb2312"');
+        $xml = mb_convert_encoding($xml,"UTF-8","gb2312");
+        $xml = str_replace($replace_str, "encoding='utf-8'", $xml);
+        return refill\util::xmlToArray($xml);
+    }
+}

+ 38 - 0
helper/refill/api/xyz/hengyeshi_sec/config.php

@@ -0,0 +1,38 @@
+<?php
+
+
+namespace refill\hengyeshi_sec;
+
+use mtopcard;
+class config
+{
+    const ORDER_URL = 'http://1.94.31.238:9086/onlinepay.do';
+    const QUERY_URL= 'http://1.94.31.238:9086/searchpay.do';
+    const BALANCE_URL= 'http://1.94.31.238:9086/searchbalance.do';
+    const USER_ID= '10002746';
+    const KEY = 'Zz5SQ2Gw4bAhJ46fChSne3GwxS36Ccnk';
+    const NOTIFY_URL = BASE_SITE_URL . "/mobile/callback/refill_hengyeshi_sec.php";
+    const operator = [
+        mtopcard\ChinaMobileCard  => 'yd',
+        mtopcard\ChinaUnicomCard  => 'lt',
+        mtopcard\ChinaTelecomCard => 'dx'
+    ];
+    const ERR_NOS = [
+        '5001', '5002', '5003', '5004', '5005', '5008', '5009', '5010', '5011', '5012', '7001'
+    ];
+    const ExtHeaders = ['Content-Type:application/x-www-form-urlencoded;'];
+
+    const ProductIdS = [
+        mtopcard\ChinaMobileCard => [
+            50 => '30000000909',
+            100 => '30000000910',
+            200 => '30000000911'
+        ],
+        mtopcard\ChinaUnicomCard => [
+
+        ],
+        mtopcard\ChinaTelecomCard => [
+
+        ],
+    ];
+}

+ 24 - 0
helper/refill/api/xyz/huifen_fast_sec/API.MD

@@ -0,0 +1,24 @@
+
+## 荟分快充2号
+
+### 接口地址:
+- 下单地址:https://hfx.vipsave.cn/hf/api/procuder/order/submit
+- 订单状态查询地址:https://hfx.vipsave.cn/hf/api/procuder/order/queryOrderStatus
+- 余额查询地址:https://hfx.vipsave.cn/hf/api/procuder/order/queryBalanceAmt
+
+### 后台:
+- https://hfadmin.vipsave.cn/hf-pos-admin-html/#/login
+- 账号:guoyan
+- 密码:guoyan6688
+
+### 对接文档
+- https://www.showdoc.com.cn/posProducer/7417894866479018
+- 访问密码:886886
+
+### 账户信息:
+- 生产合作方编号:guoyan
+- 秘钥:7pMNzvrCcaa8niMBG9lbZkooSh2DkGvm
+
+## 店铺
+- 账号:huifen_fast_sec
+- 密码:huifen_fast_sec67890

+ 40 - 0
helper/refill/api/xyz/huifen_fast_sec/RefillCallBack.php

@@ -0,0 +1,40 @@
+<?php
+namespace refill\huifen_fast_sec;
+
+require_once(BASE_HELPER_RAPI_PATH . '/huifen_fast_sec/config.php');
+
+use refill;
+
+class RefillCallBack implements refill\IRefillCallBack
+{
+    public function verify($params): bool
+    {
+        $sign = config::sign($params, ['sign']);
+        if ($params['sign'] == $sign) {
+            return true;
+        } else {
+            return false;
+        }
+    }
+
+    public function notify($params): array
+    {
+        $status = intval($params['orderStatus']);
+        $order_sn = $params['orderNo'];
+        $order_info = Model('vr_order')->getOrderInfoForNotify(['order_sn' => $order_sn]);
+        if (empty($order_info)) {
+            return [false, false, false, false, ''];
+        }
+
+        $order_id = $order_info['order_id'];
+        if ($status === 20) {
+            $official_sn = $params['operatorSerialNo'];
+            Model('refill_order')->edit($order_id, ['official_sn' => $official_sn]);
+            return [$order_id, true, false, true, $official_sn];
+        } elseif ($status === 40) {
+            return [$order_id, false, true, true, ''];
+        } else {
+            return [$order_id, false, false, false, ''];
+        }
+    }
+}

+ 154 - 0
helper/refill/api/xyz/huifen_fast_sec/RefillPhone.php

@@ -0,0 +1,154 @@
+<?php
+
+namespace refill\huifen_fast_sec;
+
+require_once(BASE_HELPER_RAPI_PATH . '/huifen_fast_sec/config.php');
+
+use Exception;
+use refill;
+use Log;
+
+class RefillPhone extends refill\IRefillPhone
+{
+    public function __construct($cfgs)
+    {
+        parent::__construct($cfgs);
+    }
+
+    /**
+     * @throws Exception
+     */
+    private function req_params(int $card_no, int $card_type, string $order_sn, int $amount): array
+    {
+        $operatorName = config::operator[$card_type] ?? false;
+        if($operatorName === false) {
+            return [];
+        }
+
+        $params['partnerNo'] = config::PARTNER_NO;
+        $params['productNo'] = $amount;
+        $params['orderNo'] = $order_sn;
+        $params['productQty'] = 1;
+        $params['operatorName'] = $operatorName;
+        $params['accountNo'] = $card_no;
+        return $params;
+    }
+
+    public function add($card_no, $card_type, $amount, $params, &$net_errno = 0): array
+    {
+        $params = $this->req_params($card_no, $card_type, $params['order_sn'], $amount);
+        if(empty($params)) {
+            return [false, '参数错误', false];
+        }
+
+        $sign = config::sign($params);
+        $params['sign'] = $sign;
+
+        $params = json_encode($params);
+        $resp = http_post_data(config::ORDER_URL, $params, config::ExtHeaders, $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];
+            }
+
+            $code = intval($resp['code']);
+            if ($code === 200) {
+                return [true, '', false];
+            } elseif (in_array($code, config::ERR_NOS, true)) { //const ERR_NOS = [500, 50001, 50003, 50005];
+                return [false, $resp['message'], false];
+            } elseif (in_array($code, config::EXP_NOS, true)) {
+                $net_errno = "HTTP-$code";
+                return [false, $resp['message'], true];
+            } else {
+                $err = 998;
+                $net_errno = "HTTP-$err";
+                return [false, $resp['message'], true];
+            }
+        }
+    }
+
+    public function query($refill_info): array
+    {
+        $params['partnerNo'] = config::PARTNER_NO;
+        $params['orderNo'] = $refill_info['order_sn'];
+        $sign = config::sign($params);
+        $params['sign'] = $sign;
+
+        $params = json_encode($params);
+        $resp = http_post_data(config::QUERY_URL, $params, config::ExtHeaders);
+        if (empty($resp)) {
+            return [false, '网络错误', ''];
+        }
+        else
+        {
+            Log::record($resp, Log::DEBUG);
+
+            $resp = json_decode($resp, true);
+            if (empty($resp)) {
+                return [false, '网络错误', ''];
+            }
+
+            $code = intval($resp['code']);
+            if ($code === 200)
+            {
+                $offical_sn = '';
+                $status = intval($resp['data']['orderStatus']);
+
+                if ($status === 20) {
+                    $offical_sn = $resp['data']['operatorSerialNo'];
+                    Model('refill_order')->edit($refill_info['order_id'], ['official_sn' => $offical_sn]);
+                    $order_state = ORDER_STATE_SUCCESS;
+                } elseif ($status === 40) {
+                    $order_state = ORDER_STATE_CANCEL;
+                } elseif ($status === 10) {
+                    $order_state = ORDER_STATE_SEND;
+                } else {
+                    return [false, $resp['data']['orderStatusDesc'], $offical_sn];
+                }
+
+                return [true, $order_state, $offical_sn];
+            }
+            else
+            {
+                return [false, $resp['message'], ''];
+            }
+        }
+    }
+
+    public function balance(): array
+    {
+        $params['partnerNo'] = config::PARTNER_NO;
+
+        $sign = config::sign($params);
+        $params['sign'] = $sign;
+
+        $params = json_encode($params);
+        $resp = http_post_data(config::BALANCE_URL, $params, config::ExtHeaders);
+        if (empty($resp)) {
+            return [false, '网络错误'];
+        }
+        else
+        {
+            Log::record($resp, Log::DEBUG);
+
+            $resp = json_decode($resp, true);
+            if (empty($resp)) {
+                return [false, '网络错误'];
+            }
+
+            $code = intval($resp['code']);
+            if ($code === 200) {
+                return [true, $resp['data']['balanceAmt']];
+            } else {
+                return [false, $resp['message']];
+            }
+        }
+    }
+}

+ 50 - 0
helper/refill/api/xyz/huifen_fast_sec/config.php

@@ -0,0 +1,50 @@
+<?php
+namespace refill\huifen_fast_sec;
+
+use mtopcard;
+class config
+{
+    const ORDER_URL = 'https://hfx.vipsave.cn/hf/api/procuder/order/submit';
+    const QUERY_URL = 'https://hfx.vipsave.cn/hf/api/procuder/order/queryOrderStatus';
+    const BALANCE_URL = 'https://hfx.vipsave.cn/hf/api/procuder/order/queryBalanceAmt';
+    const PARTNER_NO = 'guoyan';
+    const SECRET_KEY = '7pMNzvrCcaa8niMBG9lbZkooSh2DkGvm';
+
+    const NOTIFY_URL = BASE_SITE_URL . "/mobile/callback/refill_huifen_fast_sec.php";
+    const ExtHeaders = ['Content-Type: application/json;charset=UTF-8'];
+
+    const ERR_NOS = [500, 50001, 50003, 50005];
+    const EXP_NOS = [50004, 50006, 50009];
+    const operator = [
+        mtopcard\ChinaMobileCard  => 'YD',
+        mtopcard\ChinaUnicomCard  => 'LT',
+        mtopcard\ChinaTelecomCard => 'DX'
+    ];
+
+    public static function sign(array $params, array $ignore = []): string
+    {
+        ksort($params);
+        $content = '';
+        foreach ($params as $key => $value)
+        {
+            if (in_array($key, $ignore)) {
+                continue;
+            }
+            if(self::check_empty($value) === false) {
+                $content .= "$key=$value&";
+            }
+        }
+        $content .= "secretKey=" . config::SECRET_KEY;
+        return strtoupper(md5($content));
+    }
+
+    public static function check_empty($value): bool
+    {
+        if (!isset($value))
+            return true;
+        if (trim($value) === "null")
+            return true;
+
+        return false;
+    }
+}

BIN
helper/refill/api/xyz/meixu/code_2024.5.28.xlsx


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

@@ -44,10 +44,10 @@ class config
             500 => 30000001588,
         ],
         mtopcard\ChinaTelecomCard => [
-            10 => 30000003442,
-            20 => 30000003443,
-            30 => 30000003444,
-            50 => 30000003445,
+            10 => 100017,
+            20 => 100018,
+            30 => 100019,
+            50 => 100020,
             100 => 100021,
             200 => 100022,
             300 => 100023,

BIN
helper/refill/api/xyz/meixu_fs/20240613.code.xlsx


+ 31 - 5
helper/refill/api/xyz/meixu_fs/config.php

@@ -69,6 +69,7 @@ class config
             ],
             //江苏
             10 => [
+                30 => 30000002032,
                 50 => 30000002033,
                 100 => 30000002034,
                 200 => 30000002035,
@@ -82,6 +83,28 @@ class config
                 100 => 100165,
                 200 => 100166,
             ],
+            //贵州
+            24 => [
+                10 => 30000001589,
+                20 => 30000001590,
+                30 => 30000001591,
+                50 => 30000001592,
+                100 => 30000001593,
+            ],
+            //内蒙古
+            5 => [
+                10 => 100217,
+                20 => 100218,
+                30 => 100219,
+                50 => 100220,
+            ],
+            //山东
+            15 => [
+                10 => 100129,
+                20 => 100130,
+                30 => 100131,
+                50 => 100132,
+            ],
         ],
         mtopcard\ChinaUnicomCard => [
         ],
@@ -113,12 +136,15 @@ class config
 
     const Price = [
         //移动
-        "4-10-6" => 9.708, "4-20-6" => 19.416, "4-30-6" => 29.124, "4-50-6" => 48.54, "4-100-6" => 97.08, "4-200-6" => 194.16, "4-300-6" => 291.24, "4-500-6" => 485.4,//辽宁 6
-        "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-13" => 9.973, "4-20-13" => 19.946, "4-30-13" => 29.919, "4-50-13" => 49.865, "4-100-13" => 99.73, "4-200-13" => 199.46, "4-300-13" => 299.19, "4-500-13" => 498.65,//福建 13
-        "4-10-29" => 9.888, "4-20-29" => 19.776, "4-30-29" => 29.664, "4-50-29" => 49.44, "4-100-29" => 98.88, "4-200-29" => 197.76, "4-300-29" => 296.64, "4-500-29" => 494.4,//青海 29
-        "4-50-10" => 49.85, "4-100-10" => 99.7, "4-200-10" => 199.4,//江苏 10
+        "4-10-6" => 9.64, "4-20-6" => 19.28, "4-30-6" => 28.92, "4-50-6" => 48.2, "4-100-6" => 96.4, "4-200-6" => 192.8, "4-300-6" => 289.2, "4-500-6" => 482,//辽宁 6
+        "4-30-19" => 29.994, "4-50-19" => 50.55, "4-100-19" => 101.1, "4-200-19" => 202.2, "4-300-19" => 303.3, "4-500-19" => 505.5,//广东 19
+        "4-10-13" => 10.145, "4-20-13" => 20.29, "4-30-13" => 30.435, "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-29" => 9.84, "4-20-29" => 19.68, "4-30-29" => 29.52, "4-50-29" => 49.2, "4-100-29" => 98.4, "4-200-29" => 196.8, "4-300-29" => 295.2, "4-500-29" => 492,//青海 29
+        "4-30-10" => 30.9, "4-50-10" => 50.6, "4-100-10" => 100.25, "4-200-10" => 200.5,//江苏 10
         "4-10-8" => 9.988, "4-20-8" => 19.976, "4-30-8" => 29.964, "4-50-8" => 49.94, "4-100-8" => 99.88, "4-200-8" => 199.76,//黑龙江 8
+        "4-10-24" => 10.08, "4-20-24" => 20.16, "4-30-24" => 30.24, "4-50-24" => 50, "4-100-24" => 100,//贵州 24
+        "4-10-5" => 10.21, "4-20-5" => 20.42, "4-30-5" => 30.63, "4-50-5" => 50.55,//内蒙古 5
+        "4-10-15" => 10.51, "4-20-15" => 20.62, "4-30-15" => 30.63, "4-50-15" => 50.65,//山东 15
 
         //电信
         "4-10-23" => 10.21, "4-20-23" => 20.22, "4-30-23" => 30.24, "4-50-23" => 50.15, "4-100-23" => 100.3, "4-200-23" => 200.6, "4-300-23" => 300.9, "4-500-23" => 501.5,//四川 6

+ 7 - 2
helper/refill/api/xyz/yiqiandq/API.MD

@@ -1,7 +1,7 @@
 
 ## 壹谦(电渠)
 
-- 商户号:M00631eKXy
+- 商户号:100604
 - 登陆密码 :SJ5iHpH7
 - MD5KEY :hGcGrZQwbBIbtHqy2BSqu8YxiMXuDM9w
 - 接口文档地址: http://118.31.46.58:8080/doc/api.html
@@ -10,4 +10,9 @@
 
 ## 店铺
 - 账号:yiqiandq
-- 密码:yiqiandq67890
+- 密码:yiqiandq67890
+
+2024.5.28 更新
+下单地址:http://120.55.190.198:20000/api/huafei/makeOrder
+查单地址:http://120.55.190.198:20000/api/queryOrder
+余额地址:http://120.55.190.198:20000/api/queryBalance

+ 5 - 4
helper/refill/api/xyz/yiqiandq/config.php

@@ -4,14 +4,15 @@ namespace refill\yiqiandq;
 use mtopcard;
 class config
 {
-    const ORDER_URL = 'http://118.31.46.58:8080/api/huafei/makeOrder';
-    const QUERY_URL = 'http://118.31.46.58:8080/api/queryOrder';
-    const BALANCE_URL = 'http://118.31.46.58:8080/api/queryBalance';
+    const ORDER_URL = 'http://120.55.190.198:20000/api/huafei/makeOrder';
+    const QUERY_URL = 'http://120.55.190.198:20000/api/queryOrder';
+    const BALANCE_URL = 'http://120.55.190.198:20000/api/queryBalance';
 
-    const MCH_ID = 'M00631eKXy';
+    const MCH_ID = '100604';
     const KEY = 'hGcGrZQwbBIbtHqy2BSqu8YxiMXuDM9w';
     const NOTIFY_URL = BASE_SITE_URL . "/mobile/callback/refill_yiqiandq.php";
     const operator = [
+        mtopcard\ChinaMobileCard => '移动',
         mtopcard\ChinaTelecomCard => '电信'
     ];
 }

+ 30 - 0
helper/refill/api/xyz/yuansheng_sec/API.MD

@@ -0,0 +1,30 @@
+
+## 元笙全国2号
+
+### 账号:
+- 登陆账号:福庆顺4
+- 登陆密码:fq123456
+- 商户号:10002763
+- 秘钥:tJwx2Nrh4eBeZFDEHYT2xipWHFTTf7nY
+### 下游客户注册和登录地址:
+> http://106.14.94.40:7080/
+- api接口文档地址:
+ - https://www.showdoc.com.cn/AQL666666/
+- 话费下单地址:
+ - http://106.14.94.40:9086/onlinepay.do
+- 订单主动查询地址:
+ - http://106.14.94.40:9086/searchpay.do
+- 余额查询:
+- http://106.14.94.40:9086/searchbalance.do
+## 店铺
+- 账号:yuansheng_sec
+- 密码:yuansheng_sec67890
+
+### 折扣
+50-200 折扣97.3
+
+### 全国产品编码
+101688 全国移动话费50
+101689 全国移动话费100
+101690 全国移动话费200
+

+ 49 - 0
helper/refill/api/xyz/yuansheng_sec/RefillCallBack.php

@@ -0,0 +1,49 @@
+<?php
+namespace refill\yuansheng_sec;
+
+require_once(BASE_HELPER_RAPI_PATH . '/yuansheng_sec/config.php');
+
+use refill;
+class RefillCallBack implements refill\IRefillCallBack
+{
+    public function verify($params): bool
+    {
+        $sign = $this->sign($params);
+        if ($params['sign'] == $sign) {
+            return true;
+        } else {
+            return false;
+        }
+    }
+
+    private function sign($params): string
+    {
+        $userid = config::USER_ID;
+        $key = config::KEY;
+        $content = "userid={$userid}&orderid={$params['orderid']}&sporderid={$params['sporderid']}&merchantsubmittime={$params['merchantsubmittime']}";
+        $content .= "&resultno={$params['resultno']}&key={$key}";
+        return strtoupper(md5($content));
+    }
+
+    public function notify($params): array
+    {
+        $status = intval($params['resultno']);
+        $order_sn = $params['sporderid'];
+        $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) {
+            $official_sn = strtolower($params['remark1']) == 'null' ? '' : $params['remark1'];
+            $data['official_sn'] = $official_sn;
+            Model('refill_order')->edit($order_id, $data);
+            return [$order_id, true, false, true, $official_sn];
+        } elseif ($status === 9) {
+            return [$order_id, false, true, true, ''];
+        } else {
+            return [$order_id, false, false, false, ''];
+        }
+    }
+}

+ 154 - 0
helper/refill/api/xyz/yuansheng_sec/RefillPhone.php

@@ -0,0 +1,154 @@
+<?php
+namespace refill\yuansheng_sec;
+
+require_once(BASE_HELPER_RAPI_PATH . '/yuansheng_sec/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, $card_type, string $order_sn): array
+    {
+        $params['userid'] = config::USER_ID;
+        $params['productid'] = config::ProductIdS[$card_type][$amount];
+        $params['price'] = $amount;
+        $params['num'] = 1;
+        $params['mobile'] = $phone;
+        $params['spordertime'] = date("YmdHis");
+        $params['sporderid'] = $order_sn;
+        $params['back_url'] = config::NOTIFY_URL;
+        $params['paytype'] = config::operator[$card_type];
+
+        return $params;
+    }
+
+    public function add($card_no, $card_type, $amount, $params, &$net_errno = 0): array
+    {
+        $order_sn = $params['order_sn'];
+        $params = $this->req_params($card_no, $amount, $card_type, $order_sn);
+
+        $sign = $this->sign($params);
+        $params['sign'] = $sign;
+
+        $resp = http_request(config::ORDER_URL, $params, 'POST', false, config::ExtHeaders, $net_errno);
+
+        if (empty($resp)) {
+            return [false, '网络错误', true];
+        }
+        else
+        {
+            Log::record($resp, Log::DEBUG);
+            $resp = $this->xmlToArray($resp);
+            if (empty($resp)) {
+                return [false, '网络错误', true];
+            }
+
+            $resultno = $resp['resultno'];
+            if (in_array($resultno, ['0', '2'], true)) {
+                return [true, $resp['orderid'], false];
+            } elseif (in_array($resultno, config::ERR_NOS, true)) {
+                return [false, $resultno, false];
+            } elseif ($resultno === '9999' || $resultno === '5006') {
+                $net_errno = "HTTP-{$resultno}";
+                return [false, $resultno, true];
+            } else {
+                //未知结果码
+                $err = 998;
+                $net_errno = "HTTP-{$err}";
+                return [false, $resultno, true];
+            }
+        }
+    }
+
+    public function query($refill_info): array
+    {
+        $params['userid'] = config::USER_ID;
+        $params['sporderid'] = $refill_info['order_sn'];
+        $key = config::KEY;
+        $content = "userid={$params['userid']}&sporderid={$params['sporderid']}&key={$key}";
+        $params['sign'] = strtoupper(md5($content));
+
+        $resp = http_request(config::QUERY_URL, $params, 'POST', false, config::ExtHeaders);
+
+        if (empty($resp)) {
+            return [false, '网络错误', ''];
+        }
+        else
+        {
+            Log::record($resp, Log::DEBUG);
+            $resp = $this->xmlToArray($resp);
+            if (empty($resp))
+            {
+                return [false, '网络错误', ''];
+            }
+            else
+            {
+                $official_sn = !empty($resp['remark1']) ? $resp['remark1'] : '';
+
+                $resultno = $resp['resultno'];
+                if ($resultno === '1') {
+                    $updata['official_sn'] = $official_sn;
+                    Model('refill_order')->edit($refill_info['order_id'], $updata);
+                    $order_state = ORDER_STATE_SUCCESS;
+                } elseif ($resultno === '9') {
+                    $order_state = ORDER_STATE_CANCEL;
+                } elseif ($resultno === '5007' && (time() - $refill_info['commit_time'] > 600)) {
+                    $order_state = ORDER_STATE_NOEXIST;
+                } else {
+                    $order_state = ORDER_STATE_SEND;
+                }
+
+                return [true, $order_state, $official_sn];
+            }
+        }
+    }
+
+    public function balance(): array
+    {
+        $params['userid'] = config::USER_ID;
+        $key = config::KEY;
+        $content = "userid={$params['userid']}&key={$key}";
+        $params['sign'] = strtoupper(md5($content));
+
+        $resp = http_request(config::BALANCE_URL, $params, 'POST', false, config::ExtHeaders);
+
+        if (empty($resp)) {
+            return [false, '网络错误'];
+        }
+        else
+        {
+            Log::record($resp, Log::DEBUG);
+            $resp = $this->xmlToArray($resp);
+            if (empty($resp)) {
+                return [false, '网络错误'];
+            } elseif ($resp['resultno'] === '1') {
+                return [true, $resp['balance']];
+            } else {
+                return [false, $resp['resultno']];
+            }
+        }
+    }
+
+    private function sign($params): string
+    {
+        $userid = config::USER_ID;
+        $key = config::KEY;
+        $content = "userid={$userid}&productid={$params['productid']}&price={$params['price']}&num={$params['num']}&mobile={$params['mobile']}&spordertime={$params['spordertime']}";
+        $content .= "&sporderid={$params['sporderid']}&key={$key}";
+        return strtoupper(md5($content));
+    }
+
+    public function xmlToArray($xml)
+    {
+        $replace_str = str_replace(' ','','encoding="gb2312"');
+        $xml = mb_convert_encoding($xml,"UTF-8","gb2312");
+        $xml = str_replace($replace_str, "encoding='utf-8'", $xml);
+        return refill\util::xmlToArray($xml);
+    }
+}

+ 41 - 0
helper/refill/api/xyz/yuansheng_sec/config.php

@@ -0,0 +1,41 @@
+<?php
+namespace refill\yuansheng_sec;
+
+use mtopcard;
+class config
+{
+    const ORDER_URL = 'http://106.14.94.40:9086/onlinepay.do';
+    const QUERY_URL= 'http://106.14.94.40:9086/searchpay.do';
+    const BALANCE_URL = 'http://106.14.94.40:9086/searchbalance.do';
+
+    const USER_ID= '10002763';
+    const KEY = 'tJwx2Nrh4eBeZFDEHYT2xipWHFTTf7nY';
+    const NOTIFY_URL = BASE_SITE_URL . "/mobile/callback/refill_yuansheng_sec.php";
+
+    const operator = [
+        mtopcard\ChinaMobileCard  => 'yd',
+        mtopcard\ChinaUnicomCard  => 'lt',
+        mtopcard\ChinaTelecomCard => 'dx'
+    ];
+    const ERR_NOS = [
+        '5001', '5002', '5003', '5004', '5005', '5008', '5009', '5010', '5011', '5012', '7001'
+    ];
+    const ExtHeaders = ['Content-Type:application/x-www-form-urlencoded;'];
+
+    const ProductIdS = [
+        mtopcard\ChinaMobileCard =>
+            [
+                50 => '101688',
+                100 => '101689',
+                200 => '101690'
+            ],
+        mtopcard\ChinaUnicomCard =>
+            [
+
+            ],
+        mtopcard\ChinaTelecomCard =>
+            [
+
+            ]
+    ];
+}

+ 33 - 0
helper/refill/api/yl/gudelake/API.MD

@@ -0,0 +1,33 @@
+## 古得拉克(普充)
+
+### 正式环境:
+- 话费下单地址:http://8.136.126.37:16188/plat/api/hf/submitorder
+- 查询地址:http://8.136.126.37:16188/plat/api/queryorder
+- 查询余额地址:http://8.136.126.37:16188/plat/api/querybalance
+
+- 客户端地址:http://8.136.126.37:16188/plat/login
+- 账号:bjfqs
+- 密码:123456
+- 客户ID:100007
+- 密钥:d81ac72feaa3497f9344266cf1b8dc8b
+
+### 对接文档地址:
+> https://docs.qq.com/doc/DWkV1VkxQVk13eEtQ
+
+### 店铺账号
+- gudelake
+- gudelake67890
+### 产品编码
+名称 编码
+全国移动200元 1000200
+全国移动100元 1000100
+全国移动50元 1000050
+
+全国联通200元 2000200
+全国联通100元 2000100
+全国联通50元 2000050
+全国联通30元 2000030
+
+全国电信50元 3000050
+全国电信100元 3000100
+全国电信200元 3000200

+ 52 - 0
helper/refill/api/yl/gudelake/RefillCallBack.php

@@ -0,0 +1,52 @@
+<?php
+namespace refill\gudelake;
+
+require_once(BASE_HELPER_RAPI_PATH . '/gudelake/config.php');
+
+use refill;
+class RefillCallBack implements refill\IRefillCallBack
+{
+    public function verify($params): bool
+    {
+        $sign = $this->sign($params);
+        if ($params['szVerifyString'] == $sign) {
+            return true;
+        } else {
+            return false;
+        }
+    }
+
+    private function sign($params)
+    {
+        $userid = config::USER_ID;
+        $key = config::KEY;
+        $content = "szAgentId={$userid}&szOrderId={$params['szOrderId']}&szPhoneNum={$params['szPhoneNum']}&nDemo={$params['nDemo']}&fSalePrice={$params['fSalePrice']}";
+        $content .= "&nFlag={$params['nFlag']}&szKey={$key}";
+        return md5($content);
+    }
+
+    public function notify($params)
+    {
+        $status = intval($params['nFlag']);
+        $order_sn = $params['szOrderId'];
+        $order_info = Model('vr_order')->getOrderInfoForNotify(['order_sn' => $order_sn]);
+        if (empty($order_info)) {
+            return [false, false, false, false, ''];
+        }
+        $order_id = $order_info['order_id'];
+
+        if ($status === 2) {
+            $official_sn = strtolower($params['szRtnMsg']) == 'null' ? '' : $params['szRtnMsg'];
+
+            $data['official_sn'] = $official_sn;
+            Model('refill_order')->edit($order_id, $data);
+            return [$order_id, true, false, true, $official_sn];
+        }
+        elseif ($status === 3) {
+            return [$order_id, false, true, true, ''];
+        }
+        else {
+            return [$order_id, false, false, false, ''];
+        }
+    }
+}

+ 146 - 0
helper/refill/api/yl/gudelake/RefillPhone.php

@@ -0,0 +1,146 @@
+<?php
+
+namespace refill\gudelake;
+
+require_once(BASE_HELPER_RAPI_PATH . '/gudelake/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, int $card_type, string $order_sn)
+    {
+        $params['szAgentId'] = config::USER_ID;
+        $params['szOrderId'] = $order_sn;
+        $params['szPhoneNum'] = $phone;
+        $params['nMoney'] = $amount;
+        $params['nSortType'] = config::operator[$card_type];
+        $params['szProductId'] = config::Product[$card_type][$amount];
+        $params['nProductClass'] = 1;
+        $params['nProductType'] = 1;
+        $params['szTimeStamp'] = date("Y-m-d H:i:s");
+        $params['szNotifyUrl'] = config::NOTIFY_URL;
+        return $params;
+    }
+
+    public function add($card_no, $card_type, $amount, $params,&$net_errno = 0)
+    {
+        $order_sn = $params['order_sn'];
+        $params = $this->req_params($card_no, $amount, $card_type, $order_sn);
+
+        $sign = $this->sign($params);
+        $params['szVerifyString'] = $sign;
+
+        $resp = http_request(config::ORDER_URL, $params, 'POST', false, config::ExtHeaders, $net_errno);
+
+        if (empty($resp)) {
+            return [false, '网络错误', true];
+        }
+        else
+        {
+            Log::record($resp, Log::DEBUG);
+            $resp = json_decode($resp, true);
+
+            $nRtn = $resp['nRtn'];
+            if (empty($resp)) {
+                return [false, '网络错误', true];
+            } elseif ($nRtn === 0) {
+                return [true, '', false];
+            } elseif (in_array($nRtn, config::ERR_NOS, true)) {
+                return [false, $resp['szRtnCode'], false];
+            } elseif (in_array($nRtn, [2050, 999], true)) {
+                $net_errno = "HTTP-{$nRtn}";
+                return [false, $resp['szRtnCode'], true];
+            } else {
+                $err = 998;
+                $net_errno = "HTTP-{$err}";
+                return [false, $resp['szRtnCode'], true];
+            }
+        }
+    }
+
+    public function query($refill_info)
+    {
+        $params['szAgentId'] = config::USER_ID;
+        $params['szOrderId'] = $refill_info['order_sn'];
+        $key = config::KEY;
+        $content = "szAgentId={$params['szAgentId']}&szOrderId={$params['szOrderId']}&szKey={$key}";
+        $params['szVerifyString'] = md5($content);
+
+        $resp = http_request(config::QUERY_URL, $params, 'POST', false, config::ExtHeaders);
+
+        if (empty($resp)) {
+            return [false, '网络错误', ''];
+        }
+        else
+        {
+            Log::record($resp, Log::DEBUG);
+            $resp = json_decode($resp, true);
+            if (empty($resp)) {
+                return [false, '网络错误', ''];
+            }
+
+            $official_sn = '';
+
+            $status = $resp['nRtn'];
+            if ($status === 5012) {
+                $official_sn = $resp['szRtnMsg'];
+
+                $updata['official_sn'] = $official_sn;
+                Model('refill_order')->edit($refill_info['order_id'], $updata);
+                $order_state = ORDER_STATE_SUCCESS;
+            } elseif ($status === 5013) {
+                $order_state = ORDER_STATE_CANCEL;
+            } elseif (in_array($status, [5011,5019],true)) {
+                $order_state = ORDER_STATE_SEND;
+            } elseif ($status === 5005 && (time() - $refill_info['commit_time'] > 300)) {
+                $order_state = ORDER_STATE_NOEXIST;
+            } else {
+                return [false, $resp['szRtnMsg'], ''];
+            }
+
+            return [true, $order_state, $official_sn];
+        }
+    }
+
+    public function balance()
+    {
+        $params['szAgentId'] = config::USER_ID;
+        $key = config::KEY;
+        $content = "szAgentId={$params['szAgentId']}&szKey={$key}";
+        $params['szVerifyString'] = md5($content);
+
+        $resp = http_request(config::BALANCE_URL, $params, 'POST', false, config::ExtHeaders);
+
+        if (empty($resp)) {
+            return [false, '网络错误'];
+        }
+        else
+        {
+            Log::record($resp, Log::DEBUG);
+            $resp = json_decode($resp, true);
+            if (empty($resp)) {
+                return [false, '网络错误'];
+            } elseif ($resp['nRtn'] === 0) {
+                return [true, $resp['fBalance']];
+            } else {
+                return [false, $resp['szRtnCode']];
+            }
+        }
+    }
+
+    private function sign($params)
+    {
+        $userid = config::USER_ID;
+        $key = config::KEY;
+        $content = "szAgentId={$userid}&szOrderId={$params['szOrderId']}&szPhoneNum={$params['szPhoneNum']}&nMoney={$params['nMoney']}&nSortType={$params['nSortType']}";
+        $content .= "&nProductClass={$params['nProductClass']}&nProductType={$params['nProductType']}&szTimeStamp={$params['szTimeStamp']}&szKey={$key}";
+        return md5($content);
+    }
+}

+ 46 - 0
helper/refill/api/yl/gudelake/config.php

@@ -0,0 +1,46 @@
+<?php
+
+
+namespace refill\gudelake;
+
+use mtopcard;
+class config
+{
+    const ORDER_URL = 'http://8.136.126.37:16188/plat/api/hf/submitorder';
+    const QUERY_URL= 'http://8.136.126.37:16188/plat/api/queryorder';
+    const BALANCE_URL = 'http://8.136.126.37:16188/plat/api/querybalance';
+
+    const USER_ID= '100007';
+    const KEY = 'd81ac72feaa3497f9344266cf1b8dc8b';
+    const NOTIFY_URL = BASE_SITE_URL . "/mobile/callback/refill_gudelake.php";
+
+    const operator = [
+        mtopcard\ChinaMobileCard  => 1,
+        mtopcard\ChinaUnicomCard  => 2,
+        mtopcard\ChinaTelecomCard => 3
+    ];
+    const ExtHeaders = ['Content-Type:application/x-www-form-urlencoded;charset=utf-8'];
+
+    const ERR_NOS = [
+        1000,1001,1003,1004,2001,2002,2003,2020,2021,1006,2030,3003
+    ];
+
+    const Product = [
+        mtopcard\ChinaMobileCard => [
+            50 => 1000050,
+            100 => 1000100,
+            200 => 1000200,
+        ],
+        mtopcard\ChinaUnicomCard => [
+            30  => 2000030,
+            50  => 2000050,
+            100 => 2000100,
+            200 => 2000200,
+        ],
+        mtopcard\ChinaTelecomCard => [
+            50 => 3000050,
+            100 => 3000100,
+            200 => 3000200,
+        ],
+    ];
+}

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

@@ -64,10 +64,10 @@ class config
     const Price = [
         //移动
         "4-10-2" => 10.28, "4-20-2" => 20.56, "4-30-2" => 30.84, "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.64, "4-20-6" => 19.28, "4-30-6" => 28.92, "4-50-6" => 48.2, "4-100-6" => 96.4, "4-200-6" => 192.8, "4-300-6" => 289.2, "4-500-6" => 482,//辽宁 6
+        "4-10-6" => 9.655, "4-20-6" => 19.31, "4-30-6" => 28.965, "4-50-6" => 48.275, "4-100-6" => 96.55, "4-200-6" => 193.1, "4-300-6" => 289.65, "4-500-6" => 482.75,//辽宁 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.85, "4-20-29" => 19.7, "4-30-29" => 29.55, "4-50-29" => 49.25, "4-100-29" => 98.5, "4-200-29" => 197, "4-300-29" => 295.5, "4-500-29" => 492.5,//青海 29
+        "4-10-29" => 9.84, "4-20-29" => 19.68, "4-30-29" => 29.52, "4-50-29" => 49.2, "4-100-29" => 98.4, "4-200-29" => 196.8, "4-300-29" => 295.2, "4-500-29" => 492,//青海 29
         "4-10-28" => 10.45, "4-20-28" => 20.74, "4-30-28" => 31.11, "4-50-28" => 50.65, "4-100-28" => 99.85, "4-200-28" => 199.7, "4-300-28" => 299.55, "4-500-28" => 499.25,//甘肃 28
         "4-10-13" => 9.965, "4-20-13" => 19.93, "4-30-13" => 29.895, "4-50-13" => 49.825, "4-100-13" => 99.65, "4-200-13" => 199.3, "4-300-13" => 298.95, "4-500-13" => 498.25,//福建 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
@@ -76,7 +76,7 @@ class config
         "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
-        "4-10-15" => 10.34, "4-20-15" => 20.54, "4-30-15" => 30.57, "4-50-15" => 50.6, "4-100-15" => 99.3, "4-200-15" => 198.6, "4-300-15" => 297.9,//山东 15
+        "4-10-15" => 10.47, "4-20-15" => 20.64, "4-30-15" => 30.66, "4-50-15" => 50.7, "4-100-15" => 99.3, "4-200-15" => 198.6, "4-300-15" => 297.9,//山东 15
         "4-10-10" => 9.945, "4-20-10" => 19.89, "4-30-10" => 30.18, "4-50-10" => 50.2, "4-100-10" => 100.2, "4-200-10" => 200.4, "4-300-10" => 300.6, "4-500-10" => 501,//江苏 10
         "4-10-11" => 9.945, "4-20-11" => 19.89, "4-30-11" => 29.835, "4-50-11" => 49.725, "4-100-11" => 99.45, "4-200-11" => 198.9, "4-300-11" => 298.35, "4-500-11" => 497.25,//浙江 11
         "4-10-17" => 9.945, "4-20-17" => 19.89, "4-30-17" => 29.835, "4-50-17" => 49.725, "4-100-17" => 99.45, "4-200-17" => 198.9, "4-300-17" => 298.35, "4-500-17" => 497.25,//湖北 17
@@ -87,7 +87,7 @@ class config
         "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.29, "4-20-27" => 20.58, "4-30-27" => 30.48, "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-31" => 10.4, "4-20-31" => 20.5,//新疆 31
-        "4-10-3" => 10.36, "4-20-3" => 20.72, "4-30-3" => 31.08, "4-50-3" => 50.4,//河北 3
+        "4-10-3" => 10.33, "4-20-3" => 20.66, "4-30-3" => 30.99, "4-50-3" => 50.4,//河北 3
         "4-10-23" => 10.31, "4-20-23" => 20.62, "4-30-23" => 30.93,//四川 23
 
         //联通
@@ -98,8 +98,8 @@ class config
         "5-20-23" => 20.08, "5-30-23" => 30.12, "5-50-23" => 50.2, "5-100-23" => 100.4, "5-200-23" => 200.8, "5-300-23" => 301.2, "5-500-23" => 502,//四川 23
         "5-10-31" => 10.22, "5-20-31" => 20.22, "5-30-31" => 30.24, "5-50-31" => 50.25, "5-100-31" => 100.3, "5-200-31" => 200.4, "5-300-31" => 300.6, "5-500-31" => 501,//新疆 31
         //电信
-        "6-10-27" => 10.16, "6-20-27" => 20.18, "6-30-27" => 30.24, "6-50-27" => 50.3, "6-100-27" => 100.45, "6-200-27" => 200.6, "6-300-27" => 300.9, "6-500-27" => 501.5,//陕西 27
-        "6-10-4" => 9.935, "6-20-4" => 19.87, "6-30-4" => 29.805, "6-50-4" => 49.675, "6-100-4" => 99.35, "6-200-4" => 198.7, "6-300-4" => 298.05, "6-500-4" => 496.75,//山西 4
+        "6-10-27" => 10.02, "6-20-27" => 20.04, "6-30-27" => 30.06, "6-50-27" => 50.1, "6-100-27" => 100.2, "6-200-27" => 200.4, "6-300-27" => 300.6, "6-500-27" => 501,//陕西 27
+        "6-10-4" => 10.16, "6-20-4" => 20.32, "6-30-4" => 30.48, "6-50-4" => 49.675, "6-100-4" => 99.35, "6-200-4" => 198.7, "6-300-4" => 298.05, "6-500-4" => 496.75,//山西 4
         "6-10-18" => 10.04, "6-20-18" => 20.08, "6-30-18" => 30.12, "6-50-18" => 50.15, "6-100-18" => 100.3, "6-200-18" => 200.6, "6-300-18" => 300.9, "6-500-18" => 501.5,//湖南 18
         "6-10-15" => 10.22, "6-20-15" => 20.24, "6-30-15" => 30.27, "6-50-15" => 50.7, "6-100-15" => 100.8, "6-200-15" => 200.4, "6-300-15" => 300.6, "6-500-15" => 501,//山东 15
         "6-10-12" => 10.21, "6-20-12" => 20.22, "6-30-12" => 30.24, "6-50-12" => 50.25, "6-100-12" => 100.5, "6-200-12" => 200.8, "6-300-12" => 301.2, "6-500-12" => 502,//安徽 12

BIN
helper/refill/api/yl/xingchuang_fs/20240603_yd_jl_nx_fj.jpg


BIN
helper/refill/api/yl/xingchuang_fs/20240614_dx_beijing.png


+ 14 - 1
helper/refill/api/yl/xingchuang_fs/API.MD

@@ -56,7 +56,7 @@
   - 天津30-200 折扣93.2
   - 湖南30-200 折扣93.2
   - 青海30-200 折扣93.2
-- 编码
+
 - 编码:
   广东移动200元  1440200
   广东移动100元  1440100
@@ -65,6 +65,19 @@
   河南移动200元  1410200
   河南移动100元  1410100
   河南移动50元   1410050
+
+  吉林移动200元	1220200
+  吉林移动100元	1220100
+  吉林移动50元	1220050
+
+  宁夏移动200元	1640200
+  宁夏移动100元	1640100
+  宁夏移动50元	1640050
+  
+  福建移动200元	1350200
+  福建移动100元	1350100
+  福建移动50元	1350050
+
 ### 2024.3.20 add
 - 电信
   甘肃电信30元    3620030

+ 22 - 1
helper/refill/api/yl/xingchuang_fs/config.php

@@ -153,6 +153,24 @@ class config
                 100 => 1420100,
                 200 => 1420200,
             ],
+            //吉林
+            7 => [
+                50  => 1220050,
+                100 => 1220100,
+                200 => 1220200,
+            ],
+            //宁夏
+            30 => [
+                50  => 1640050,
+                100 => 1640100,
+                200 => 1640200,
+            ],
+            //福建
+            13 => [
+                50  => 1350050,
+                100 => 1350100,
+                200 => 1350200,
+            ],
         ],
         mtopcard\ChinaTelecomCard => [
             //福建
@@ -302,13 +320,16 @@ class config
         "4-50-29" => 47.7, "4-100-29" => 95.4, "4-200-29" => 190.8, //青海
         "4-50-22" => 47.65, "4-100-22" => 95.3, "4-200-22" => 190.6, //重庆
         "4-50-17" => 47.7, "4-100-17" => 95.4, "4-200-17" => 190.8, //湖北
+        "4-50-7" => 47.7, "4-100-7" => 95.4, "4-200-7" => 190.8, //吉林
+        "4-50-30" => 47.7, "4-100-30" => 95.4, "4-200-30" => 190.8, //宁夏
+        "4-50-13" => 47.7, "4-100-13" => 95.4, "4-200-13" => 190.8, //福建
 
         //电信
         "6-30-13" => 28.26, "6-50-13" => 47.1, "6-100-13" => 94.2, "6-200-13" => 188.4, //福建
         "6-30-22" => 28.26, "6-50-22" => 47.1, "6-100-22" => 94.2, "6-200-22" => 188.4, //重庆
         "6-30-10" => 28.26, "6-50-10" => 47.1, "6-100-10" => 94.2, "6-200-10" => 188.4, //江苏
         "6-30-15" => 28.26, "6-50-15" => 47.1, "6-100-15" => 94.2, "6-200-15" => 188.4, //山东
-        "6-30-1" => 28.26, "6-50-1" => 47.1, "6-100-1" => 94.2, "6-200-1" => 188.4, //北京
+        "6-30-1" => 28.26, "6-50-1" => 47.5, "6-100-1" => 95, "6-200-1" => 190, //北京
         "6-30-19" => 28.5, "6-50-19" => 47.5, "6-100-19" => 95, "6-200-19" => 190, //广东
         "6-30-12" => 28.26, "6-50-12" => 47.1, "6-100-12" => 94.2, "6-200-12" => 188.4, //安徽
         "6-30-9" => 28.5, "6-50-9" => 47.5, "6-100-9" => 95, "6-200-9" => 190, //上海

+ 14 - 1
helper/refill/api/yl/yuansheng_fs/API.MD

@@ -46,4 +46,17 @@
 267294	广东电信30
 267295	广东电信50
 267296	广东电信100
-267582	广东电信200
+267582	广东电信200
+
+30000005190	陕西移动50元
+31146	陕西移动100
+311618	陕西移动200
+
+吉林移动50-200 折扣95
+333125	吉林移动50
+333126	吉林移动100
+333635	吉林移动200
+
+313619  辽宁移动200
+31354	辽宁移动100
+31353	辽宁移动50

+ 21 - 0
helper/refill/api/yl/yuansheng_fs/config.php

@@ -66,6 +66,24 @@ class config
                 100 => '327102',
                 200 => '327630'
             ],
+            //陕西
+            27 => [
+                50 => '30000005190',
+                100 => '31146',
+                200 => '311618'
+            ],
+            //吉林
+            7 => [
+                50 => '333125',
+                100 => '333126',
+                200 => '333635'
+            ],
+            //辽宁
+            6 => [
+                50 => '31353',
+                100 => '31354',
+                200 => '313619'
+            ],
         ]
     ];
 
@@ -78,5 +96,8 @@ class config
         "4-50-20" => 47.5, "4-100-20" => 95, "4-200-20" => 190,//广西 20
         "4-50-10" => 47.5, "4-100-10" => 95, "4-200-10" => 190,//江苏 10
         "4-50-30" => 47.5, "4-100-30" => 95, "4-200-30" => 190,//宁夏 30
+        "4-50-27" => 47.5, "4-100-27" => 95, "4-200-27" => 190,//陕西 27
+        "4-50-7" => 47.5, "4-100-7" => 95, "4-200-7" => 190,//吉林 7
+        "4-50-6" => 47.5, "4-100-6" => 95, "4-200-6" => 190,//辽宁 6
     ];
 }

+ 1 - 1
helper/refill/chprice_helper.php

@@ -118,7 +118,7 @@ class chprice_helper
 
             if ($effect_time > 0) {
                 $ret = $mod_price->where(['price_id' => $item['price_id']])
-                                 ->update(['cfg' => ['exp', 'new_cfg'], 'new_cfg' => '', 'effect_time' => 0]);
+                                 ->update(['cfg' => ['exp', 'new_cfg'], 'new_cfg' => '', 'update_time' => ['exp', 'effect_time'], 'effect_time' => 0]);
             }
             $tran->commit();
         }

+ 4 - 0
mobile/callback/refill_gudelake.php

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

+ 4 - 0
mobile/callback/refill_hengyeshi_sec.php

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

+ 6 - 0
mobile/callback/refill_huifen_fast_sec.php

@@ -0,0 +1,6 @@
+<?php
+$content = $_SERVER['post_content'] ?? [];
+$input = json_decode($content,true);
+refill\util::push_notify('huifen_fast_sec',$input);
+
+echo ('success');

+ 4 - 0
mobile/callback/refill_yuansheng_sec.php

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

+ 25 - 2
test/TestRefill.php

@@ -5710,8 +5710,8 @@ class TestRefill extends TestCase
     public function testyiqiandq()
     {
         $provider = $this->getProvider('yiqiandq');
-//        $resp = $provider->balance();
-        $resp = $provider->add(18074608795, 6, 10, ['order_sn' => $this->make_sn()]);
+        $resp = $provider->balance();
+//        $resp = $provider->add(18074608795, 6, 10, ['order_sn' => $this->make_sn()]);
     }
 
     public function testyiqiandq_fs()
@@ -6119,6 +6119,29 @@ class TestRefill extends TestCase
         $resp = $provider->balance();
     }
 
+    public function testhuifen_fast_sec()
+    {
+        $provider = $this->getProvider('huifen_fast_sec');
+        $resp = $provider->balance();
+    }
+
+    public function testgudelake()
+    {
+        $provider = $this->getProvider('gudelake');
+        $resp = $provider->balance();
+    }
+
+    public function testhengyeshi_sec()
+    {
+        $provider = $this->getProvider('hengyeshi_sec');
+        $resp = $provider->balance();
+    }
+
+    public function testyuansheng_sec()
+    {
+        $provider = $this->getProvider('yuansheng_sec');
+        $resp = $provider->balance();
+    }
 }