新增头条小程序管理

feat/task1-c-wallet
devil_gong 2019-10-29 20:13:35 +08:00
parent 2111c7fbdc
commit 9fa2ce4ba6
8 changed files with 343 additions and 32 deletions

View File

@ -0,0 +1,70 @@
<?php
// +----------------------------------------------------------------------
// | ShopXO 国内领先企业级B2C免费开源电商系统
// +----------------------------------------------------------------------
// | Copyright (c) 2011~2019 http://shopxo.net All rights reserved.
// +----------------------------------------------------------------------
// | Licensed ( http://www.apache.org/licenses/LICENSE-2.0 )
// +----------------------------------------------------------------------
// | Author: Devil
// +----------------------------------------------------------------------
namespace app\admin\controller;
use app\service\ConfigService;
/**
* 头条小程序 - 配置
* @author Devil
* @blog http://gong.gg/
* @version 0.0.1
* @datetime 2016-12-01T21:51:08+0800
*/
class AppMiniToutiaoConfig extends Common
{
/**
* 构造方法
* @author Devil
* @blog http://gong.gg/
* @version 0.0.1
* @datetime 2016-12-03T12:39:08+0800
*/
public function __construct()
{
// 调用父类前置方法
parent::__construct();
// 登录校验
$this->IsLogin();
// 权限校验
$this->IsPower();
}
/**
* [Index 配置列表]
* @author Devil
* @blog http://gong.gg/
* @version 0.0.1
* @datetime 2016-12-06T21:31:53+0800
*/
public function Index()
{
// 配置信息
$this->assign('data', ConfigService::ConfigList());
return $this->fetch();
}
/**
* [Save 配置数据保存]
* @author Devil
* @blog http://gong.gg/
* @version 0.0.1
* @datetime 2017-01-02T23:08:19+0800
*/
public function Save()
{
return ConfigService::ConfigSave($_POST);
}
}
?>

View File

@ -0,0 +1,113 @@
<?php
// +----------------------------------------------------------------------
// | ShopXO 国内领先企业级B2C免费开源电商系统
// +----------------------------------------------------------------------
// | Copyright (c) 2011~2019 http://shopxo.net All rights reserved.
// +----------------------------------------------------------------------
// | Licensed ( http://www.apache.org/licenses/LICENSE-2.0 )
// +----------------------------------------------------------------------
// | Author: Devil
// +----------------------------------------------------------------------
namespace app\admin\controller;
use app\service\AppMiniService;
/**
* 头条小程序管理
* @author Devil
* @blog http://gong.gg/
* @version 0.0.1
* @datetime 2016-12-01T21:51:08+0800
*/
class AppMiniToutiaoList extends Common
{
private $application_name;
private $old_path;
private $new_path;
private $params;
/**
* 构造方法
* @author Devil
* @blog http://gong.gg/
* @version 0.0.1
* @datetime 2016-12-03T12:39:08+0800
*/
public function __construct()
{
// 调用父类前置方法
parent::__construct();
// 登录校验
$this->IsLogin();
// 权限校验
$this->IsPower();
// 参数
$this->params = input();
$this->params['application_name'] = 'toutiao';
}
/**
* [Index 列表]
* @author Devil
* @blog http://gong.gg/
* @version 0.0.1
* @datetime 2016-12-06T21:31:53+0800
*/
public function Index()
{
$this->assign('data_list', AppMiniService::DataList($this->params));
return $this->fetch();
}
/**
* [Created 生成]
* @author Devil
* @blog http://gong.gg/
* @version 0.0.1
* @datetime 2017-02-05T20:12:30+0800
*/
public function Created()
{
// 是否ajax请求
if(!IS_AJAX)
{
$this->error('非法访问');
}
// 配置内容
$app_mini_title = MyC('common_app_mini_toutiao_title');
$app_mini_describe = MyC('common_app_mini_toutiao_describe');
if(empty($app_mini_title) || empty($app_mini_describe))
{
return DataReturn('配置信息不能为空', -1);
}
// 开始操作
$this->params['app_mini_title'] = $app_mini_title;
$this->params['app_mini_describe'] = $app_mini_describe;
return AppMiniService::Created($this->params);
}
/**
* [Delete 删除包]
* @author Devil
* @blog http://gong.gg/
* @version 0.0.1
* @datetime 2016-12-09T21:13:47+0800
*/
public function Delete()
{
// 是否ajax请求
if(!IS_AJAX)
{
$this->error('非法访问');
}
// 开始操作
return AppMiniService::Delete($this->params);
}
}
?>

View File

