Commit 433d7c84 by banice

微信支付未验证,验证码注册完成,获取套餐活动信息

parent 34a4c3aa
<?php
/**
* Created by PhpStorm.
* User: banice
* Date: 2018/9/12
* Time: 下午2:21
*/
namespace Lib\dysms;
use Flc\Dysms\Client;
use Flc\Dysms\Request\SendSms;
use Cache;
use Illuminate\Support\Facades\Log;
class Sms
{
/**
* @var string
*/
private $type = 'register';
/**
* @var string
*/
private $phone = '';
/**
* @var int
*/
private $code = 0;
private $cacheKey = '';
private $templateCode = '';
private $signName = '';
private $message = '';
private $validTime = 15;
private $agent = 'wx';
public function __construct(string $type = 'register')
{
$this->type = $type;
}
public function send()
{
if ($this->code === 0) {
abort(500, 'sms need code');
}
$client = new Client(config('dysms'));
$sendSms = new SendSms();
$sendSms->setPhoneNumbers($this->phone);
$sendSms->setTemplateCode($this->templateCode);
$sendSms->setSignName($this->signName);
$sendSms->setTemplateParam(['code' => $this->code]);
$result = $client->execute($sendSms);
$result = json_decode(json_encode($result), true);
if ($result['Code'] === 'OK') {
Cache::put($this->getCacheKey(), $this->code, $this->validTime);
Log::debug('code->' . Cache::get($this->getCacheKey()));
return true;
} else {
$this->message = $result['Message'];
return false;
}
}
/**
* @return bool|string
*/
public function getCodeFromCache()
{
$code = Cache::pull($this->getCacheKey());
return $code === null ? false : $code;
}
public function getCacheKey()
{
return $this->phone . '-' . $this->type . '-' . $this->agent;
}
/**
* @return string
*/
public function getType(): string
{
return $this->type;
}
/**
* @param string $type
*/
public function setType(string $type): void
{
$this->type = $type;
}
/**
* @return string
*/
public function getPhone(): string
{
return $this->phone;
}
/**
* @param string $phone
*/
public function setPhone(string $phone): void
{
$this->phone = $phone;
}
/**
* @return int
*/
public function getCode(): int
{
return $this->code;
}
/**
* @param int $code
*/
public function setCode(int $code): void
{
$this->code = $code;
}
/**
* @return string
*/
public function getTemplateCode(): string
{
return $this->templateCode;
}
/**
* @param string $templateCode
*/
public function setTemplateCode(string $templateCode): void
{
$this->templateCode = $templateCode;
}
/**
* @return string
*/
public function getSignName(): string
{
return $this->signName;
}
/**
* @param string $signName
*/
public function setSignName(string $signName): void
{
$this->signName = $signName;
}
/**
* @return string
*/
public function getMessage(): string
{
return $this->message;
}
/**
* @param string $message
*/
public function setMessage(string $message): void
{
$this->message = $message;
}
/**
* @return int
*/
public function getValidTime(): int
{
return $this->validTime;
}
/**
* @param int $validTime
*/
public function setValidTime(int $validTime): void
{
$this->validTime = $validTime;
}
/**
* @return string
*/
public function getAgent(): string
{
return $this->agent;
}
/**
* @param string $agent
*/
public function setAgent(string $agent): void
{
$this->agent = $agent;
}
}
<?php
/**
* Created by PhpStorm.
* User: banice
* Date: 2018/9/13
* Time: 下午8:59
*/
namespace Lib\wx;
use Lib\wx\pay\Order;
use Spatie\ArrayToXml\ArrayToXml;
class Client
{
private $response = [];
/**
* @param Order $order
* @param string $url
* @throws \Exception
* @return bool
*/
public function request(Order $order, string $url): bool
{
$client = new \GuzzleHttp\Client();
$content = $order->getOrderRequest();
$body = [];
foreach ($content as $key => $value) {
$body[$key] = ['_cdate' => $value];
}
$body = ArrayToXml::convert($body);
$response = $client->post($url, [
'Content-Type' => 'text/xml',
'body' => $body,
]);
if ($response->getStatusCode() === 200) {
$this->response = Tool::xmlToArray($response->getBody()->getContents());
if ($this->response['return_code'] === 'SUCCESS' && Tool::validateSign($this->response) && $this->response['result_code'] === 'SUCCESS') {
return true;
}
}
return false;
}
/**
* @return array
*/
public function getResponse(): array
{
return $this->response;
}
}
\ No newline at end of file
<?php
/**
* Created by PhpStorm.
* User: banice
* Date: 2018/9/13
* Time: 下午9:04
*/
namespace Lib\wx;
class Tool
{
/**
* @param array $content
* @return string
*/
public static function sign(array $content): string
{
$content = array_filter($content, function ($value, $key) {
return filled($value);
}, ARRAY_FILTER_USE_BOTH);
ksort($content);
$str = '';
foreach ($content as $key => $value) {
$str .= ($key . '=' . $value . '&');
}
$str = $str . 'key=' . config('wx.app_key');
return strtoupper(md5($str));
}
/**
* @param array $content
* @return bool
* @throws \Exception
*/
public static function validateSign(array $content): bool
{
if (isset($content['sign']) === false) {
throw new \Exception('miss sign');
}
$sign = $content['sign'];
unset($content['sign']);
$madeSign = static::sign($content);
return $madeSign === $sign;
}
/**
* @param string $xml
* @return array
*/
public static function xmlToArray(string $xml): array
{
return json_decode(json_encode(simplexml_load_string($xml, 'SimpleXmlElement', LIBXML_NOCDATA)), true);
}
}
\ No newline at end of file
...@@ -16,6 +16,13 @@ class User ...@@ -16,6 +16,13 @@ class User
private $sessionId = ''; private $sessionId = '';
private $phone = '';
private $purePhone = '';
private $countryCode = 0;
/** /**
* @return string * @return string
*/ */
...@@ -48,7 +55,53 @@ class User ...@@ -48,7 +55,53 @@ class User
$this->sessionId = $sessionId; $this->sessionId = $sessionId;
} }
/**
* @return string
*/
public function getPhone(): string
{
return $this->phone;
}
/**
* @param string $phone
*/
public function setPhone(string $phone): void
{
$this->phone = $phone;
}
/**
* @return string
*/
public function getPurePhone(): string
{
return $this->purePhone;
}
/**
* @param string $purePhone
*/
public function setPurePhone(string $purePhone): void
{
$this->purePhone = $purePhone;
}
/**
* @return int
*/
public function getCountryCode(): int
{
return $this->countryCode;
}
/**
* @param int $countryCode
*/
public function setCountryCode(int $countryCode): void
{
$this->countryCode = $countryCode;
}
} }
\ No newline at end of file
<?php
/**
* Created by PhpStorm.
* User: banice
* Date: 2018/9/13
* Time: 下午9:00
*/
namespace Lib\wx\pay;
interface Order
{
public function getOrderRequest(): array;
}
\ No newline at end of file
<?php
/**
* Created by PhpStorm.
* User: suhangyang
* Date: 2018/5/1
* Time: 下午1:07
*/
namespace Lib\wx;
use Lib\wx\pay\Order;
use Mockery\Exception;
/**
* 微信支付
* Class Pay
* @package Lib\wx
*/
class UnifiedOrder implements Order
{
/**
* 统一下单接口
*/
const REQUEST_URL = 'https://api.mch.weixin.qq.com/pay/unifiedorder';
/**
* @var array
*/
private $requestParameters = [
'appid' => '',
'mch_id' => '',
'nonce_str' => '',
'sign' => '',
'sign_type' => 'MD5',
'body' => '',
'detail' => '',
'attach' => '',
'out_trade_no' => '',
'fee_type' => '',
'total_fee' => '',
'spbill_create_ip' => '',
'time_start' => '',
'time_expire' => '',
'goods_tag' => '',
'notify_url' => '',
'trade_type' => 'JSAPI',
'product_id' => '',
'limit_pay' => '',
'openid' => '',
'scene_info' => '',
'device_info' => '',
];
/**
* @var string
*/
private $requestXml;
/**
* Pay constructor.
*/
public function __construct()
{
$this->requestParameters['appid'] = env('WX_APP_ID');
$this->requestParameters['mch_id'] = env('WX_MCH_ID');
// $urlGenerator = app('Dingo\Api\Routing\UrlGenerator');
//
// $urlGenerator->forceScheme('https');
//
// $notifyUrl = $urlGenerator->version('v1')->route('wx.receiver');
//
// $this->requestParameters['notify_url'] = $notifyUrl;
//
// unset($urlGenerator);
$this->requestParameters['nonce_str'] = str_random(32);
}
public function getOrderRequest(): array
{
$this->requestParameters = array_filter($this->requestParameters, function ($value, $key) {
return filled($value);
}, ARRAY_FILTER_USE_BOTH);
}
/**
* @param string $key
* @param $value
* @throws \Exception
*/
public function addParameter(string $key, $value)
{
if (isset($this->requestParameters[$key]) === true) {
$this->requestParameters[$key] = $value;
} else {
throw new \Exception('wrong parameter wx');
}
}
/**
* @param array $parameters
* @throws \Exception
*/
public function setParameters(array $parameters)
{
foreach ($parameters as $key => $value) {
$this->addParameter($key, $value);
}
}
}
...@@ -11,4 +11,33 @@ class Controller extends BaseController ...@@ -11,4 +11,33 @@ class Controller extends BaseController
use Helpers; use Helpers;
protected $returnCode = 200;
protected $resultCode = 'SUCCESS';
protected $resultMessage = '';
public function getResponseCode()
{
if (filled($this->resultMessage)) {
$data = [
'return_code' => $this->returnCode,
'result_code' => $this->resultCode,
'result_message' => $this->resultMessage
];
} else {
$data = [
'return_code' => $this->returnCode,
'result_code' => $this->resultCode,
];
}
return $data;
}
} }
<?php
/**
* Created by PhpStorm.
* User: banice
* Date: 2018/9/12
* Time: 下午3:54
*/
namespace App\Http\Controllers\v1;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
use Lib\dysms\Sms;
use Validator;
class SmsCodeController extends Controller
{
public function get(Request $request, Sms $sms)
{
$validator = Validator::make($request->all(), [
'phone' => 'required|digits:11',
'type' => 'required|in:register',
'agent' => 'required|in:wx,phone',
]);
if ($validator->fails() === true) {
abort(400, $validator->errors()->first());
}
$phone = $request->get('phone');
$code = rand(1000, 9999);
$agent = $request->get('agent');
$sms = new Sms();
$sms->setTemplateCode('SMS_102895045');
$sms->setSignName('阿里云短信测试专用');
$sms->setPhone($phone);
$sms->setAgent($agent);
$sms->setCode($code);
if ($sms->send() === false) {
$this->resultCode = 'FAIL';
$this->resultMessage = $sms->getMessage();
}
return $this->response->array($this->getResponseCode());
}
}
\ No newline at end of file
<?php
/**
* Created by PhpStorm.
* User: banice
* Date: 2018/9/13
* Time: 下午7:44
*/
namespace App\Http\Controllers\v1\battery;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
use Validator;
use Auth;
class BindController extends Controller
{
public function bind(Request $request)
{
$validator = Validator::make($request->all(), [
'battery_code' => 'required|exists:batteries,code',
]);
if ($validator->fails() === true) {
abort(400, $validator->errors()->first());
}
$user = Auth::user();
$userId = $user->id;
$batteryCode = $request->get('battery_code');
$user->battery_code = $batteryCode;
if ($user->save() == false) {
abort(500, 'save error');
}
return $this->response->array($this->getResponseCode());
}
}
\ No newline at end of file
...@@ -17,7 +17,6 @@ use Illuminate\Support\Facades\Validator; ...@@ -17,7 +17,6 @@ use Illuminate\Support\Facades\Validator;
use Lib\wx\Decode; use Lib\wx\Decode;
use Lib\wx\login\Login; use Lib\wx\login\Login;
use Lib\wx\User; use Lib\wx\User;
use Auth;
use Log; use Log;
class CodeController extends Controller class CodeController extends Controller
...@@ -27,8 +26,6 @@ class CodeController extends Controller ...@@ -27,8 +26,6 @@ class CodeController extends Controller
$code = $request->get('code'); $code = $request->get('code');
// return $this->response->array(['sfsds']);
$validator = Validator::make($request->all(), [ $validator = Validator::make($request->all(), [
'code' => 'required', 'code' => 'required',
...@@ -47,37 +44,56 @@ class CodeController extends Controller ...@@ -47,37 +44,56 @@ class CodeController extends Controller
if ($login->request() === true) { if ($login->request() === true) {
$userModel = new UserModel(); $userModel = new UserModel();
$wxUser = new User();
$openId = $login->getOpenId(); $openId = $login->getOpenId();
$sessionKey = $login->getSessionKey(); $sessionKey = $login->getSessionKey();
if($userModel->where('openid',$openId)->get())
{
}
$wxUser = new User();
$wxUser->setOpenId($openId); $wxUser->setOpenId($openId);
$wxUser->setSessionId($sessionKey); $wxUser->setSessionId($sessionKey);
if ($userModel->addWxUser($wxUser) === false) {
abort(500, 'add new user fail');
}
$iv = $request->get('iv'); $iv = $request->get('iv');
if ($decode->decode($request->get('encode'), $sessionKey, $iv) === 1) { if ($result = $decode->decode($request->get('encode'), $sessionKey, $iv) === 1) {
$output = $decode->getOutput(); $output = $decode->getOutput();
Log::debug('',$output); if ($output['watermark']['appid'] === env('WX_APP_ID')) {
$phoneNumber = $output['phoneNumber'];
$purePhoneNumber = $output['purePhoneNumber'];
$countryCode = $output['countryCode'];
$wxUser->setPhone($phoneNumber);
$wxUser->setPurePhone($purePhoneNumber);
$wxUser->setCountryCode($countryCode);
} else {
abort(400, 'app_id wrong');
}
} else {
abort(500, $request);
}
if ($userModel->where('openid', $openId)->update([
'session_key' => $sessionKey,
'telephone' => $phoneNumber,
'pure_phone' => $purePhoneNumber,
'country_code' => $countryCode,
]) === 0) {
if ($userModel->addWxUser($wxUser) === false) {
abort(500, 'add new user fail');
}
} }
$token = Auth::login($userModel);
return $this->response->array([ return $this->response->array([
'token' => $token, 'return_code' => 200,
'output' => $output 'result_code' => 'SUCCESS',
'data' => [
'phone' => $phoneNumber,
]
]); ]);
......
<?php
/**
* Created by PhpStorm.
* User: banice
* Date: 2018/9/10
* Time: 上午10:10
*/
namespace App\Http\Controllers\v1\wx\auth;
use App\Http\Controllers\Controller;
use App\model\UserModel;
use Flc\Dysms\Client;
use Flc\Dysms\Request\SendSms;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Log;
use Lib\dysms\Sms;
use Validator;
use Auth;
class RegisterController extends Controller
{
/**
* 手机用户注册登录
* 注册即登录
* @param Request $request
* @param Sms $sms
* @return string json
*/
public function register(Request $request, Sms $sms)
{
$validator = Validator::make($request->all(), [
'telephone' => 'required|digits:11',
'code' => 'required|digits:4',
]);
if ($validator->fails() === true) {
abort(400, $validator->errors()->first());
}
$telephone = $request->get('phone');
$code = $request->get('code');
$sms->setPhone($telephone);
$sms->setAgent('phone');
$codeCache = $sms->getCodeFromCache();
if ($codeCache === false || $codeCache != $code) {
abort(400, '验证码不存在或错误');
}
$userModel = UserModel::where('telephone', $telephone)->first();
if ($userModel === null) {
$userModel = new UserModel();
$userModel->telephone = $telephone;
if ($userModel->save() == false) {
$this->resultCode = 'FAIL';
$this->returnCode = 50001;
return $this->response->array($this->getResponseCode());
}
}
$token = Auth::login($userModel);
return $this->response->array($this->getResponseCode() + ['data' => ['token' => $token]]);
}
/**
* 微信用户登录
* @param Request $request
* @param Sms $sms
*/
public function wxRegister(Request $request, Sms $sms)
{
$validator = Validator::make($request->all(), [
'phone' => 'required|digits:11|exists:guests,telephone',
'code' => 'required|digits:4',
]);
if ($validator->fails() === true) {
abort(400, $validator->errors()->first());
}
$phone = $request->get('phone');
$code = $request->get('code');
$sms->setPhone($phone);
$codeCache = $sms->getCodeFromCache();
if ($codeCache === false || $codeCache != $code) {
abort(400, '验证码不存在或错误');
}
$userModel = UserModel::where('telephone', $phone)->first();
$token = Auth::login($userModel);
return $this->response->array($this->getResponseCode() + ['data' => ['token' => $token]]);
}
/**
* 获取注册验证码
* @param Request $request
* @return mixed
*/
public function getCode(Request $request)
{
$validator = Validator::make($request->all(), [
'phone' => 'required|digits:11'
]);
if ($validator->fails() === true) {
abort(400, $validator->errors()->first());
}
$phone = $request->get('phone');
$code = rand(1000, 9999);
$sms = new Sms();
$sms->setTemplateCode('SMS_102895045');
$sms->setSignName('阿里云短信测试专用');
$sms->setPhone($phone);
$sms->setCode($code);
if ($sms->send() === false) {
$this->resultCode = 'FAIL';
$this->resultMessage = $sms->getMessage();
}
return $this->response->array($this->getResponseCode());
}
}
\ No newline at end of file
<?php
/**
* Created by PhpStorm.
* User: banice
* Date: 2018/9/7
* Time: 下午3:36
*/
namespace App\Http\Controllers\v1\wx\auth;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
use Lib\wx\Decode;
class UserController extends Controller
{
public function getUserInfo(Request $request, Decode $decode)
{
}
}
\ No newline at end of file
<?php
/**
* Created by PhpStorm.
* User: banice
* Date: 2018/9/13
* Time: 下午7:30
*/
namespace App\Http\Controllers\v1\wx\pay;
use App\Http\Controllers\Controller;
use App\model\ActivityModel;
use App\model\TicketModel;
use Auth;
class ActivityController extends Controller
{
public function getTicket()
{
$date = date('Y-m-d H:i:s');
$user = Auth::user();
$userId = $user->id;
$tickets = TicketModel::where([
['guest_id', $userId],
])->get(['activity_name', 'apply_date', 'status', 'begin_date', 'end_date'])->toArray();
return $this->response->array($this->getResponseCode() + [
'data' => [
'count' => count($tickets),
'tickets' => $tickets
]
]);
}
}
\ No newline at end of file
<?php
/**
* Created by PhpStorm.
* User: banice
* Date: 2018/9/13
* Time: 下午7:25
*/
namespace App\Http\Controllers\v1\wx\pay;
use App\Http\Controllers\Controller;
use App\model\PayGroupModel;
class CardController extends Controller
{
public function get()
{
$date = date('Y-m-d H:i:s');
$payGroup = PayGroupModel::where([
['status', 1],
['begin_date', '<', $date],
['end_date', '>', $date],
['type', 2],
])->get(['money'])->toArray();
return $this->response->array($this->getResponseCode() + [
'data' =>
[
'count' => count($payGroup),
'items' => $payGroup
],
]);
}
}
\ No newline at end of file
<?php
/**
* Created by PhpStorm.
* User: banice
* Date: 2018/9/13
* Time: 下午1:54
*/
namespace App\Http\Controllers\v1\wx\pay;
use App\Http\Controllers\Controller;
use App\model\SystemModel;
use Illuminate\Http\Request;
use Lib\wx\Client;
use Lib\wx\login\Login;
use Lib\wx\UnifiedOrder;
use Validator;
class DepositController extends Controller
{
public function getPrice(Request $request)
{
$deposit = SystemModel::first(['money']);
if ($deposit === null || isset($deposit->money) === false) {
abort(500, 'miss deposit data');
}
$price = $deposit->money;
if ($price <= 0) {
abort(500, 'deposit wrong');
}
return $this->response->array($this->getResponseCode() + [
'data' => [
'deposit' => $price
]
]);
}
/**
* @param Request $request
* @param Login $login
* @param UnifiedOrder $unifiedOrder
* @throws \Exception
*/
public function pay(Request $request, UnifiedOrder $unifiedOrder)
{
$validator = Validator::make($request->all(), [
'amount' => 'required|int',
'code' => 'required'
]);
$code = $request->get('code');
$login = new Login($code);
if ($login->request() === true) {
$openid = $login->getOpenId();
//fixme 存储用户的sessionId
}
//todo 验证押金金额
$amount = $request->get('amount');
$amount *= 100;
$notifyUrl = '';
$unifiedOrder->setParameters([
'body' => '支付押金',
'out_trade_no' => time() . rand(100000, 999999),
'total_fee' => $amount,
'spbill_create_ip' => $request->getClientIp(),
'notify_url' => $notifyUrl,
'trade_type' => 'JSAPI',
'openid' => $openid,
]);
$client = new Client();
if ($client->request($unifiedOrder, config('wx.unified_order_url')) === true) {
}
}
}
<?php
/**
* Created by PhpStorm.
* User: banice
* Date: 2018/9/13
* Time: 下午7:08
*/
namespace App\Http\Controllers\v1\wx\pay;
use App\Http\Controllers\Controller;
use App\model\PayGroupModel;
use Carbon\Carbon;
class TopUpController extends Controller
{
public function get()
{
$date = date('Y-m-d H:i:s');
$payGroup = PayGroupModel::where([
['status', 1],
['begin_date', '<', $date],
['end_date', '>', $date],
['type', 1],
])->get(['money'])->toArray();
return $this->response->array($this->getResponseCode() + [
'data' =>
[
'count' => count($payGroup),
'items' => $payGroup
],
]);
}
}
\ No newline at end of file
...@@ -17,7 +17,7 @@ class Authenticate ...@@ -17,7 +17,7 @@ class Authenticate
/** /**
* Create a new middleware instance. * Create a new middleware instance.
* *
* @param \Illuminate\Contracts\Auth\Factory $auth * @param \Illuminate\Contracts\Auth\Factory $auth
* @return void * @return void
*/ */
public function __construct(Auth $auth) public function __construct(Auth $auth)
...@@ -28,15 +28,17 @@ class Authenticate ...@@ -28,15 +28,17 @@ class Authenticate
/** /**
* Handle an incoming request. * Handle an incoming request.
* *
* @param \Illuminate\Http\Request $request * @param \Illuminate\Http\Request $request
* @param \Closure $next * @param \Closure $next
* @param string|null $guard * @param string|null $guard
* @return mixed * @return mixed
*/ */
public function handle($request, Closure $next, $guard = null) public function handle($request, Closure $next, $guard = null)
{ {
if ($this->auth->guard($guard)->guest()) { if ($this->auth->guard($guard)->guest()) {
return response('Unauthorized.', 401);
abort(401, 'token wrong');
} }
return $next($request); return $next($request);
......
<?php
/**
* Created by PhpStorm.
* User: banice
* Date: 2018/9/13
* Time: 下午7:29
*/
namespace App\model;
use Illuminate\Database\Eloquent\Model;
class ActivityModel extends Model
{
protected $table = 'activities';
}
\ No newline at end of file
<?php
/**
* Created by PhpStorm.
* User: banice
* Date: 2018/9/13
* Time: 下午7:10
*/
namespace App\model;
use Illuminate\Database\Eloquent\Model;
class PayGroupModel extends Model
{
protected $table = 'pay_groups';
}
\ No newline at end of file
<?php
/**
* Created by PhpStorm.
* User: banice
* Date: 2018/9/13
* Time: 下午2:28
*/
namespace App\model;
use Illuminate\Database\Eloquent\Model;
class SystemModel extends Model
{
protected $table = 'system';
}
\ No newline at end of file
<?php
/**
* Created by PhpStorm.
* User: banice
* Date: 2018/9/13
* Time: 下午7:34
*/
namespace App\model;
use Illuminate\Database\Eloquent\Model;
class TicketModel extends Model
{
protected $table = 'tickets';
}
\ No newline at end of file
...@@ -33,10 +33,20 @@ class UserModel extends Model implements JWTSubject, AuthenticatableContract, Au ...@@ -33,10 +33,20 @@ class UserModel extends Model implements JWTSubject, AuthenticatableContract, Au
public function getJWTCustomClaims() public function getJWTCustomClaims()
{ {
return [ $return = [
'wx_authorize' => false
]; ];
if (isset($this->openid) === true) {
if ($this->openid != null) {
$return['wx_authorize'] = true;
}
}
return $return;
} }
...@@ -44,6 +54,9 @@ class UserModel extends Model implements JWTSubject, AuthenticatableContract, Au ...@@ -44,6 +54,9 @@ class UserModel extends Model implements JWTSubject, AuthenticatableContract, Au
{ {
$this->openid = $user->getOpenId(); $this->openid = $user->getOpenId();
$this->session_key = $user->getSessionId(); $this->session_key = $user->getSessionId();
$this->telephone = $user->getPhone();
$this->pure_phone = $user->getPurePhone();
$this->country_code = $user->getCountryCode();
return $this->save(); return $this->save();
......
...@@ -27,6 +27,8 @@ $app = new Laravel\Lumen\Application( ...@@ -27,6 +27,8 @@ $app = new Laravel\Lumen\Application(
$app->configure('auth'); $app->configure('auth');
$app->configure('logging'); $app->configure('logging');
$app->configure('dysms');
$app->withFacades(); $app->withFacades();
...@@ -101,6 +103,8 @@ $app->register(App\Providers\AppServiceProvider::class); ...@@ -101,6 +103,8 @@ $app->register(App\Providers\AppServiceProvider::class);
$app->register(App\Providers\AuthServiceProvider::class); $app->register(App\Providers\AuthServiceProvider::class);
// $app->register(App\Providers\EventServiceProvider::class); // $app->register(App\Providers\EventServiceProvider::class);
$app->register(Tymon\JWTAuth\Providers\LumenServiceProvider::class); $app->register(Tymon\JWTAuth\Providers\LumenServiceProvider::class);
$app->register(\Overtrue\LaravelLang\TranslationServiceProvider::class);
$app->register(Dingo\Api\Provider\LumenServiceProvider::class); $app->register(Dingo\Api\Provider\LumenServiceProvider::class);
...@@ -129,8 +133,9 @@ app('Dingo\Api\Transformer\Factory')->setAdapter(function ($app) { ...@@ -129,8 +133,9 @@ app('Dingo\Api\Transformer\Factory')->setAdapter(function ($app) {
$app['Dingo\Api\Exception\Handler']->setErrorFormat([ $app['Dingo\Api\Exception\Handler']->setErrorFormat([
'error_message' => ':message', 'error_message' => ':message',
'return_code' => ':status_code', 'return_code' => ':status_code',
'debug' => ':debug', 'result_code' => 'FAIL',
'debug' => ':debug',
]); ]);
......
...@@ -10,7 +10,10 @@ ...@@ -10,7 +10,10 @@
"vlucas/phpdotenv": "~2.2", "vlucas/phpdotenv": "~2.2",
"dingo/api": "2.0.0-alpha1", "dingo/api": "2.0.0-alpha1",
"tymon/jwt-auth": "^1.0@dev", "tymon/jwt-auth": "^1.0@dev",
"guzzlehttp/guzzle": "~6.0" "guzzlehttp/guzzle": "~6.0",
"flc/dysms": "^1.0",
"spatie/array-to-xml": "^2.7",
"overtrue/laravel-lang": "^3.0"
}, },
"require-dev": { "require-dev": {
"fzaninotto/faker": "~1.4", "fzaninotto/faker": "~1.4",
......
...@@ -4,9 +4,51 @@ ...@@ -4,9 +4,51 @@
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
"This file is @generated automatically" "This file is @generated automatically"
], ],
"content-hash": "73cd1712cc30f4f6ce5d8237970d4730", "content-hash": "28c3fdf8688a553a072f236f8c7a53fd",
"packages": [ "packages": [
{ {
"name": "caouecs/laravel-lang",
"version": "3.0.54",
"source": {
"type": "git",
"url": "https://github.com/caouecs/Laravel-lang.git",
"reference": "eaa1e26eb643d7fc696d410b45e55290143e1f7f"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/caouecs/Laravel-lang/zipball/eaa1e26eb643d7fc696d410b45e55290143e1f7f",
"reference": "eaa1e26eb643d7fc696d410b45e55290143e1f7f",
"shasum": ""
},
"require-dev": {
"friendsofphp/php-cs-fixer": "^2.10"
},
"suggest": {
"ablunier/laravel-lang-installer": "Command for easily add languages to a Laravel project",
"arcanedev/laravel-lang": "Translations manager and checker for Laravel 5",
"overtrue/laravel-lang": "Command to add languages in your project"
},
"type": "library",
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "caouecs",
"email": "caouecs@caouecs.net"
}
],
"description": "Languages for Laravel",
"keywords": [
"lang",
"languages",
"laravel",
"lpm"
],
"time": "2018-07-13T08:44:04+00:00"
},
{
"name": "dingo/api", "name": "dingo/api",
"version": "v2.0.0-alpha1", "version": "v2.0.0-alpha1",
"source": { "source": {
...@@ -333,6 +375,43 @@ ...@@ -333,6 +375,43 @@
"time": "2014-09-09T13:34:57+00:00" "time": "2014-09-09T13:34:57+00:00"
}, },
{ {
"name": "flc/dysms",
"version": "v1.0.2",
"source": {
"type": "git",
"url": "https://github.com/flc1125/dysms.git",
"reference": "a32a8f7ae8a493d4eb48a8d82c200b3b358c74d1"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/flc1125/dysms/zipball/a32a8f7ae8a493d4eb48a8d82c200b3b358c74d1",
"reference": "a32a8f7ae8a493d4eb48a8d82c200b3b358c74d1",
"shasum": ""
},
"require": {
"php": ">=5.4.0"
},
"type": "library",
"autoload": {
"psr-4": {
"Flc\\Dysms\\": "src/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"description": "阿里短信-适用Laravel、Yii、Thinkphp等任何PHP项目...",
"keywords": [
"alisms",
"aliyun",
"dysms",
"flc",
"阿里短信"
],
"time": "2018-01-16T03:55:46+00:00"
},
{
"name": "guzzlehttp/guzzle", "name": "guzzlehttp/guzzle",
"version": "6.3.3", "version": "6.3.3",
"source": { "source": {
...@@ -2123,6 +2202,57 @@ ...@@ -2123,6 +2202,57 @@
"time": "2018-02-13T20:26:39+00:00" "time": "2018-02-13T20:26:39+00:00"
}, },
{ {
"name": "overtrue/laravel-lang",
"version": "3.0.13",
"source": {
"type": "git",
"url": "https://github.com/overtrue/laravel-lang.git",
"reference": "11d8386a5dee3cfedf4ee7e2da6af0d3b3fe268a"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/overtrue/laravel-lang/zipball/11d8386a5dee3cfedf4ee7e2da6af0d3b3fe268a",
"reference": "11d8386a5dee3cfedf4ee7e2da6af0d3b3fe268a",
"shasum": ""
},
"require": {
"caouecs/laravel-lang": "~3.0"
},
"type": "library",
"extra": {
"laravel": {
"providers": [
"Overtrue\\LaravelLang\\TranslationServiceProvider"
]
}
},
"autoload": {
"psr-4": {
"Overtrue\\LaravelLang\\": "src/"
},
"files": [
"src/helpers.php"
]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "overtrue",
"email": "anzhengchao@gmail.com"
}
],
"description": "List of 52 languages for Laravel 5",
"keywords": [
"languages",
"laravel",
"overtrue"
],
"time": "2018-09-03T09:31:08+00:00"
},
{
"name": "paragonie/random_compat", "name": "paragonie/random_compat",
"version": "v9.99.99", "version": "v9.99.99",
"source": { "source": {
...@@ -2514,6 +2644,55 @@ ...@@ -2514,6 +2644,55 @@
"time": "2017-10-23T01:57:42+00:00" "time": "2017-10-23T01:57:42+00:00"
}, },
{ {
"name": "spatie/array-to-xml",
"version": "2.7.1",
"source": {
"type": "git",
"url": "https://github.com/spatie/array-to-xml.git",
"reference": "cb8befcd0c58ccf8baa5491e61a5c1d02a3acbba"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/spatie/array-to-xml/zipball/cb8befcd0c58ccf8baa5491e61a5c1d02a3acbba",
"reference": "cb8befcd0c58ccf8baa5491e61a5c1d02a3acbba",
"shasum": ""
},
"require": {
"php": "^7.0"
},
"require-dev": {
"mockery/mockery": "^1.0",
"phpunit/phpunit": "^6.3",
"spatie/phpunit-snapshot-assertions": "^1.0"
},
"type": "library",
"autoload": {
"psr-4": {
"Spatie\\ArrayToXml\\": "src"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Freek Van der Herten",
"email": "freek@spatie.be",
"homepage": "https://murze.be",
"role": "Developer"
}
],
"description": "Convert an array to xml",
"homepage": "https://github.com/spatie/array-to-xml",
"keywords": [
"array",
"convert",
"xml"
],
"time": "2018-02-20T15:21:24+00:00"
},
{
"name": "symfony/console", "name": "symfony/console",
"version": "v3.4.15", "version": "v3.4.15",
"source": { "source": {
......
<?php
/**
* Created by PhpStorm.
* User: banice
* Date: 2018/9/11
* Time: 下午1:42
*/
return [
'accessKeyId' => env('DY_ACCESS_KEY'),
'accessKeySecret' => env('DY_ACCESS_SECRET'),
];
...@@ -20,9 +20,11 @@ return [ ...@@ -20,9 +20,11 @@ return [
'cache_user_token' => 'wx_user_token_', 'cache_user_token' => 'wx_user_token_',
'appId' => env('WX_APP_ID'), 'app_id' => env('WX_APP_ID'),
'appSecret' => env('WX_APP_SECRET'), 'app_secret' => env('WX_APP_SECRET'),
'mch_id' => env('WX_MCH_ID'), 'mch_id' => env('WX_MCH_ID'),
'lang' => env('WX_LANG'), 'lang' => env('WX_LANG'),
'app_key' => env('WX_APP_KEY'),
'unified_order_url' => 'https://api.mch.weixin.qq.com/pay/unifiedorder',
]; ];
\ No newline at end of file
# 换电柜微信小程序api # 换电柜微信小程序api
* 9-7
code获取openid,sessionKey,解密用户加密数据。
\ No newline at end of file
...@@ -19,11 +19,35 @@ $router->get('/', function () use ($router) { ...@@ -19,11 +19,35 @@ $router->get('/', function () use ($router) {
$api = app('Dingo\Api\Routing\Router'); $api = app('Dingo\Api\Routing\Router');
$api->version('v1', ['namespace' => 'App\Http\Controllers\v1\wx', 'prefix' => 'api/wx','middleware' => ['addResultCode']], function ($api) { $api->version('v1', ['namespace' => 'App\Http\Controllers\v1', 'prefix' => 'api/wx', 'middleware' => ['addResultCode']], function ($api) {
$api->get('code', 'auth\CodeController@login'); $api->post('test', function () {
dd(1);
});
$api->get('code', 'wx\auth\CodeController@login');
$api->get('user/phone/register', 'wx\auth\RegisterController@register');
$api->get('user/register', 'wx\auth\RegisterController@wxRegister');
$api->get('sms/code', 'SmsCodeController@get');
$api->get('deposit', 'wx\pay\DepositController@getPrice');
$api->get('top_up/items', 'wx\pay\TopUpController@get');
$api->get('card/items', 'wx\pay\CardController@get');
$api->group(['prefix' => '', 'middleware' => 'auth:api'], function ($api) {
$api->get('tickets', 'wx\pay\ActivityController@getTicket');
});
}); });
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment