消息发送

feat/task1-c-wallet
gongfuxiang 2018-10-25 01:18:56 +08:00
parent 7ca13df86f
commit 14d8142479
7 changed files with 93 additions and 67 deletions

View File

@ -73,7 +73,7 @@ function DataReturn($msg = '', $code = 0, $data = '')
} }
/** /**
* 生成前台页面url地址 * 生成接口页面url地址
* @author Devil * @author Devil
* @blog http://gong.gg/ * @blog http://gong.gg/
* @version 1.0.0 * @version 1.0.0
@ -83,8 +83,24 @@ function DataReturn($msg = '', $code = 0, $data = '')
* @param string $a [方法名称] * @param string $a [方法名称]
* @param array $params [参数] * @param array $params [参数]
*/ */
function ApiUrl($c='Index', $a='Index', $params=[])
{
$url = U("Api/{$c}/{$a}", $params, true, true);
$location = stripos($url, '.php');
if($location !== false)
{
$before = substr($url, 0, $location+4);
$suffix = substr($before, strrpos($before, '/')+1);
if(!empty($suffix))
{
$url = str_replace($suffix, 'api.php', $url);
}
}
return $url;
}
/** /**
* 生成前台页面url地址 * 生成前页面url地址
* @author Devil * @author Devil
* @blog http://gong.gg/ * @blog http://gong.gg/
* @version 1.0.0 * @version 1.0.0
@ -96,7 +112,7 @@ function DataReturn($msg = '', $code = 0, $data = '')
*/ */
function HomeUrl($c='Index', $a='Index', $params=[]) function HomeUrl($c='Index', $a='Index', $params=[])
{ {
$url = U("Home/{$c}/{$a}", $params); $url = U("Home/{$c}/{$a}", $params, true, true);
$location = stripos($url, '.php'); $location = stripos($url, '.php');
if($location !== false) if($location !== false)
{ {

View File

@ -527,7 +527,8 @@ return array(
0 => array('value' => 0, 'name' => '未发送'), 0 => array('value' => 0, 'name' => '未发送'),
1 => array('value' => 1, 'name' => '发送中'), 1 => array('value' => 1, 'name' => '发送中'),
2 => array('value' => 2, 'name' => '发送成功'), 2 => array('value' => 2, 'name' => '发送成功'),
3 => array('value' => 3, 'name' => '发送失败'), 3 => array('value' => 3, 'name' => '部分成功'),
4 => array('value' => 4, 'name' => '发送失败'),
), ),

View File

@ -294,6 +294,21 @@ class AlipayLife
$this->Respond($status); $this->Respond($status);
} }
/**
* [SyncRsaVerify 同步返回签名验证]
* @author Devil
* @blog http://gong.gg/
* @version 1.0.0
* @datetime 2017-09-25T13:13:39+0800
* @param [array] $data [返回数据]
* @param [boolean] $key [数据key]
*/
private function SyncRsaVerify($data, $key)
{
$string = json_encode($data[$key], JSON_UNESCAPED_UNICODE);
return $this->OutRsaVerify($string, $data['sign']);
}
/** /**
* 单条消息发送 * 单条消息发送
* @author Devil * @author Devil
@ -330,15 +345,21 @@ class AlipayLife
// 生成签名 // 生成签名
$p['sign'] = $this->MyRsaSign($this->ArrayToUrlString($p)); $p['sign'] = $this->MyRsaSign($this->ArrayToUrlString($p));
// 请求接口
$result = $this->HttpRequest('https://openapi.alipay.com/gateway.do', $p); $result = $this->HttpRequest('https://openapi.alipay.com/gateway.do', $p);
// 验证签名
if(!$this->SyncRsaVerify($result, 'alipay_open_public_message_custom_send_response'))
print_r($result); {
echo "\n\n"; return ['status'=>-1, 'msg'=>'签名验证错误'];
print_r($p); }
die;
// 状态
if(isset($result['alipay_open_public_message_custom_send_response']['code']) && $result['alipay_open_public_message_custom_send_response']['code'] == 10000)
{
return ['status'=>0, 'msg'=>'发送成功'];
}
return ['status'=>-100, 'msg'=>$result['alipay_open_public_message_custom_send_response']['sub_msg'].'['.$result['alipay_open_public_message_custom_send_response']['code'].']'];
} }
/** /**

View File

@ -355,7 +355,7 @@ class AlipayLifeService
*/ */
public static function SyncJobSend($message_id) public static function SyncJobSend($message_id)
{ {
SyncJob(U('Api/AlipayLife/Send', ['message_id'=>$message_id], true, true)); SyncJob(ApiUrl('AlipayLife', 'Send', ['message_id'=>$message_id]));
} }
/** /**
@ -371,7 +371,7 @@ class AlipayLifeService
{ {
if(empty($params['message_id'])) if(empty($params['message_id']))
{ {
die('[params_time:'.date('Y-m-d H:i:s'))."][msg:id有误]\n\n"; die('[params_time:'.date('Y-m-d H:i:s')."][msg:id有误]\n\n");
} }
// 启动开始 // 启动开始
@ -383,11 +383,11 @@ class AlipayLifeService
$message = $m->find($params['message_id']); $message = $m->find($params['message_id']);
if(empty($message)) if(empty($message))
{ {
die('[time:'.date('Y-m-d H:i:s'))."][msg:{$params['message_id']}数据不存在]\n\n"; die('[time:'.date('Y-m-d H:i:s')."][msg:{$params['message_id']}数据不存在]\n\n");
} }
if(!in_array($message['sttaus'], [0,1])) if(!in_array($message['status'], [0,1]))
{ {
die('[time:'.date('Y-m-d H:i:s'))."][msg:{$message['status']}状态不可操作]\n\n"; die('[time:'.date('Y-m-d H:i:s')."][msg:{$message['status']}状态不可操作]\n\n");
} }
// 消息类型 // 消息类型
@ -410,7 +410,7 @@ class AlipayLifeService
// 生活号 // 生活号
$life = M('AlipayLife')->find($alipay_life_id); $life = M('AlipayLife')->find($alipay_life_id);
// 群发 // 群发
if($message['send_type'] == 1) if($message['send_type'] == 1)
{ {
die('all'); die('all');
@ -423,37 +423,35 @@ class AlipayLifeService
$obj = new \Library\AlipayLife(['life_data'=>$life]); $obj = new \Library\AlipayLife(['life_data'=>$life]);
foreach($detail as $v) foreach($detail as $v)
{ {
// 请求接口处理
$message['alipay_openid'] = $v['alipay_openid']; $message['alipay_openid'] = $v['alipay_openid'];
$obj->CustomSend($message); $ret = $obj->CustomSend($message);
//print_r($message);
die; // 返回状态更新
$status = (isset($ret['status']) && $ret['status'] == 0) ? 2 : 4;
$detail_m->where(['id'=>$v['id']])->save(['status'=>$status, 'send_time'=>time(), 'upd_time'=>time(), 'send_return_msg'=>$ret['msg']]);
} }
echo '[count:'.count($detail).']';
} else { } else {
$m->where(['id'=>$message['id']])->save(['send_success_time'=>time(), 'status'=>2]); $status_all = $detail_m->where(['alipay_life_message_id'=>$message['id']])->group('status')->getField('status', true);
if(count($status_all) <= 1)
{
$status = in_array(2, $status_all) ? 2 : 4;
} else {
$status = 3;
}
$m->where(['id'=>$message['id']])->save(['send_success_time'=>time(), 'status'=>$status, 'upd_time'=>time()]);
echo '[success_time:'.date('Y-m-d H:i:s')."]\n"; echo '[success_time:'.date('Y-m-d H:i:s')."]\n";
echo '[message:'.$params['message_id']."]\n\n"; echo '[message:'.$params['message_id']."]\n\n";
} }
} }
} }
die('end');
// 获取详情处理发送消息 // 继续运行脚本
// $detail_m = M('AlipayLifeMessageDetail'); self::SyncJobSend($message['id']);
// $detail = $detail_m->where(['alipay_life_message_id'=>$message['id'], 'status'=>0])->limit(100)->select();
// if(!empty($detail)) // end
// { die('[end_time:'.date('Y-m-d H:i:s')."][msg:处理结束]\n\n");
// $obj = new \Library\AlipayLife($params);
// foreach($detail as $v)
// {
// $obj->CustomSend($message);
// print_r($message);
// die;
// }
// } else {
// $m->where(['id'=>$message['id']])->save(['send_success_time'=>time(), 'status'=>2]);
// echo '[success_time:'.date('Y-m-d H:i:s')."]\n";
// echo '[message:'.$params['message_id']."]\n\n";
// }
} }
} }
?> ?>

View File

@ -15,10 +15,7 @@
require './core.php'; require './core.php';
// 默认绑定访问Admin模块 // 默认绑定访问Admin模块
if(empty($_GET['m'])) define('BIND_MODULE', 'Admin');
{
define('BIND_MODULE', 'Admin');
}
// 引入ThinkPHP入口文件 // 引入ThinkPHP入口文件
require './ThinkPHP/ThinkPHP.php'; require './ThinkPHP/ThinkPHP.php';

View File

@ -14,12 +14,6 @@
// 引入公共入口文件 // 引入公共入口文件
require './core.php'; require './core.php';
// 默认绑定访问Api模块
if(empty($_GET['m']))
{
define('BIND_MODULE', 'Api');
}
// 引入ThinkPHP入口文件 // 引入ThinkPHP入口文件
require './ThinkPHP/ThinkPHP.php'; require './ThinkPHP/ThinkPHP.php';

File diff suppressed because one or more lines are too long