예제 #1
0
파일: templatemsg.php 프로젝트: wxl2012/wx
 /**
  * 发送模板消息
  *
  * $data = [
  *      'first' => [
  *          'value' => '',
  *          'color' => '',
  *      ],
  *      'keynote1' => [
  *          'value' => '',
  *          'color': => '',
  *      ],
  *      'remark' => [
  *          'value' => '',
  *          'color' => ''
  *      ]
  * ]
  *
  * @param $data 模板数据
  * @return mixed 返回发送结果
  */
 public function send($data)
 {
     $params = ['touser' => $this->to, 'template_id' => $this->template_id, 'url' => $this->url, 'data' => $data];
     if ($this->account->temp_token_valid < time()) {
         $result = \handler\mp\Tool::generate_token($this->account->app_id, $this->account->app_secret);
         $this->account->temp_token = $result['token'];
         $this->account->temp_token_valid = $result['valid'];
         $this->account->save();
     }
     $url = "{$this->domain}/cgi-bin/message/template/send?access_token={$this->account->temp_token}";
     $result = \handler\common\UrlTool::request($url, 'POST', json_encode($params), true);
     return json_decode($result);
 }
예제 #2
0
파일: tool.php 프로젝트: wxl2012/wx
 /**
  * 生成JsSdk配置
  *
  * @param $appid    公众号应用ID
  * @param $ticket   公众号JSApi ticket
  * @param $url      当前完整URL
  * @return array    返回完整配置
  */
 public static function getJssdkConfig($id = 0)
 {
     $account = \Session::get('WXAccount', false);
     if ($id) {
         $account = \Model_WXAccount::find($id);
     }
     //判断ticket是否过期
     if (!$account->wechat_ticket_valid || $account->wechat_ticket_valid < time()) {
         if ($account->temp_token_valid < time()) {
             $result = \handler\mp\Tool::generate_token($account->app_id, $account->app_secret);
             $account->temp_token = $result['token'];
             $account->temp_token_valid = $result['valid'];
         }
         $result = \handler\mp\Tool::generate_jssdk_ticket($account->temp_token);
         $account->wechat_ticket = $result['ticket'];
         $account->wechat_ticket_valid = $result['valid'];
         $account->save();
     }
     $url = "http://" . \Input::server('HTTP_HOST') . \Input::server('REQUEST_URI');
     //参与签名的参数
     $timestamp = time();
     $params = array('noncestr' => \Str::random('alnum', 16), 'jsapi_ticket' => $account->wechat_ticket, 'timestamp' => $timestamp, 'url' => $url);
     //排序
     ksort($params);
     //生成签名
     $signature = sha1(\handler\common\UrlTool::createLinkstring($params));
     //配置文件
     $config = ['debug' => false, 'appId' => $account->app_id, 'timestamp' => $timestamp, 'nonceStr' => $params['noncestr'], 'signature' => $signature, 'jsApiList' => ['onMenuShareTimeline', 'onMenuShareAppMessage', 'startRecord', 'stopRecord', 'onVoiceRecordEnd', 'playVoice', 'pauseVoice', 'stopVoice', 'onVoicePlayEnd', 'uploadVoice', 'downloadVoice', 'chooseImage', 'previewImage', 'uploadImage', 'downloadImage', 'translateVoice', 'getNetworkType', 'openLocation', 'getLocation', 'hideOptionMenu', 'showOptionMenu', 'hideMenuItems', 'showMenuItems', 'hideAllNonBaseMenuItem', 'showAllNonBaseMenuItem', 'closeWindow', 'scanQRCode', 'chooseWXPay', 'openProductSpecificView', 'addCard', 'chooseCard', 'openCard']];
     return $config;
 }
예제 #3
0
파일: order.php 프로젝트: wxl2012/wx
 /**
  * 发货操作
  * @param int $id 订单ID
  */
 public static function delivery($id = 0)
 {
     $msg = false;
     $order = \Model_Order::find($id);
     if (!$order) {
         $msg = ['status' => 'err', 'msg' => '未找到订单,发货失败', 'title' => '错误'];
     } else {
         if (in_array($order->order_status, ['NONE', 'WAIT_PAYMENT'])) {
             $msg = ['status' => 'err', 'msg' => '订单未付款,发货失败', 'title' => '错误'];
         } else {
             if ($order->order_status != 'PAYMENT_SUCCESS') {
                 $msg = ['status' => 'err', 'msg' => '订单状态异常,发货失败', 'title' => '错误'];
             }
         }
     }
     if ($msg) {
         \Session::set_flash('msg', $msg);
         return false;
     }
     //微信发货
     $account = \Session::get('WXAccount', false);
     if (!$account) {
         $account = \Model_WXAccount::find(1);
     }
     if ($account->temp_token_valid < time()) {
         $result = \handler\mp\Tool::generate_token($account->app_id, $account->app_secret);
         $account->temp_token = $result['token'];
         $account->temp_token_valid = $result['valid'];
         $account->save();
     }
     $delivery_count = 0;
     foreach ($order->details as $detail) {
         $sn = \Model_GoodsAccount::query()->where(['goods_id' => $detail->goods_id, 'status' => 'NONE'])->get_one();
         if (!$sn) {
             $delivery_count++;
             continue;
         }
         if ($order->buyer_openid) {
             $remark = "订单号:{$order->order_no}\n用户名:{$sn->account}\n密码:{$sn->password}";
             $data = \handler\mp\TemplateMsg::get_buy_goods_success($detail->goods->name, $remark);
             $params = \handler\mp\TemplateMsg::get_base_params($order->buyer_openid, "ARlIzufqpUc8tvCTAVswkny-_AYwYatkxiw42MOa_uA", "http://mall.doujao.com", $data);
             $flag = \handler\mp\TemplateMsg::send_msg($account->temp_token, $params);
             if ($flag) {
                 $sn->status = 'USED';
                 $sn->order_id = $order->id;
                 $sn->save();
             }
             $detail->is_delivery = 1;
             $detail->save();
         }
     }
     if ($delivery_count > 0) {
         \Session::set_flash('msg', ['status' => 'err', 'msg' => "{$delivery_count}件商品发货失败.原因:库存不足!请联系客服.", 'title' => '错误']);
         return false;
     }
     $order->order_status = 'FINISH';
     $order->save();
     return true;
 }