ecshop短信发送功能属于ecshop的一大亮点。我们在对ecshop二次开发的过程中。常常会对ecshop的短信接口进行处理。甚至是修改ecshop 短信发送核心库文件.那么ecshop短信发送功能的的具体原理和处理机制是什么呢。我们腊丛册将结合ecshop后台和前台代码。来谈谈ecshop 短信发送功能轮宏.
我们进入ecshop后台。系统设置里面。有个短信设置,可以设置商郑简户的手机号码.以及发送短信的控制流程。这个设置信息记录在ecshop数据库shop_config表中。里面的字段分别为.sms_shop_mobile,sms_order_placed,sms_order_payed,sms_order_shipped.三个参数分别表示下单,付款和发货时候是否发送短信息给客户。
ecshop短信系统,主要分布在上面说的几个状态中。我们不可能意义的列举该功能。我们将结合购物车中的代码flow.php来谈谈.
首先在下单的done动作中。我们将看到以下代码.
if ($_CFG['sms_order_placed'] == '1' &&$_CFG['sms_shop_mobile'] != '')
{
include_once('includes/cls_sms.php')
$sms = new sms()
$msg = $order['pay_status'] == PS_UNPAYED ?
$_LANG['order_placed_sms'] : $_LANG['order_placed_sms'] . '[' . $_LANG['sms_paid'] . ']'
$sms->send($_CFG['sms_shop_mobile'], sprintf($msg, $order['consignee'], $order['tel']), 0)
}
这里代码告诉我们.通过获取$_CFG中的配置信息来判断,是否给客户发信息。然后通过调用includes/cls_sms.php这个短信api接口来发送短信.首先声明了一个$sms对象.这个对象有个方法send()方法.
以下是ecshop短信系统send()函数的函数说明。
/**
* 发送短消息
*
* @access public
* @param string $phone 要发送到哪些个手机号码,多个号码用半角逗号隔开
* @param string $msg发送的消息内容
* @param string $send_date 定时发送时间
* @return boolean 发送成功返回true,失败返回false。
*/
function send($phone, $msg, $send_date = '', $send_num = 1)
所有的ecshop调用短信息发送的地方。都是通过这个方法来实现的。我们当然可以结合ecshop的一些使用需求.
标题上加了Ecshop,其实也只是个噱头,增加搜索量而已,本文写的内容并不局限于Ecshop上。API接口,通咐乱常是供移动APP端调用的,制作api的前提是必须对业务逻辑和代码逻辑十分熟悉了,不然可能会事倍功半,甚至是中途夭折。首先制作的语言仍旧是PHP,API的返回数据用的是JSON,没有用XML,为什么要用JSON而不用XML,这个问题,懂的人自然懂。先来创建JSON的model。
// 描述:内部使用API JSON类
// 名称:json
// 作者:tiandi
// 版本:0.0.1
// 生成时间:2015.4.23
// 修订时间:2015.4.23
class json {
// status : string : 状态码
// msg : string : 说明
// content: array : 内容
var $status
var $msg
var $content
function json(){
}
function set_status($status) {
$this->status = $status
}
function set_msg($msg) {
$this->msg = $msg
}
function set_content($content) {
$this->content = $content
}
function create_json() {
$arr = array()
$arr['api_status'] = $this->status
$arr['api_msg'] = $this->msg
if($arr['api_status'] == '0') {
array_unshift($this->content,$arr)
echo urldecode(json_encode($this->content))
}
else
{
echo urldecode(json_encode($arr))
}
}
function check_env($request){
//check appid
if(!isset($request['appid'])) {
$this->set_status("99")
$this->set_msg("Need appid.")
echo $this->create_json()
exit
}
elseif(!$this->compare($request['appid'],MY_APPID)) {
$this->set_status("98")
$this->set_msg("Appid is invalid.")
echo $this->create_json()
exit
}
//check timestamp
elseif(!isset($request['timestamp'])) {
$this->set_status("97")
$this->set_msg("Need timestamp.")
echo $this->create_json()
exit
}
//check sign
elseif(!isset($request['sign'])) {
$this->set_status("96")
$this->set_msg("Need sign.")
echo $this->create_json()
exit
}
elseif(!$this->compare($request['sign'],$this->饥碧create_sign($request))) {
$this->set_status("95")
$this->set_msg("Sign is invalid.")
echo $this->create_json()
exit
}
}
function compare($str1,$str2) {
if($str1 == "'".$str2."'" || $str1 == $str2 || "'".$str1."'" == $str2)
return true
else
return false
}
/************************** 生成签名 ***************************/
function create_sign($request) {
//签名方法衡肢档
}
然后用下面方法生成json接口数据,$arr为数据库查询返回的数组。
$json->set_status("0")
$json->set_msg("success")
$json->set_content($arr)
$json->create_json()
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)