feat(merchant): 增加码速达相关功能
- 新增码速达配置选项,包括订单备注状态和售后处理状态- 实现限购数量和金额的 redis 优化处理 - 添加渠道余额获取功能 - 修改订单状态更新逻辑,支持码速达- 优化自动发卡软件设置界面
This commit is contained in:
parent
02659fcf98
commit
31259f4c18
@ -153,10 +153,16 @@ class Feedov extends Core
|
||||
$data['msg'] = $result['msg'] = $data['info'];
|
||||
}
|
||||
|
||||
if(isset($data['cost']) && $data['cost']){
|
||||
$data['channel_cost'] = $result['channel_cost'] = $data['cost'];
|
||||
}
|
||||
|
||||
$result['yes'] = 'SUCCESS';
|
||||
|
||||
$result['data'] = $data;
|
||||
|
||||
# ['yes' = success,data = array ,msg =1,s_number =32123,channel_cost = 1.2,status = 1]
|
||||
|
||||
return $result;
|
||||
}
|
||||
|
||||
@ -276,6 +282,8 @@ class Feedov extends Core
|
||||
$channel_order_id = $response['array']['data']['order_id'];
|
||||
}
|
||||
|
||||
#
|
||||
|
||||
$this->create($param['order'], $channel_order_id, $param['merchant_order'], $param['cash'], $url, $request, $response, 1, $param['account']);
|
||||
return $response['msg'];
|
||||
}
|
||||
|
@ -256,9 +256,7 @@ class kuaijiaofei extends Core
|
||||
if($stockArray){
|
||||
$request['tradeMoney']=($stockArray['price']/100)*$param['cash'];
|
||||
}
|
||||
// if($param['cash']==200){
|
||||
// $request['tradeMoney']=200;
|
||||
// }
|
||||
|
||||
$request['sign'] = $this->_sign($request,array('memberId','productId','memberOrderId','rechargeAccount','faceValue'));
|
||||
$url = $this->host . $this->api; //组装地址
|
||||
|
||||
|
250
app/channel/service/system/Xmoli.php
Normal file
250
app/channel/service/system/Xmoli.php
Normal file
@ -0,0 +1,250 @@
|
||||
<?php
|
||||
|
||||
namespace app\channel\service\system;
|
||||
|
||||
#模板
|
||||
use app\merchant\service\OrderService;
|
||||
|
||||
class Xmoli extends Core
|
||||
{
|
||||
protected $host = ''; // 主机,不设置,后台
|
||||
protected $mid = ''; // 商户id
|
||||
protected $token = ''; // 密钥
|
||||
protected $api = '';
|
||||
|
||||
# cardbuy为通用写法
|
||||
public function cardbuy($param)
|
||||
{
|
||||
$check = array
|
||||
(
|
||||
'account' => 'account',
|
||||
);
|
||||
$this->api='api.giftcard/submit';
|
||||
return $this->submit($param, $check);
|
||||
}
|
||||
|
||||
|
||||
|
||||
# 通知处理 主要返回状态 2是成功 3是失败
|
||||
# 通知处理 主要返回状态 2是成功 3是失败
|
||||
public function notify($data)
|
||||
{
|
||||
$result = array();
|
||||
$result['cash'] = 1;
|
||||
$result['status'] = $data['status'] ;
|
||||
if (isset($data['kami']) && $data['kami']['cardno']) {
|
||||
# 流水号
|
||||
$data['s_nubmer'] = $result['s_nubmer'] = $data['kami']['cardno'];
|
||||
}
|
||||
|
||||
|
||||
$result['yes'] = 'ok';
|
||||
|
||||
$result['data'] = $data;
|
||||
|
||||
return $result;
|
||||
}
|
||||
public function query($order){
|
||||
$request['appid'] = $this->mid;
|
||||
$request['api_product'] = 'query';
|
||||
$request['merchant_order_id'] =$order['order_id'];
|
||||
|
||||
$request['signature'] = $this->_sign($request);
|
||||
$url = $this->host . 'api.giftcard/query';
|
||||
$response = $this->curl('post', $url, $request);
|
||||
|
||||
$log['type'] = 'query_response';
|
||||
$log['data'] = $response;
|
||||
$log['config'] = $this->data;
|
||||
$this->log($log);
|
||||
|
||||
$array = $this->json_decode($response);
|
||||
|
||||
|
||||
|
||||
$result = array();
|
||||
|
||||
// var_dump($array);die;
|
||||
// $result['status'] = 4;
|
||||
if (isset($array['code']) && $array['code'] == '1') {
|
||||
if(isset($array['data']['status'])){
|
||||
|
||||
if ($array['data']['status'] == 2) {
|
||||
if(isset($array['data']['card'])){
|
||||
$kami = $this->decrypt_3des($array['data']['card'],$order['channel_order_id']);
|
||||
$kami = explode(',', $kami);
|
||||
$kamidata = [
|
||||
'cardno' => $kami[0],
|
||||
'cardpwd' => $kami[1],
|
||||
'expired' => $kami[2],
|
||||
|
||||
];
|
||||
|
||||
$this->upOrderResponse($kamidata,$order['merchant_order_id'],$order['response']);
|
||||
$result['status'] = 7;
|
||||
$result['kami'] = $kamidata;
|
||||
}else{
|
||||
$result['status'] = 4;
|
||||
}
|
||||
}elseif($array['data']['status'] == 3){
|
||||
$result['status'] = 3;
|
||||
}else{
|
||||
$result['status'] = 4;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
} else{
|
||||
$result['status'] = 4;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
return $result;
|
||||
}
|
||||
# 数据响应格式处理
|
||||
public function response($data)
|
||||
{
|
||||
$log['type'] = 'response';
|
||||
$log['data'] = $data;
|
||||
$log['config'] = $this->data;
|
||||
$this->log($log);
|
||||
|
||||
#以上不要做任何变动
|
||||
|
||||
|
||||
|
||||
$array = $this->json_decode($data); //响应数据为json
|
||||
#如果响应为XML格式
|
||||
// $array = (array) simplexml_load_string($data);
|
||||
|
||||
if (!$array) {
|
||||
$msg = 'error';
|
||||
} elseif (isset($array['code']) && $array['code']=='1') { //修改判断逻辑为确定提交成功即可
|
||||
# 正确
|
||||
$msg = 'ok';
|
||||
#如有其他判断以下
|
||||
// if(isset($array['cards'])){
|
||||
// $array['kami'] = array
|
||||
// (
|
||||
// 'cardno' => $array['cards'][0]['card_no'],
|
||||
// 'cardpwd' => $array['cards'][0]['card_password'],
|
||||
// 'expired' => $array['cards'][0]['expired_at'],
|
||||
//// 'value' => $array['data']['count_money'],
|
||||
// );
|
||||
// }
|
||||
} else {
|
||||
# 错误
|
||||
$msg = $array['info'] ?? 'error'; //前面message根据响应内容改成对应的错误提示
|
||||
}
|
||||
|
||||
return array
|
||||
(
|
||||
'msg' => $msg,
|
||||
'data' => $data,
|
||||
'array' => $array,
|
||||
);
|
||||
}
|
||||
|
||||
# 查询余额接口
|
||||
public function account($day)
|
||||
{
|
||||
$request['customer_id'] = $this->mid;
|
||||
$request['timestamp']=time();
|
||||
$request['sign'] = $this->_sign($request);
|
||||
$url = $this->host . 'api/customer';
|
||||
$response = $this->curl('post', $url, $request);
|
||||
$response = $this->response($response);
|
||||
|
||||
$datas = $response['array']['data'];
|
||||
if(is_array($datas) && isset($datas['balance']) && $datas['balance'] ){
|
||||
$datas['account'] = $datas['balance']; //此处为余额
|
||||
}
|
||||
|
||||
return $datas;
|
||||
}
|
||||
|
||||
|
||||
# 提交数据
|
||||
private function submit($param, $check)
|
||||
{
|
||||
#提交处理
|
||||
$param = $this->param($param, $check);
|
||||
if (is_string($param) || (is_array($param) && $param['status'] == 1)) {
|
||||
return $param;
|
||||
}
|
||||
$request = $param['detail']; //上面替换剩下的
|
||||
#结束初步
|
||||
|
||||
$request['appid']=$this->mid;
|
||||
|
||||
// $request['notify']=$this->getNotify($param['order'], 1); //回调方法默认不用改
|
||||
$request['order']=$param['order']; //我方系统订单号
|
||||
$request['proid']=$this->getGid($param['cash']); //此方法为根据面值获取产品id,如无需可注释
|
||||
$request['num']=1;
|
||||
// unset($request['cash']);
|
||||
$request['signature'] = $this->_sign($request);
|
||||
$url = $this->host . $this->api; //组装地址
|
||||
// var_dump($url);die;
|
||||
|
||||
|
||||
|
||||
|
||||
$response = $this->curl('post', $url, $request);
|
||||
$response = $this->response($response);
|
||||
// var_dump($response);die;
|
||||
$channel_order_id = '';
|
||||
|
||||
#如果出现响应有上游订单号,可以如下
|
||||
if (isset($response["array"]['data']['order'])) {
|
||||
$channel_order_id = $response["array"]['data']['order'];
|
||||
}
|
||||
|
||||
$this->create($param['order'], $channel_order_id, $param['merchant_order'], $param['cash'], $url, $request, $response, 1, $param['account']);
|
||||
return $response['msg'];
|
||||
}
|
||||
|
||||
private function _sign($request)
|
||||
{
|
||||
$request['token']=$this->token;
|
||||
ksort($request);
|
||||
$sign_string = '';
|
||||
|
||||
foreach ($request as $k => $v) {
|
||||
if (strlen($v)) {
|
||||
$sign_string .= $k . '=' . $v . '&';
|
||||
}
|
||||
}
|
||||
$sign_string = substr($sign_string, 0, -1);
|
||||
|
||||
return md5($sign_string);
|
||||
// unset($request['cash']);
|
||||
|
||||
}
|
||||
|
||||
public function upOrderResponse($kami,$merchant_order_id,$orderResponse)
|
||||
{
|
||||
$orderService = OrderService::instance();
|
||||
|
||||
$response = json_decode($orderResponse,true);
|
||||
$response['kami'] = $kami;
|
||||
$data = ['response' => json_encode($response)];
|
||||
|
||||
$orderService->db()->where(array('merchant_order_id' => $merchant_order_id))->update($data);
|
||||
}
|
||||
|
||||
#3des解密
|
||||
public function decrypt_3des($encrypted_string, $order_id) {
|
||||
// 常量定义
|
||||
|
||||
// 生成密钥
|
||||
$key = md5(md5($this->token) . $order_id);
|
||||
$key= strtolower($key);
|
||||
|
||||
// 解密
|
||||
return openssl_decrypt(base64_decode($encrypted_string), "des-ede3", $key, OPENSSL_RAW_DATA);
|
||||
}
|
||||
|
||||
}
|
@ -455,6 +455,31 @@ class Notify extends Core
|
||||
}
|
||||
}
|
||||
|
||||
# 渠道僧下卡密,主动查询
|
||||
public function xmoli()
|
||||
{
|
||||
$channelService = \app\channel\service\ChannelService::instance();
|
||||
$class = \app\merchant\service\OrderService::instance();
|
||||
$where['cid'] = 9;
|
||||
$where['status'] = 4;
|
||||
$data = $class->db()->where($where)->order('id asc')->limit(100)->select()->toArray();
|
||||
|
||||
|
||||
if ($data) {
|
||||
foreach ($data as $k => $v) {
|
||||
$class->db()->where(array('id' => $v['id']))->update(array('status' => 6));
|
||||
// var_dump($v);die;
|
||||
$result = $channelService->call('query', $v['cid'], $v);
|
||||
// var_dump($v);die;
|
||||
|
||||
$class->db()->where(array('id' => $v['id']))->update(array('status' => 4));
|
||||
if ($result['status'] == 7) {
|
||||
return $this->notify($v['order_id'], $result, false, false);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
# 渠道僧下卡密,主动查询
|
||||
public function piaopiapjinbi()
|
||||
{
|
||||
|
@ -493,6 +493,10 @@ class Merchant extends Controller
|
||||
$this->_form($this->table, 'autoCard','id', [], ['id' => $id]);
|
||||
|
||||
} else {
|
||||
// var_dump(input());die;
|
||||
// array(12) { ["id"]=> string(2) "12" ["other_param"]=> string(113) "{"maSuDa_uid":"AAHamonFAOWtbFuvBodPfaUg","maSuDa_secret_key":"cmf9467r0xpwziym","autoCardSoftware":"3","ss":"11"}" ["spm"]=> string(10) "m-68-71-74" ["open_type"]=> string(5) "modal" ["autoCardSoftware"]=> string(1) "2" ["maSuDa_uid"]=> string(24) "AAHamonFAOWtbFuvBodPfaUg" ["maSuDa_secret_key"]=> string(16) "cmf9467r0xpwziym" ["maSuDa_message_config"]=> string(1) "1" ["maSuDa_trade_buyer_pay"]=> string(2) "on" ["maSuDa_trade_memo_modified"]=> string(2) "on" ["maSuDa_trade_status"]=> string(1) "1" ["maSuDa_afterSales_status"]=> string(1) "2" }
|
||||
|
||||
// array(10) { ["id"]=> string(2) "12" ["other_param"]=> string(113) "{"maSuDa_uid":"AAHamonFAOWtbFuvBodPfaUg","maSuDa_secret_key":"cmf9467r0xpwziym","autoCardSoftware":"3","ss":"11"}" ["spm"]=> string(10) "m-68-71-74" ["open_type"]=> string(5) "modal" ["autoCardSoftware"]=> string(1) "2" ["maSuDa_uid"]=> string(24) "AAHamonFAOWtbFuvBodPfaUg" ["maSuDa_secret_key"]=> string(16) "cmf9467r0xpwziym" ["maSuDa_message_config"]=> string(1) "2" ["maSuDa_trade_status"]=> string(1) "2" ["maSuDa_afterSales_status"]=> string(1) "2" }
|
||||
$id = input('id');
|
||||
$autoCardSoftware = input('autoCardSoftware');
|
||||
|
||||
@ -511,6 +515,18 @@ class Merchant extends Controller
|
||||
#消息订阅关闭
|
||||
if(!empty(input('maSuDa_message_config')) ){
|
||||
$maSuDa_message_config = input('maSuDa_message_config');
|
||||
$other_param_arr_new['maSuDa_message_config'] = $maSuDa_message_config;
|
||||
$maSuDa_message_config_array = [];
|
||||
// if(!empty(input('maSuDa_trade_buyer_pay') )
|
||||
|
||||
}
|
||||
|
||||
if(!empty(input('maSuDa_afterSales_status')) ){
|
||||
$other_param_arr_new['maSuDa_afterSales_status'] = input('maSuDa_afterSales_status');;
|
||||
}
|
||||
|
||||
if(!empty(input('maSuDa_trade_status')) ){
|
||||
$other_param_arr_new['maSuDa_trade_status'] = input('maSuDa_trade_status');
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -60,12 +60,46 @@
|
||||
<input type="checkbox" name="maSuDa_trade_buyer_pay" lay-skin="tag" title="付款消息" >
|
||||
<input type="checkbox" name="maSuDa_trade_memo_modified" lay-skin="tag" title="订单备注变更">
|
||||
<input type="checkbox" name="maSuDa_refund_created" lay-skin="tag" title="退款创建">
|
||||
<input type="checkbox" name="maSuDa_refund_closed" lay-skin="tag" title="退款申请">
|
||||
<input type="checkbox" name="maSuDa_refund_closed" lay-skin="tag" title="退款关闭">
|
||||
</div>
|
||||
</label>
|
||||
|
||||
</div>
|
||||
|
||||
<label class="layui-form-item margin-top-20 block relative">
|
||||
<span class="color-green margin-right-10">订单备注状态</span>
|
||||
<div>
|
||||
{foreach ['1'=>'开启备注通知','2'=>'关闭备注通知'] as $k=>$v}
|
||||
<label class="think-radio">
|
||||
{if isset($maSuDa_trade_status) and $maSuDa_trade_status eq $k}
|
||||
|
||||
<input checked type="radio" name="maSuDa_trade_status" value="{$k}" lay-ignore> {$v|default='2'}
|
||||
{else}
|
||||
<input type="radio" name="maSuDa_trade_status" value="{$k}" lay-ignore> {$v|default='2'}
|
||||
{/if}
|
||||
</label>
|
||||
{/foreach}
|
||||
</div>
|
||||
<span class="color-desc">如果关闭备注通知,则码速达不会处理任何订单备注</span>
|
||||
</label>
|
||||
|
||||
<label class="layui-form-item margin-top-20 block relative">
|
||||
<span class="color-green margin-right-10">售后处理状态</span>
|
||||
<div>
|
||||
{foreach ['1'=>'开启售后处理','2'=>'关闭售后处理'] as $k=>$v}
|
||||
<label class="think-radio">
|
||||
{if isset($maSuDa_afterSales_status) and $maSuDa_afterSales_status eq $k}
|
||||
|
||||
<input checked type="radio" name="maSuDa_afterSales_status" value="{$k}" lay-ignore> {$v|default='2'}
|
||||
{else}
|
||||
<input type="radio" name="maSuDa_afterSales_status" value="{$k}" lay-ignore> {$v|default='2'}
|
||||
{/if}
|
||||
</label>
|
||||
{/foreach}
|
||||
</div>
|
||||
<span class="color-desc">如果需要处理售后,则需要订阅退款超级,退款关闭通知</span>
|
||||
</label>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
|
@ -46,7 +46,8 @@
|
||||
<label><input class="list-check-box" value='{$vo.id}' type='checkbox'></label>
|
||||
</td>-->
|
||||
<td class='text-left nowrap'>
|
||||
<span class="color-blue"><b>{$vo.name|default=''}</b></span>( <span class="color-desc">{$vo.id|default=''}</span> )
|
||||
<span class="color-blue"><b>{$vo.name|default=''}</b></span>( <span class="color-desc">{$vo.id|default=''}</span>
|
||||
)
|
||||
<br>
|
||||
{eq name='vo.status' value='0'}<span class="color-red">已禁用</span>{else}<span class="color-green">使用中</span>{/eq}
|
||||
<!--
|
||||
@ -57,30 +58,50 @@
|
||||
默认折扣:<span class="color-red">{$vo.percent|default='0.0'|raw}</span>
|
||||
</td>
|
||||
|
||||
<td class='text-left nowrap' style="display: none;">AppID:<span>{$vo.appid|default='<i class="color-desc">未录入</i>'|raw}</span><br>AppSecret:<span>{$vo.appsecret|default='<i class="color-desc">未录入</i>'|raw}</span></td>
|
||||
<td class='text-left nowrap' style="display: none;">AppID:<span>{$vo.appid|default='<i
|
||||
class="color-desc">未录入</i>'|raw}</span><br>AppSecret:<span>{$vo.appsecret|default='<i
|
||||
class="color-desc">未录入</i>'|raw}</span></td>
|
||||
|
||||
<td class='text-left nowrap'>授信余额:<span class="color-red">{$vo.credit_surplus|default='0.00'|raw}</span><br>授信额度:<span class="color-blue">{$vo.credit_total|default='0.00'|raw}</span><br>待回款:<span class="color-blue">{$vo.credit_huikuan|default='0.00'|raw}</span></td>
|
||||
<td class='text-left nowrap'>授信余额:<span
|
||||
class="color-red">{$vo.credit_surplus|default='0.00'|raw}</span><br>授信额度:<span
|
||||
class="color-blue">{$vo.credit_total|default='0.00'|raw}</span><br>待回款:<span
|
||||
class="color-blue">{$vo.credit_huikuan|default='0.00'|raw}</span></td>
|
||||
|
||||
<td class='text-left nowrap'>可用余额:<span class="color-red">{$vo.account_surplus|default='0.00'|raw}</span><br>{if $vo.account_baitiao}白条额度:<span class="color-blue">{$vo.account_baitiao|default='0.00'|raw}</span><br>{/if}累计充值:<span class="color-blue">{$vo.account_total|default='0.00'|raw}</span></td>
|
||||
<td class='text-left nowrap'>今日成功订单:<span class="color-red">{$vo.order_yes|default='0.00'|raw}</span><br>今日失败订单:<span class="color-blue">{$vo.order_no|default='0.00'|raw}</span></td>
|
||||
<td class='text-left nowrap'>可用余额:<span
|
||||
class="color-red">{$vo.account_surplus|default='0.00'|raw}</span><br>{if
|
||||
$vo.account_baitiao}白条额度:<span
|
||||
class="color-blue">{$vo.account_baitiao|default='0.00'|raw}</span><br>{/if}累计充值:<span
|
||||
class="color-blue">{$vo.account_total|default='0.00'|raw}</span></td>
|
||||
<td class='text-left nowrap'>今日成功订单:<span
|
||||
class="color-red">{$vo.order_yes|default='0.00'|raw}</span><br>今日失败订单:<span
|
||||
class="color-blue">{$vo.order_no|default='0.00'|raw}</span></td>
|
||||
<td class='text-left nowrap' style="display: none;">
|
||||
{eq name='vo.status' value='0'}<span class="color-red">已禁用</span>{else}<span class="color-green">使用中</span>{/eq} 维护时间:{$vo.opentime|default='无'}<br> <span>创建时间:{$vo.create_at|format_datetime}</span>
|
||||
{eq name='vo.status' value='0'}<span class="color-red">已禁用</span>{else}<span class="color-green">使用中</span>{/eq}
|
||||
维护时间:{$vo.opentime|default='无'}<br> <span>创建时间:{$vo.create_at|format_datetime}</span>
|
||||
</td>
|
||||
<td class='text-left nowrap'>
|
||||
|
||||
{if isset($type) and $type eq 'all'}
|
||||
|
||||
<!--{if auth("edit")}-->
|
||||
<a data-dbclick class="layui-btn layui-btn-xs" data-title="编辑商户" data-modal='{:url("edit")}?id={$vo.id}'>编 辑</a>
|
||||
<a data-dbclick class="layui-btn layui-btn-xs" data-title="编辑商户"
|
||||
data-modal='{:url("edit")}?id={$vo.id}'>编 辑</a>
|
||||
<!--{/if}-->
|
||||
<!--{if auth("state") and $vo.status eq 1}-->
|
||||
<a class="layui-btn layui-btn-xs layui-btn-danger" data-confirm="确定要禁用该商户吗?" data-action="{:url('state')}" data-value="id#{$vo.id};status#0" data-csrf="{:systoken('state')}">禁 用</a>
|
||||
<a class="layui-btn layui-btn-xs layui-btn-danger" data-confirm="确定要禁用该商户吗?"
|
||||
data-action="{:url('state')}" data-value="id#{$vo.id};status#0" data-csrf="{:systoken('state')}">禁
|
||||
用</a>
|
||||
<!-- {elseif auth("state")} -->
|
||||
<a class="layui-btn layui-btn-warm layui-btn-xs" data-confirm="确定要启用该商户吗?" data-action="{:url('state')}" data-value="id#{$vo.id};status#1" data-csrf="{:systoken('state')}">启 用</a>
|
||||
<a class="layui-btn layui-btn-warm layui-btn-xs" data-confirm="确定要启用该商户吗?"
|
||||
data-action="{:url('state')}" data-value="id#{$vo.id};status#1" data-csrf="{:systoken('state')}">启
|
||||
用</a>
|
||||
<!-- {/if} -->
|
||||
|
||||
<!--{if auth("resetapi") && !$vo.appid}-->
|
||||
<a class="layui-btn layui-btn-xs layui-btn-danger" data-confirm="一旦重置KEY接口将立刻不可使用!!!!确定要重置该商户秘钥该吗?" data-action="{:url('resetapi')}" data-value="id#{$vo.id}" data-csrf="{:systoken('resetapi')}">秘 钥</a>
|
||||
<a class="layui-btn layui-btn-xs layui-btn-danger"
|
||||
data-confirm="一旦重置KEY接口将立刻不可使用!!!!确定要重置该商户秘钥该吗?"
|
||||
data-action="{:url('resetapi')}" data-value="id#{$vo.id}" data-csrf="{:systoken('resetapi')}">秘
|
||||
钥</a>
|
||||
<!--{/if}-->
|
||||
|
||||
<!--{if auth("remove")}-->
|
||||
@ -88,54 +109,61 @@
|
||||
<a class="layui-btn layui-btn-xs layui-btn-danger" data-confirm="确认要删除该账户吗" data-action="{:url('remove')}" data-value="id#{$vo.id}" data-csrf="{:systoken('remove')}">删 除</a>
|
||||
-->
|
||||
<!--{if auth("pass")}-->
|
||||
<a class="layui-btn layui-btn-xs layui-btn-normal" data-title="【{$vo.name}】账户设置" data-modal='{:url("pass")}?id={$vo.id}' data-csrf="{:systoken('pass')}">账户设置</a>
|
||||
<a class="layui-btn layui-btn-xs layui-btn-normal" data-title="【{$vo.name}】账户设置"
|
||||
data-modal='{:url("pass")}?id={$vo.id}' data-csrf="{:systoken('pass')}">账户设置</a>
|
||||
<!--{/if}-->
|
||||
|
||||
<!--{if auth("recharge")}-->
|
||||
<a class="layui-btn layui-btn-xs layui-btn-normal" data-title="渠道设置" data-open='{:url("/merchant/product/setting")}?id={$vo.id}' data-csrf="{:systoken('recharge')}">渠道设置</a>
|
||||
<a class="layui-btn layui-btn-xs layui-btn-normal" data-title="渠道设置"
|
||||
data-open='{:url("/merchant/product/setting")}?id={$vo.id}' data-csrf="{:systoken('recharge')}">渠道设置</a>
|
||||
<!--{/if}-->
|
||||
|
||||
<a class="layui-btn layui-btn-xs layui-btn-normal" data-title="折扣设置" data-open='{:url("/merchant/percent/index")}?mid={$vo.id}' data-csrf="{:systoken('remove')}">折扣设置</a>
|
||||
<a class="layui-btn layui-btn-xs layui-btn-normal" data-title="折扣设置"
|
||||
data-open='{:url("/merchant/percent/index")}?mid={$vo.id}'
|
||||
data-csrf="{:systoken('remove')}">折扣设置</a>
|
||||
|
||||
|
||||
<!--{if auth("info")}-->
|
||||
<a class="layui-btn layui-btn-xs layui-btn-normal" data-title="查看【{$vo.name}】的商户信息" data-modal='{:url("info")}?id={$vo.id}' data-csrf="{:systoken('info')}">查看信息</a>
|
||||
<a class="layui-btn layui-btn-xs layui-btn-normal" data-title="查看【{$vo.name}】的商户信息"
|
||||
data-modal='{:url("info")}?id={$vo.id}' data-csrf="{:systoken('info')}">查看信息</a>
|
||||
<!--{/if}-->
|
||||
|
||||
<a class="layui-btn layui-btn-xs layui-btn-normal" data-title="通道" data-open='{:url("/merchant/project/index")}?mid={$vo.id}' data-csrf="{:systoken('remove')}" style="display: none;">通道</a>
|
||||
<a class="layui-btn layui-btn-xs layui-btn-normal" data-title="通道"
|
||||
data-open='{:url("/merchant/project/index")}?mid={$vo.id}' data-csrf="{:systoken('remove')}"
|
||||
style="display: none;">通道</a>
|
||||
<!--{/if}-->
|
||||
|
||||
<div class="margin-top-5">
|
||||
<!--{if auth("recharge")}-->
|
||||
<a class="layui-btn layui-btn-xs layui-btn-normal" data-title="【{$vo.name}】账户余额充值" data-modal="{:url('recharge')}?id={$vo.id}" data-csrf="{:systoken('recharge')}">资 金</a>
|
||||
<a class="layui-btn layui-btn-xs layui-btn-normal" data-title="【{$vo.name}】账户余额充值"
|
||||
data-modal="{:url('recharge')}?id={$vo.id}" data-csrf="{:systoken('recharge')}">资 金</a>
|
||||
|
||||
<a class="layui-btn layui-btn-xs layui-btn-normal" data-title="查看资金明细" data-open="{:url('/merchant/account/index')}?id={$vo.id}" data-csrf="{:systoken('recharge')}">资金明细</a>
|
||||
<a class="layui-btn layui-btn-xs layui-btn-normal" data-title="查看资金明细"
|
||||
data-open="{:url('/merchant/account/index')}?id={$vo.id}"
|
||||
data-csrf="{:systoken('recharge')}">资金明细</a>
|
||||
|
||||
<a class="layui-btn layui-btn-xs layui-btn-normal" data-title="返点设置" data-open="{:url('/merchant/rebate/index')}?mid={$vo.id}" data-csrf="{:systoken('recharge')}" style="display: none;">返点设置</a>
|
||||
<a class="layui-btn layui-btn-xs layui-btn-normal" data-title="返点设置"
|
||||
data-open="{:url('/merchant/rebate/index')}?mid={$vo.id}" data-csrf="{:systoken('recharge')}"
|
||||
style="display: none;">返点设置</a>
|
||||
<!--{/if}-->
|
||||
|
||||
<!--{if auth("recharge")}-->
|
||||
<a class="layui-btn layui-btn-xs layui-btn-normal" data-title="查看订单" data-open='{:url("/order/order/index")}?mid={$vo.id}' data-csrf="{:systoken('recharge')}">订单列表</a>
|
||||
<a class="layui-btn layui-btn-xs layui-btn-normal" data-title="查看订单"
|
||||
data-open='{:url("/order/order/index")}?mid={$vo.id}' data-csrf="{:systoken('recharge')}">订单列表</a>
|
||||
<!--{/if}-->
|
||||
|
||||
<!--{if $vo.merchant_type==7}-->
|
||||
<!-- <a class="layui-btn layui-btn-xs layui-btn-danger" data-title="任务设置" data-open='{:url("/merchant/beeTask/setting")}?id={$vo.id}' data-csrf="{:systoken('recharge')}">蜜蜂获单设置</a>-->
|
||||
<!--{/if}-->
|
||||
|
||||
<!--{if $vo.merchant_type==3 || $vo.merchant_type==4 || $vo.merchant_type==5 || $vo.merchant_type==6 || $vo.merchant_type==8 || $vo.merchant_type==9}-->
|
||||
<a class="layui-btn layui-btn-xs layui-btn-danger" data-title="映射产品编码设置" data-open='{:url("/merchant/MerchantMappingProduct/index")}?mid={$vo.id}' data-csrf="{:systoken('recharge')}">映射产品编码设置</a>
|
||||
<!--{/if}-->
|
||||
|
||||
<a class="layui-btn layui-btn-xs layui-btn-green" data-title="IP白名单设置" data-modal='{:url("ipWhite")}?id={$vo.id}' data-csrf="{:systoken('ipWhite')}">设置IP白名单</a>
|
||||
|
||||
<a class="layui-btn layui-btn-xs layui-btn-danger" data-title="商户参数设置" data-open='{:url("/merchant/MerchantParams/index")}?mid={$vo.id}' data-csrf="{:systoken('recharge')}">商户参数设置</a>
|
||||
|
||||
<!--{if $vo.kami_status==1}-->
|
||||
|
||||
<a class="layui-btn layui-btn-xs layui-btn-green" data-title="设置自动发卡软件" data-modal='{:url("autoCard")}?id={$vo.id}&other_param={$vo.other_param}' data-csrf="{:systoken('autoCard')}">设置自动发卡软件</a>
|
||||
<!--{/if}-->
|
||||
|
||||
<a class="layui-btn layui-btn-xs layui-btn-green" data-title="IP白名单设置"
|
||||
data-modal='{:url("ipWhite")}?id={$vo.id}'
|
||||
data-csrf="{:systoken('ipWhite')}">设置IP白名单</a>
|
||||
|
||||
<a class="layui-btn layui-btn-xs layui-btn-danger" data-title="商户参数设置"
|
||||
data-open='{:url("/merchant/MerchantParams/index")}?mid={$vo.id}'
|
||||
data-csrf="{:systoken('recharge')}">商户参数设置</a>
|
||||
|
||||
|
||||
<!--{if $vo.callback_repeat==3}-->
|
||||
@ -152,18 +180,48 @@
|
||||
|
||||
</div>
|
||||
|
||||
<div class="margin-top-5">
|
||||
|
||||
|
||||
<!--{if $vo.kami_status==1}-->
|
||||
|
||||
<a class="layui-btn layui-btn-xs layui-btn-green" data-title="设置自动发卡软件"
|
||||
data-modal='{:url("autoCard")}?id={$vo.id}&other_param={$vo.other_param}'
|
||||
data-csrf="{:systoken('autoCard')}">设置自动发卡软件</a>
|
||||
<!--{/if}-->
|
||||
|
||||
<!--{if $vo.merchant_type==3 || $vo.merchant_type==4 || $vo.merchant_type==5 || $vo.merchant_type==6 || $vo.merchant_type==8 || $vo.merchant_type==9}-->
|
||||
<a class="layui-btn layui-btn-xs layui-btn-danger" data-title="映射产品编码设置"
|
||||
data-open='{:url("/merchant/MerchantMappingProduct/index")}?mid={$vo.id}'
|
||||
data-csrf="{:systoken('recharge')}">映射产品编码设置</a>
|
||||
<!--{/if}-->
|
||||
|
||||
|
||||
<!--{if $vo.callback_repeat==3}-->
|
||||
<a class="layui-btn layui-btn-xs layui-btn-danger" data-csrf="{:systoken('recharge')}"
|
||||
data-open='{:url("/merchant/callbackRepeat/setting")}?id={$vo.id}'
|
||||
data-title="指定渠道开启返销">指定渠道开启返销</a>
|
||||
<!--{/if}-->
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
{else}
|
||||
|
||||
<!--{if auth("edit")}-->
|
||||
<a data-dbclick class="layui-btn layui-btn-xs" data-title="编辑商户" data-modal='{:url("edit")}?id={$vo.id}'>编 辑</a>
|
||||
<a data-dbclick class="layui-btn layui-btn-xs" data-title="编辑商户"
|
||||
data-modal='{:url("edit")}?id={$vo.id}'>编 辑</a>
|
||||
<!--{/if}-->
|
||||
<!--{if auth("state") and $vo.status eq 0}-->
|
||||
<a class="layui-btn layui-btn-xs layui-btn-warm" data-confirm="确定要恢复该商户吗?" data-action="{:url('state')}" data-value="id#{$vo.id};status#1" data-csrf="{:systoken('state')}">恢 复</a>
|
||||
<a class="layui-btn layui-btn-xs layui-btn-warm" data-confirm="确定要恢复该商户吗?"
|
||||
data-action="{:url('state')}" data-value="id#{$vo.id};status#1" data-csrf="{:systoken('state')}">恢
|
||||
复</a>
|
||||
<!--{/if}-->
|
||||
<!--{if auth("remove")}-->
|
||||
<a class="layui-btn layui-btn-xs layui-btn-danger" data-confirm="确定要永久删除此商户吗?" data-action="{:url('remove')}" data-value="id#{$vo.id}" data-csrf="{:systoken('remove')}">删 除</a>
|
||||
<a class="layui-btn layui-btn-xs layui-btn-danger" data-confirm="确定要永久删除此商户吗?"
|
||||
data-action="{:url('remove')}" data-value="id#{$vo.id}" data-csrf="{:systoken('remove')}">删
|
||||
除</a>
|
||||
<!--{/if}-->
|
||||
{/if}
|
||||
|
||||
|
@ -365,7 +365,7 @@ class Coretb extends Controller
|
||||
}else{
|
||||
# 检测是否超过限制
|
||||
$new_num = $countS + 1;
|
||||
if($new_num >=$num){
|
||||
if($new_num >$num){
|
||||
#超出,需要退款
|
||||
$tempNum=2;
|
||||
while($tempNum>0){
|
||||
@ -388,16 +388,32 @@ class Coretb extends Controller
|
||||
}
|
||||
}
|
||||
|
||||
#查询 param 中json数据 By_OpenUid 出现次数counO create_at data(Y-
|
||||
$count = OrderService::instance()->db()->where(['status'=>'2','mid'=>$this->mid])->whereBetween('create_at',[date('Y-m-d 00:00:00',time()),date('Y-m-d 23:59:59',time())])->whereLike('param',"%".$By_OpenUid."%")->count();
|
||||
# 检测是否为限购,如果为限购,则需要检测是否超过限制,如果超过限制,则需要退款,如果未超过限制,则需要发货,使用redis进行优化处理
|
||||
|
||||
if(isset($array['limitbuy_num']) || isset($array['limitbuy_amount'])){
|
||||
$redis = RedisService::getInstance();
|
||||
$redis_key = $this->merchant['id'].'_['.$By_OpenUid.']_LimitBuy';
|
||||
$data = $redis->get($redis_key);
|
||||
$n_cash = $this->input['cash']??0;
|
||||
#计算当天还有多少秒
|
||||
$remainingSeconds = 86400 - (time() + 8 * 3600) % 86400;
|
||||
|
||||
|
||||
if(!$data){
|
||||
$new_data = [
|
||||
'buy_num'=>1,
|
||||
'buy_cash'=>$n_cash
|
||||
];
|
||||
$redis->set($redis_key,$new_data,$remainingSeconds);
|
||||
}else{
|
||||
$new_num = $data['buy_num']+1;
|
||||
$new_total_cash = $data['buy_cash']+$n_cash;
|
||||
|
||||
if(isset($array['limitbuy_num'])){
|
||||
|
||||
|
||||
if($count>=$array['limitbuy_num']){
|
||||
|
||||
if($data['buy_num']>=$array['limitbuy_num']){
|
||||
$tempNum=2;
|
||||
while($tempNum>0){
|
||||
$msg = $this->tradeUpdate("该订单买家今日采购了 {$count} 笔,超过限制 {$array['limitbuy_num']} ,停止发货--REAPI 系统自动化",5);
|
||||
$msg = $this->tradeUpdate("该订单买家今日已采购了 {$data['buy_num']} 笔,本笔超过限制 每天 限制{$array['limitbuy_num']} ,停止发货--REAPI 系统自动化",5);
|
||||
|
||||
if($msg=='error'){
|
||||
$tempNum--;
|
||||
@ -412,22 +428,22 @@ class Coretb extends Controller
|
||||
|
||||
|
||||
$this->noTB('0503', 'submit' ,$this->input['order']);
|
||||
|
||||
}else{
|
||||
$new_data = [
|
||||
'buy_num'=>$new_num,
|
||||
'buy_cash'=>$new_total_cash
|
||||
];
|
||||
$redis->set($redis_key,$new_data,$remainingSeconds);
|
||||
}
|
||||
}
|
||||
|
||||
if(isset($array['limitbuy_amount'])){
|
||||
$cash = OrderService::instance()->db()->where(['status'=>'2','mid'=>$this->mid])->whereBetween('create_at',[date('Y-m-d 00:00:00',time()),date('Y-m-d 23:59:59',time())])->whereLike('param',"%".$By_OpenUid."%")->sum('cash');
|
||||
if(!$cash){
|
||||
$cash = 0;
|
||||
}
|
||||
$cash = $cash +$this->input['cash'];
|
||||
|
||||
|
||||
if($cash>=$array['limitbuy_amount']){
|
||||
|
||||
if($new_total_cash>$array['limitbuy_amount']){
|
||||
$tempNum=2;
|
||||
while($tempNum>0){
|
||||
$msg = $this->tradeUpdate("该订单因为同IP累计金额为{$cash},超过限制{$array['limitbuy_amount']},停止发货--REAPI 系统自动化",5);
|
||||
$msg = $this->tradeUpdate("该订单因为同账号累计金额为{$new_total_cash},超过每天限制{$array['limitbuy_amount']},停止发货--REAPI 系统自动化",5);
|
||||
|
||||
if($msg=='error'){
|
||||
$tempNum--;
|
||||
@ -442,11 +458,77 @@ class Coretb extends Controller
|
||||
|
||||
|
||||
$this->noTB('0503', 'submit' ,$this->input['order']);
|
||||
|
||||
}else{
|
||||
$new_data = [
|
||||
'buy_num'=>$new_num,
|
||||
'buy_cash'=>$new_total_cash
|
||||
];
|
||||
$redis->set($redis_key,$new_data,$remainingSeconds);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
#查询 param 中json数据 By_OpenUid 出现次数counO create_at data(Y-
|
||||
// $count = OrderService::instance()->db()->where(['status'=>'2','mid'=>$this->mid])->whereBetween('create_at',[date('Y-m-d 00:00:00',time()),date('Y-m-d 23:59:59',time())])->whereLike('param',"%".$By_OpenUid."%")->count();
|
||||
// if(isset($array['limitbuy_num'])){
|
||||
//
|
||||
// if($count>=$array['limitbuy_num']){
|
||||
//
|
||||
// $tempNum=2;
|
||||
// while($tempNum>0){
|
||||
// $msg = $this->tradeUpdate("该订单买家今日采购了 {$count} 笔,超过限制 {$array['limitbuy_num']} ,停止发货--REAPI 系统自动化",5);
|
||||
//
|
||||
// if($msg=='error'){
|
||||
// $tempNum--;
|
||||
// }else{
|
||||
// $tempNum=0;
|
||||
// }
|
||||
// }
|
||||
//
|
||||
// if($is_coop){
|
||||
// $this->noTB('0503', 'submit_coop' ,$this->input['order']);
|
||||
// }
|
||||
//
|
||||
//
|
||||
// $this->noTB('0503', 'submit' ,$this->input['order']);
|
||||
// }
|
||||
// }
|
||||
//
|
||||
// if(isset($array['limitbuy_amount'])){
|
||||
// $cash = OrderService::instance()->db()->where(['status'=>'2','mid'=>$this->mid])->whereBetween('create_at',[date('Y-m-d 00:00:00',time()),date('Y-m-d 23:59:59',time())])->whereLike('param',"%".$By_OpenUid."%")->sum('cash');
|
||||
// if(!$cash){
|
||||
// $cash = 0;
|
||||
// }
|
||||
// $cash = $cash +$this->input['cash'];
|
||||
//
|
||||
//
|
||||
// if($cash>=$array['limitbuy_amount']){
|
||||
//
|
||||
// $tempNum=2;
|
||||
// while($tempNum>0){
|
||||
// $msg = $this->tradeUpdate("该订单因为同IP累计金额为{$cash},超过限制{$array['limitbuy_amount']},停止发货--REAPI 系统自动化",5);
|
||||
//
|
||||
// if($msg=='error'){
|
||||
// $tempNum--;
|
||||
// }else{
|
||||
// $tempNum=0;
|
||||
// }
|
||||
// }
|
||||
//
|
||||
// if($is_coop){
|
||||
// $this->noTB('0503', 'submit_coop' ,$this->input['order']);
|
||||
// }
|
||||
//
|
||||
//
|
||||
// $this->noTB('0503', 'submit' ,$this->input['order']);
|
||||
// }
|
||||
// }
|
||||
//
|
||||
//
|
||||
// }
|
||||
|
||||
|
||||
}
|
||||
@ -625,10 +707,10 @@ class Coretb extends Controller
|
||||
{
|
||||
$orderService = OrderService::instance();
|
||||
$order = $orderService->get($order_id, $merchant_order_id, $this->mid);
|
||||
if (!$order) {
|
||||
$orderLastweekHistoryService = OrderLastweekHistoryService::instance();
|
||||
$order = $orderLastweekHistoryService->get($order_id, $merchant_order_id, $this->mid);
|
||||
}
|
||||
// if (!$order) {
|
||||
// $orderLastweekHistoryService = OrderLastweekHistoryService::instance();
|
||||
// $order = $orderLastweekHistoryService->get($order_id, $merchant_order_id, $this->mid);
|
||||
// }
|
||||
// if (!$order) {
|
||||
// $orderLastHistoryService = OrderLastHistoryService::instance();
|
||||
// $order = $orderLastHistoryService->get($order_id, $merchant_order_id, $this->mid);
|
||||
|
@ -23,10 +23,27 @@ use app\channel\service\ProductService as CProductService;
|
||||
class App extends Controller
|
||||
{
|
||||
|
||||
# 是否检测数据
|
||||
// protected bool $check = false;
|
||||
protected $merchant_id;
|
||||
|
||||
protected string $host_url = 'https://supplier-api.wanmahui.com/api/openplatform/gateway';
|
||||
|
||||
# code码定义
|
||||
protected $code = array
|
||||
(
|
||||
# 成功
|
||||
1 => 'ok',
|
||||
# 小于0为失败
|
||||
0 => '暂时未处理',
|
||||
|
||||
1100 => '商品不存在',
|
||||
|
||||
|
||||
);
|
||||
|
||||
protected string $uid = '';
|
||||
protected string $secretKey = '';
|
||||
|
||||
|
||||
# code码定义
|
||||
|
||||
# 查询接口 一般用于查询数据,同步执行
|
||||
|
86
app/private_api/controller/monitorApi/Channel.php
Normal file
86
app/private_api/controller/monitorApi/Channel.php
Normal file
@ -0,0 +1,86 @@
|
||||
<?php
|
||||
|
||||
namespace app\private_api\controller\monitorApi;
|
||||
|
||||
use app\channel\service\ChannelService;
|
||||
use app\merchant\service\MerchantService;
|
||||
|
||||
/**
|
||||
* 接口处理
|
||||
* Class Handle
|
||||
* @package app\gateway\api
|
||||
*/
|
||||
class Channel extends Core
|
||||
{
|
||||
# 是否检测数据
|
||||
protected bool $check = false;
|
||||
|
||||
#获取渠道余额
|
||||
public function AllBalance()
|
||||
{
|
||||
$data = ChannelService::instance()->getAll();
|
||||
|
||||
$where['is_deleted'] = 0;
|
||||
$where['status'] = 1;
|
||||
$data = MerchantService::instance()->db()->field('name,account_surplus,credit_surplus,appid')->where($where)->select()->toArray();
|
||||
$this->yes($data);
|
||||
|
||||
}
|
||||
|
||||
protected function maketime($v): float|false|int|string
|
||||
{
|
||||
if (!$v) {
|
||||
return '';
|
||||
}
|
||||
|
||||
if (is_numeric($v)) {
|
||||
return $v;
|
||||
}
|
||||
|
||||
if (is_array($v)) {
|
||||
$v = $v[1];
|
||||
}
|
||||
|
||||
if (strstr($v, ' ')) {
|
||||
$t = explode(' ', $v);
|
||||
$v = $t[0];
|
||||
$s = explode(':', $t[1]);
|
||||
} else {
|
||||
$s = array(0, 0, 0);
|
||||
}
|
||||
|
||||
if (!isset($s[1])) {
|
||||
$s[1] = 0;
|
||||
}
|
||||
|
||||
if (!isset($s[2])) {
|
||||
$s[2] = 0;
|
||||
}
|
||||
|
||||
if (strstr($v, '-')) {
|
||||
$t = explode('-', $v);
|
||||
} elseif (strstr($v, '/')) {
|
||||
$u = explode('/', $v);
|
||||
$t[0] = $u[2];
|
||||
$t[1] = $u[0];
|
||||
$t[2] = $u[1];
|
||||
}
|
||||
|
||||
if (!isset($t)) {
|
||||
$t = array(0, 0, 0);
|
||||
}
|
||||
|
||||
if (!isset($t[1])) {
|
||||
$t[1] = 0;
|
||||
}
|
||||
|
||||
if (!isset($t[2])) {
|
||||
$t[2] = 0;
|
||||
}
|
||||
|
||||
$v = mktime($s[0], $s[1], $s[2], $t[1], $t[2], $t[0]);
|
||||
|
||||
return $v;
|
||||
}
|
||||
|
||||
}
|
@ -48,11 +48,11 @@ class FeedovHfAuto extends Command
|
||||
|
||||
$this->redis = RedisService::getInstance();
|
||||
|
||||
$account_data = $channelService->call('account', 13, '');
|
||||
$account_data = $channelService->call('account', 23, '');
|
||||
$balance = $account_data['account'];
|
||||
$redis_balance = $this->redis->get('channel_account-13');
|
||||
if(!$this->redis->get('channel_account-13')){
|
||||
$this->redis->set('channel_account-13',$balance,24*60*60);
|
||||
$redis_balance = $this->redis->get('channel_account-23');
|
||||
if(!$this->redis->get('channel_account-23')){
|
||||
$this->redis->set('channel_account-23',$balance,24*60*60);
|
||||
$stock = intval(bcdiv($balance, '1.002', 3)); // 第三个参数是保留的小数位数,可根据需要调整
|
||||
|
||||
$need_update = true;
|
||||
|
@ -64,8 +64,6 @@ class KamiOrderChanelNotify extends Command
|
||||
$getMerchantInfo = $MerchantService->get($vo['mid']);
|
||||
if($info['status'] == 4){
|
||||
|
||||
|
||||
|
||||
if( $vo['status'] == 7){
|
||||
$request_data = [];
|
||||
if(empty($info['cardno'])){
|
||||
@ -90,8 +88,6 @@ class KamiOrderChanelNotify extends Command
|
||||
|
||||
$result = $kami91server->up($where,$kami);
|
||||
|
||||
|
||||
|
||||
}elseif(isset($vo['channel_callback_msg']) && str_contains($vo['channel_callback_msg'], "kami")){
|
||||
$msg = json_decode($vo['channel_callback_msg'],true);
|
||||
$cardno = $msg['kami']['cardno'];
|
||||
@ -112,8 +108,6 @@ class KamiOrderChanelNotify extends Command
|
||||
|
||||
$result =$kami91server->up($where,$kami);
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user