更新支付

This commit is contained in:
sunday 2024-04-18 22:16:09 +08:00
parent c61ed58c4a
commit a9da43c26c
5 changed files with 53 additions and 18 deletions

View File

@ -55,4 +55,4 @@ class ApiController extends BaseController
{
return $this->ignoreAction;
}
}
}

View File

@ -18,6 +18,7 @@ use app\common\models\Protocol;
use app\common\services\Session;
use app\frontend\models\MemberShopInfo;
use app\frontend\modules\member\services\factory\MemberFactory;
use app\frontend\modules\member\services\MemberOfficeAccountService;
use app\frontend\modules\member\services\MemberService;
use Illuminate\Contracts\Encryption\DecryptException;
@ -33,15 +34,17 @@ class LoginController extends ApiController
$uniacid = \YunShop::app()->uniacid;
$mid = Member::getMid();
//判断是否开启微信登录
if (\YunShop::request()->show_wechat_login) {
return $this->init_login();
}
if (request()->input('iscode') == 1 || request()->input('code')!=1) {
$className = new MemberOfficeAccountService();
$className->getWechatOpenid();
}
if (!empty($type)) {
$member = MemberFactory::create($type);
if ($member !== null) {
$msg = $member->login();
@ -231,6 +234,7 @@ class LoginController extends ApiController
$data['title2'] = $registerSet['title2'] ? : '登录尽享各种优惠权益!';
$data['login_page_mode'] = $registerSet['login_page_mode'] ? : 0;
$data['login_banner_url'] = $registerSet['login_banner'] ? yz_tomedia($registerSet['login_banner']): '';
$data['login_diy_url'] = $registerSet['login_diy_url'] ? : '';
$registerSet['login_mode'] || $registerSet['login_mode'] = [];
$data['mobile_code_login'] = !$registerSet['login_mode'] || in_array('mobile_code',$registerSet['login_mode']) ? 1 : 0;//开启手机验证码登录

View File

@ -1,7 +1,7 @@
<?php
/**
* Created by PhpStorm.
* Author:
* Author:
* Date: 17/2/22
* Time: 下午4:44
*/
@ -73,20 +73,49 @@ class MemberOfficeAccountService extends MemberService
$member_id = $this->memberLogin($userinfo);
if($member_id) event(new \app\common\events\member\MemberLoginEvent($member_id));
Session::set('member_id', $member_id);
setcookie('Yz-Token', encrypt($userinfo['access_token'] . '\t' . ($userinfo['expires_in'] + time()) . '\t' . $userinfo['openid'] . '\t' . $scope), time() + self::TOKEN_EXPIRE);
} else {
$this->_setClientRequestUrl();
$oauth->redirect()->send();
exit;
}
redirect($this->_getClientRequestUrl())->send();
exit;
}
public function getWechatOpenid()
{
$uniacid = \YunShop::app()->uniacid;
$code = \YunShop::request()->code;
$account = AccountWechats::getAccountByUniacid($uniacid);
$appId = $account->key;
$appSecret = $account->secret;
$state = 'yz-' . session_id();
$callback = ($_SERVER['REQUEST_SCHEME'] ? $_SERVER['REQUEST_SCHEME'] : 'http') . '://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'];
$authurl = $this->_getAuthBaseUrl($appId, $callback, $state);
$tokenurl = $this->_getTokenUrl($appId, $appSecret, $code);
if (!empty($code)) {
$redirect_url = base64_decode(\YunShop::request()->page).'&code=1';
$token = \Curl::to($tokenurl)
->asJsonResponse(true)
->get();
if (!empty($token) && !empty($token['errmsg']) && $token['errmsg'] == 'invalid code') {
return show_json(5, 'token请求错误');
}
$userinfo = $this->getUserInfo($appId, $appSecret, $token);
if (is_array($userinfo) && !empty($userinfo['errcode'])) {
\Log::debug('微信登陆授权失败-' . $userinfo['errcode']);
return show_json(-3, '微信登陆授权失败');
}
Session::set('wx_open_id', $token['openid']);
redirect($redirect_url)->send();
} else {
redirect($authurl)->send();
}
}
/**
* 获取用户信息
*

View File

@ -1,4 +1,5 @@
<?php
namespace BsPaySdk\core;
use Exception;
@ -24,7 +25,8 @@ class BsPayClient extends BsPay
* boolean $tag true (页面接口请求) | false (非页面接口请求)
* CURLFile $tag 待上传的文件
*/
public function postRequest($request, $tag = false) {
public function postRequest($request, $tag = false)
{
try {
// 请求接口获取应答
if (is_object($request)) {
@ -32,20 +34,17 @@ class BsPayClient extends BsPay
} else {
$data = $request;
}
// 处理文件上传接口
if (is_object($tag)) {
$data['params']['needSign'] = false; // 请求不加签名
$data['params']['needVerfySign'] = false; // 返回数据不验证签名
return self::post($data['funcCode'], $data['params'], $tag, $this->merChantKey);
}
// 处理页面接口请求
if ($tag) {
$data['params']['needSign'] = true; // 请求加签名
$data['params']['needVerfySign'] = false; // 返回数据不验证签名
}
return self::post($data['funcCode'], $data['params'], "", $this->merChantKey);
} catch (Exception $e) {
echo $e->getMessage();
@ -55,9 +54,10 @@ class BsPayClient extends BsPay
/**
* 对象转换数组
* @param object $object 待转化参数对象
* @param object $object 待转化参数对象
*/
public function objectToArray($object) {
public function objectToArray($object)
{
$class = new ReflectionClass($object);
$properties = $class->getProperties();
$arrayData = array();
@ -66,8 +66,8 @@ class BsPayClient extends BsPay
// 转换接口参数
foreach ($properties as $key => $value) {
$attrName = $value->getName();
$method = 'get'.ucfirst($attrName);
if ( $class->hasMethod($method) ) {
$method = 'get' . ucfirst($attrName);
if ($class->hasMethod($method)) {
$attrValue = $class->getMethod($method)->invoke($object);
if (isset($attrValue)) {
if ($attrName != "extendInfos") {
@ -91,4 +91,4 @@ class BsPayClient extends BsPay
return $data;
}
}
}

View File

@ -7,6 +7,7 @@ use app\common\helpers\Url;
use app\common\models\Member;
use app\common\models\PayOrder;
use app\common\services\Pay;
use app\common\services\Session;
use BsPaySdk\core\BsPay;
use BsPaySdk\core\BsPayClient;
use BsPaySdk\request\V2TradePaymentJspayRequest;
@ -80,6 +81,7 @@ class HfPay extends Pay
$op = "{$this->payTpye[$this->TradeType]}订单支付 订单号:" . $data['order_no'];
$this->log($data['extra']['type'], $this->payTpye[$this->TradeType], $data['amount'], $op, $data['order_no'], Pay::ORDER_STATUS_NON, \YunShop::app()->getMemberId());
$this->notify_url = Url::shopSchemeUrl('payment/hfpay/notifyUrl.php');
// 2.组装请求参数
$request = new V2TradePaymentJspayRequest();
@ -166,7 +168,7 @@ class HfPay extends Pay
case 'T_H5':
$openid = Member::getOpenIdForType(\YunShop::app()->getMemberId());
$data['wx_data'] = [
'openid' => $openid
'openid' => $openid?: Session::get('wx_open_id')
];
break;
case 'A_JSAPI':
@ -202,4 +204,4 @@ class HfPay extends Pay
{
}
}
}