| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187 |
- <?php
- /**
- * 重庆赤晓店信息科技有限公司
- * https://www.chixiaodian.com
- * Copyright (c) 2023 赤店商城 All rights reserved.
- */
- namespace app\modules\client\models\v1;
- use app\models\Option;
- use app\models\User;
- use app\modules\admin\models\AlipayThirdForm;
- use app\modules\client\models\ApiModel;
- use app\utils\Alipay\alipaySdk\aop\request\AlipaySystemOauthTokenRequest;
- use app\utils\Wechat\WechatMini;
- use Exception;
- use Overtrue\Socialite\SocialiteManager;
- use Yansongda\Pay\Gateways\Wechat;
- use yii\helpers\Json;
- class UserForm extends ApiModel
- {
- public $store_id;
- public $user_id;
- public $code;
- public $encryptedData;
- public $iv;
- public $phone;
- public $phone_code;
- public $bind_type;
- public $binding;
- public $platform;
- /**
- * Undocumented function
- *
- * @Author LGL 24963@qq.com
- * @DateTime 2021-02-04
- * @desc: 微信小程序授权绑定手机号
- * @return array
- */
- public function WxBinding () {
- try {
- $session = self::getWechat()->auth->session($this->code);
- $decryptedData = self::getWechat()->encryptor->decryptData($session['session_key'], $this->iv, $this->encryptedData);
- $user = User::findOne(['id' => get_user_id()]);
- $user->binding = $decryptedData['phoneNumber'];
- if (!$user->save()) {
- throw new Exception("保存失败");
- }
- } catch (\Exception $e) {
- return [
- 'code' => 1,
- 'msg' => $e->getMessage()
- ];
- }
- return [
- 'code' => 0,
- 'msg' => '绑定成功',
- 'data' => [
- 'dataObj' => $decryptedData['phoneNumber']
- ]
- ];
- }
- public function userEmpower()
- {
- if (!$this->validate()) {
- return [
- 'code' => 1,
- 'msg' => $this->getErrorSummary(false)[0],
- ];
- }
- if ($this->bind_type != 2) {
- return [
- 'code' => 1,
- 'msg' => '参数错误'
- ];
- }
- $user = User::find()->where(['store_id' => $this->store_id, 'id' => $this->user_id])->one();
- $mobile = $this->phone;
- if (!$mobile) {
- return [
- 'code'=>1,
- 'msg'=>'请输入手机号'
- ];
- }
- $message = \Yii::$app->cache->get('code_cache'.$mobile);
- if (!$this->phone_code) {
- return [
- 'code'=>1,
- 'msg'=>'请输入验证码'
- ];
- }
- if (!$message) {
- return [
- 'code'=>1,
- 'msg'=>'请先发送短信'
- ];
- }
- if (!$message->validate(intval($this->phone_code))) {
- return [
- 'code'=>1,
- 'msg'=>'验证码不正确'
- ];
- }
- $user->binding = $this->phone;
- if ($user->save()) {
- \Yii::$app->cache->delete('code_cache'.$mobile);
- return [
- 'code' => 0,
- 'msg'=>'保存成功'
- ];
- } else {
- return [
- 'code' => 1,
- 'msg' => 'fail'
- ];
- }
- }
- public function getOpenId($code, $params = []) {
- $mini_id = get_mini_id();
- $store_id = get_store_id();
- if (!empty($code)) {
- if (is_wechat_platform()) {
- $app = WechatMini::getWechatConfig($store_id, $mini_id);
- $result = $app->auth->session($code);
- $params['wechat_open_id'] = $result['openid'];
- $params['session_key'] = $result['session_key'];
- }
- if (is_alipay_platform()) {
- $form = new AlipayThirdForm();
- $form->method = "alipay.open.auth.token.app";
- $form->bind_store_id = get_store_id();
- if (is_isv()) {
- $request = new AlipaySystemOauthTokenRequest();
- $request->setGrantType("authorization_code");
- $request->setCode($code);
- $result = $form->miniCommon($request, 1, $mini_id, 0, 1);
- $params['ali_user_id'] = $result->user_id;
- $params['ali_open_id'] = $result->open_id;
- } else {
- if (\Yii::$app->prod_is_dandianpu() && self_mini() === false) {
- $alipay_config = Json::decode(Option::get('one_store_alipay_config', 0, 'saas', '')['value']);
- } else {
- $config_cache = \Yii::$app->cache->get('alipay_config_cache_' . $store_id);
- if ($config_cache) {
- $alipay_config = Json::decode($config_cache);
- } else {
- $alipay_config = Json::decode(Option::get(Option::OPTOPN_KEY, $store_id, 'alipay')['value']);
- }
- }
- $config = [
- 'alipay' => [
- 'client_id' => $alipay_config['app_id'],
- 'rsa_private_key' => $alipay_config['app_private_key'],
- ]
- ];
- $socialite = new SocialiteManager($config);
- $res_code = $socialite->create('alipay')->tokenFromCode($code);
- $params['ali_user_id'] = $res_code['user_id'];
- $params['ali_open_id'] = $res_code['open_id'];
- }
- }
- }
- return [
- $params['wechat_open_id'], $params['ali_user_id'], $params['ali_open_id'], $params['session_key']
- ];
- }
- }
|