微信支付成功后发送短信通知
这里以TP3.2框架为例
在支付回调的方法里写发送短信通知的代码,如下图:
public function notify()
{
$model = D('Match');
// 获取一条主管理员电话号
$phoneinfo = $model->getSpeicalPhoneInfo();
$specialphone = $phoneinfo['phone'];
$order_id = I('order_id');
//在此处进行支付成功后的数据库操作
//-------------------数据库操作------------------------
// 判断是否发送短信通知
// 当状态为1,即短信通知开启时,发送短信通知
if ($phoneinfo['status'] == 1) {
//调用同类下的sendSmsMessage方法
$res = $this->sendSmsMessage($order_id, $specialphone);
// 这里请求结果为:
// {"Message":"OK","RequestId":"DCAE*************3r23233","BizId":"2132**********00","Code":"OK"}
if ($res->Code == 'OK') {
echo json_encode(array('success'=>'发送短信成功'));
exit;
} else {
echo json_encode(array('error'=>'发送短信失败'));
exit;
}
}
}
// 发送短信通知
public function sendSmsMessage($oid, $specialphone){
if (empty($specialphone)) {
return false;
}
$smsmodel = D('SmsNotice');
// 给管理员发送短信通知
$product = "晓美商品";
// 调用模型SmsNoticeModel.class.php
$res = $smsmodel->sendToAdministrator($oid, $specialphone, $product);
return $res;
}
SmsNoticeModel.class.php模型页面
classSmsNoticeModel{
public function sendToAdministrator($order_id, $phone, $product){
// 引入阿里的配置文件(位置位于 ' 项目名称\ThinkPHP\Library\Vendor\api_sdk')
Vendor('api_sdk.vendor.autoload');
// 加载区域结点配置
\Aliyun\Core\Config::load();
// 获取阿里云短信的配置信息,如KEYID、KEYSERVER、SIGN(签名名称)、模板CODE
$Api_arr = C('SMS_API');
$profile = \Aliyun\Core\Profile\DefaultProfile::getProfile('cn-hangzhou', $Api_arr['KEYID'], $Api_arr['KEYSERVER']);
// 增加服务结点
\Aliyun\Core\Profile\DefaultProfile::addEndpoint('cn-hangzhou', 'cn-hangzhou', 'Dysmsapi', 'dysmsapi.aliyuncs.com');
// 初始化AcsClient用于发起请求
$acsClient = new \Aliyun\Core\DefaultAcsClient($profile);
// 初始化SendSmsRequest实例用于设置发送短信的参数
$request = new \Aliyun\Api\Sms\Request\V20170525\SendSmsRequest();
// 必填,设置雉短信接收号码
$request->setPhoneNumbers($phone);
// 必填,设置签名名称
$request->setSignName($Api_arr['SIGN']);
// 必填,设置模板CODE
$request->setTemplateCode($Api_arr['CODE']);
$params = array(
'product' => $product
);
// 可选,设置模板参数
$request->setTemplateParam(json_encode($params));
// 可选,设置流水号
// 发起访问请求
$acsResponse = $acsClient->getAcsResponse($request);
// 打印请求结果
$arr = [];
if ($acsResponse->Code == 'OK') {
$arr['content'] = "您有一笔" . $product . "交易,请及时查看!";
} else {
$arr['content'] = "发送短信失败!";
// 发送失败原因可能为欠费或电话号不存在,具体发送失败的原因可根据请求结果中的message得知
}
$arr['order_id'] = $order_id;
$arr['phone'] = $phone;
$arr['result'] = json_encode($acsResponse);
$arr['sendtime'] = date('Y-m-d H:i:s');
$addinfo = M('CompanySms')->add($arr);
return $acsResponse;
}
}