@ -0,0 +1,49 @@
{{include file="public/header" /}}
<!-- right content start -->
<div class="content-right">
<div class="content">
<!-- form start -->
<form class="am-form form-validation view-save" action="{{:MyUrl('admin/appminitoutiaoconfig/save')}}" method="POST" request-type="ajax-url" request-value="{{:MyUrl('admin/appminitoutiaoconfig/index')}}">
<div class="am-form-group">
<label>{{$data.common_app_mini_toutiao_appid.name}}<span class="am-form-group-label-tips">{{$data.common_app_mini_toutiao_appid.describe}}</span></label>
<input type="text" name="{{$data.common_app_mini_toutiao_appid.only_tag}}" placeholder="{{$data.common_app_mini_toutiao_appid.name}}" data-validation-message="{{$data.common_app_mini_toutiao_appid.error_tips}}" class="am-radius" {{if !empty($data)}}value="{{$data.common_app_mini_toutiao_appid.value}}"{{/if}} />
</div>
<div class="am-form-group">
<label>{{$data.common_app_mini_toutiao_appsecret.name}}<span class="am-form-group-label-tips">{{$data.common_app_mini_toutiao_appsecret.describe}}</span></label>
<input type="text" name="{{$data.common_app_mini_toutiao_appsecret.only_tag}}" placeholder="{{$data.common_app_mini_toutiao_appsecret.name}}" data-validation-message="{{$data.common_app_mini_toutiao_appsecret.error_tips}}" class="am-radius" {{if !empty($data)}}value="{{$data.common_app_mini_toutiao_appsecret.value}}"{{/if}} />
</div>
<div class="am-form-group">
<label>{{$data.common_app_mini_toutiao_pay_merchant_id.name}}<span class="am-form-group-label-tips">{{$data.common_app_mini_toutiao_pay_merchant_id.describe}}</span></label>
<input type="text" name="{{$data.common_app_mini_toutiao_pay_merchant_id.only_tag}}" placeholder="{{$data.common_app_mini_toutiao_pay_merchant_id.name}}" data-validation-message="{{$data.common_app_mini_toutiao_pay_merchant_id.error_tips}}" class="am-radius" {{if !empty($data)}}value="{{$data.common_app_mini_toutiao_pay_merchant_id.value}}"{{/if}} />
</div>
<div class="am-form-group">
<label>{{$data.common_app_mini_toutiao_pay_appid.name}}<span class="am-form-group-label-tips">{{$data.common_app_mini_toutiao_pay_appid.describe}}</span></label>
<input type="text" name="{{$data.common_app_mini_toutiao_pay_appid.only_tag}}" placeholder="{{$data.common_app_mini_toutiao_pay_appid.name}}" data-validation-message="{{$data.common_app_mini_toutiao_pay_appid.error_tips}}" class="am-radius" {{if !empty($data)}}value="{{$data.common_app_mini_toutiao_pay_appid.value}}"{{/if}} />
</div>
<div class="am-form-group">
<label>{{$data.common_app_mini_toutiao_pay_secret.name}}<span class="am-form-group-label-tips">{{$data.common_app_mini_toutiao_pay_secret.describe}}</span></label>
<input type="text" name="{{$data.common_app_mini_toutiao_pay_secret.only_tag}}" placeholder="{{$data.common_app_mini_toutiao_pay_secret.name}}" data-validation-message="{{$data.common_app_mini_toutiao_pay_secret.error_tips}}" class="am-radius" {{if !empty($data)}}value="{{$data.common_app_mini_toutiao_pay_secret.value}}"{{/if}} />
</div>
<div class="am-form-group">
<label>{{$data.common_app_mini_toutiao_title.name}}</label>
<input type="text" name="{{$data.common_app_mini_toutiao_title.only_tag}}" placeholder="{{$data.common_app_mini_toutiao_title.name}}" data-validation-message="{{$data.common_app_mini_toutiao_title.error_tips}}" class="am-radius" {{if !empty($data)}}value="{{$data.common_app_mini_toutiao_title.value}}"{{/if}} />
</div>
<div class="am-form-group">
<label>{{$data.common_app_mini_toutiao_describe.name}}</label>
<input type="text" name="{{$data.common_app_mini_toutiao_describe.only_tag}}" placeholder="{{$data.common_app_mini_toutiao_describe.name}}" data-validation-message="{{$data.common_app_mini_toutiao_describe.error_tips}}" class="am-radius" {{if !empty($data)}}value="{{$data.common_app_mini_toutiao_describe.value}}"{{/if}} />
</div>
<div class="am-form-group am-form-group-refreshing">
<button type="submit" class="am-btn am-btn-primary am-radius btn-loading-example am-btn-sm am-btn-block" data-am-loading="{loadingText:'处理中...'}">保存</button>
</div>
</form>
<!-- form end -->
</div>
</div>
<!-- right content end -->
<!-- footer start -->
{{include file="public/footer" /}}
<!-- footer end -->

View File

@ -0,0 +1,67 @@
{{include file="public/header" /}}
<!-- right content start -->
<div class="content-right">
<div class="content">
<!-- operation start -->
<div class="am-g">
<button class="am-btn am-btn-secondary am-radius am-btn-xs am-icon-plus submit-ajax" data-url="{{:MyUrl('admin/appminitoutiaolist/created')}}" data-view="reload" data-msg="生成时间比较长,请不要关闭浏览器窗口!"> 生成</button>
</div>
<!-- operation end -->
<!-- miniapp develop tips -->
{{if config('shopxo.is_develop') eq true}}
<div class="am-alert am-alert-warning am-radius" data-am-alert="">
当前为开发模式<br />
&nbsp;&nbsp;&nbsp;1. 发布小程序必须采用 https 协议,上线需确认 app.js 中 request_url 参数值是否正确。<br />
&nbsp;&nbsp;&nbsp;2. 发布小程序,建议关闭开发者模式、从正式环境重新生成小程序下载使用开发者工具上传审核。<br />
&nbsp;&nbsp;&nbsp;3. 非 https 环境下,在开发者工具 -> 顶部导航 -> 详情 -> 不校验合法域名、web-view业务域名TLS版本以及HTTPS证书勾选改选项即可进行小程序开发调试
</div>
{{else /}}
<div class="am-alert am-alert-warning am-radius" data-am-alert="">
1. 生成小程序必须在 https 协议下进行操作、请配置好服务器 ssl 并使用 https 协议登录后台管理生成小程序。<br />
2. 如需非 https 协议下生成小程序,请在 config/shopxo.php 文件中 is_develop值改为true开启开发者模式。
</div>
{{/if}}
<!-- list start -->
<table class="am-table am-table-striped am-table-hover am-text-middle am-margin-top-sm am-margin-left-xs">
<thead>
<tr>
<th>包名</th>
<th>大小</th>
<th>创建时间</th>
<th>操作</th>
</tr>
</thead>
<tbody>
{{if !empty($data_list)}}
{{foreach $data_list as $v}}
<tr>
<td>{{$v.name}}</td>
<td>{{$v.size}}</td>
<td>{{$v.time}}</td>
<td class="view-operation">
{{if !empty($v.url)}}
<a href="{{$v.url}}">
<button class="am-btn am-btn-success am-btn-xs am-radius am-icon-download"> 下载</button>
</a>
{{/if}}
<button class="am-btn am-btn-danger am-btn-xs am-radius am-icon-trash-o submit-delete" data-url="{{:MyUrl('admin/appminitoutiaolist/delete')}}" data-id="{{$v.name}}" data-view="reload"> 删除</button>
</td>
</tr>
{{/foreach}}
{{/if}}
</tbody>
</table>
{{if empty($data_list)}}
<div class="table-no"><i class="am-icon-warning"></i> 没有相关数据</div>
{{/if}}
<!-- lis end -->
</div>
</div>
<!-- right content end -->
<!-- footer start -->
{{include file="public/footer" /}}
<!-- footer end -->

View File

@ -259,8 +259,8 @@ class User extends Common
public function ToutiaoUserAuth()
{
$this->data_post['config'] = [
'appid' => MyC('common_app_mini_toutiao_appid', 'tt65341389fa1e87f3'),
'secret' => MyC('common_app_mini_toutiao_appsecret', '9ea496422c189390d2d3ec8eec597fbcf3e1e5a7'),
'appid' => MyC('common_app_mini_toutiao_appid'),
'secret' => MyC('common_app_mini_toutiao_appsecret'),
];
$result = (new \base\Toutiao())->GetAuthCode($this->data_post);
if($result['status'] == 0)

View File

@ -34,6 +34,15 @@ class ToutiaoService
*/
public static function Pay($params = [])
{
// 配置信息
$merchant_id = MyC('common_app_mini_toutiao_pay_merchant_id');
$app_id = MyC('common_app_mini_toutiao_pay_appid');
$pay_secret = MyC('common_app_mini_toutiao_pay_secret');
if(empty($merchant_id) || empty($app_id) || empty($pay_secret))
{
return DataReturn('小程序未配置', -1);
}
// 获取支付信息
$ret = OrderService::Pay($params);
if($ret['code'] != 0)
@ -50,8 +59,6 @@ class ToutiaoService
$payment = PaymentService::PaymentList(['where'=>['id'=>$payment_id]]);
// 头条需要的订单信息
$merchant_id = '1900017261';
$app_id = '800172615976';
$order_info = [
'merchant_id' => $merchant_id,
'app_id' => $app_id,
@ -91,8 +98,7 @@ class ToutiaoService
}
// 签名
$app_secret = '4xi2kcrzgancnanghtafqtqrwgy5534itichypud';
$order_info['sign'] = (new \base\Toutiao())->PaySignCreated($order_info, $app_secret);
$order_info['sign'] = (new \base\Toutiao())->PaySignCreated($order_info, $pay_secret);
// 返回数据
$result = [

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long