mirror of
https://gitee.com/koogua/course-tencent-cloud.git
synced 2025-07-20 07:03:00 +08:00
更新H5支付方式
This commit is contained in:
parent
0217ae162d
commit
698b6028c2
@ -13,6 +13,7 @@ class Setting extends Service
|
||||
{
|
||||
$alipay = $this->getSettings('pay.alipay');
|
||||
|
||||
$alipay['return_url'] = $alipay['return_url'] ?: kg_full_url(['for' => 'home.alipay_callback']);
|
||||
$alipay['notify_url'] = $alipay['notify_url'] ?: kg_full_url(['for' => 'home.alipay_notify']);
|
||||
|
||||
return $alipay;
|
||||
@ -22,6 +23,7 @@ class Setting extends Service
|
||||
{
|
||||
$wxpay = $this->getSettings('pay.wxpay');
|
||||
|
||||
$wxpay['return_url'] = $wxpay['return_url'] ?: kg_full_url(['for' => 'home.wxpay_callback']);
|
||||
$wxpay['notify_url'] = $wxpay['notify_url'] ?: kg_full_url(['for' => 'home.wxpay_notify']);
|
||||
|
||||
return $wxpay;
|
||||
|
@ -24,6 +24,12 @@
|
||||
<input class="layui-input" type="text" name="notify_url" value="{{ alipay.notify_url }}" lay-verify="required">
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label">Return Url</label>
|
||||
<div class="layui-input-block">
|
||||
<input class="layui-input" type="text" name="return_url" value="{{ alipay.return_url }}" lay-verify="required">
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label"></label>
|
||||
<div class="layui-input-block">
|
||||
|
@ -30,6 +30,12 @@
|
||||
<input class="layui-input" type="text" name="notify_url" value="{{ wxpay.notify_url }}" lay-verify="required">
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label">Return Url</label>
|
||||
<div class="layui-input-block">
|
||||
<input class="layui-input" type="text" name="return_url" value="{{ wxpay.return_url }}" lay-verify="required">
|
||||
</div>
|
||||
</div>
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label"></label>
|
||||
<div class="layui-input-block">
|
||||
|
@ -25,26 +25,6 @@ class TradeController extends Controller
|
||||
return $this->jsonSuccess(['trade' => $trade]);
|
||||
}
|
||||
|
||||
/**
|
||||
* @Get("/h5/pay", name="api.trade.h5_pay")
|
||||
*/
|
||||
public function h5PayAction()
|
||||
{
|
||||
$sn = $this->request->getQuery('sn', 'string');
|
||||
|
||||
$service = new TradeService();
|
||||
|
||||
$response = $service->h5Pay($sn);
|
||||
|
||||
if (!$response) {
|
||||
echo "H5支付跳转失败,请回退重试";
|
||||
}
|
||||
|
||||
$response->send();
|
||||
|
||||
exit();
|
||||
}
|
||||
|
||||
/**
|
||||
* @Post("/h5/create", name="api.trade.h5_create")
|
||||
*/
|
||||
@ -52,13 +32,9 @@ class TradeController extends Controller
|
||||
{
|
||||
$service = new TradeService();
|
||||
|
||||
$trade = $service->createH5Trade();
|
||||
$content = $service->createH5Trade();
|
||||
|
||||
$service = new TradeInfoService();
|
||||
|
||||
$trade = $service->handle($trade->sn);
|
||||
|
||||
return $this->jsonSuccess(['trade' => $trade]);
|
||||
return $this->jsonSuccess($content);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -17,23 +17,6 @@ class Trade extends Service
|
||||
use OrderTrait;
|
||||
use TradeTrait;
|
||||
|
||||
public function h5Pay($sn)
|
||||
{
|
||||
$trade = $this->checkTradeBySn($sn);
|
||||
|
||||
$response = null;
|
||||
|
||||
if ($trade->channel == TradeModel::CHANNEL_ALIPAY) {
|
||||
$alipay = new Alipay();
|
||||
$response = $alipay->wap($trade);
|
||||
} elseif ($trade->channel == TradeModel::CHANNEL_WXPAY) {
|
||||
$wxpay = new Wxpay();
|
||||
$response = $wxpay->wap($trade);
|
||||
}
|
||||
|
||||
return $response;
|
||||
}
|
||||
|
||||
public function createH5Trade()
|
||||
{
|
||||
$post = $this->request->getPost();
|
||||
@ -62,7 +45,24 @@ class Trade extends Service
|
||||
|
||||
$trade->create();
|
||||
|
||||
return $trade;
|
||||
$redirect = '';
|
||||
|
||||
if ($trade->channel == TradeModel::CHANNEL_ALIPAY) {
|
||||
$alipay = new Alipay();
|
||||
$response = $alipay->wap($trade);
|
||||
$redirect = $response ? $response->getTargetUrl() : '';
|
||||
} elseif ($trade->channel == TradeModel::CHANNEL_WXPAY) {
|
||||
$wxpay = new Wxpay();
|
||||
$response = $wxpay->wap($trade);
|
||||
$redirect = $response ? $response->getTargetUrl() : '';
|
||||
}
|
||||
|
||||
$payment = ['redirect' => $redirect];
|
||||
|
||||
return [
|
||||
'trade' => $trade,
|
||||
'payment' => $payment,
|
||||
];
|
||||
}
|
||||
|
||||
public function createMpTrade()
|
||||
|
@ -75,6 +75,22 @@ class PublicController extends \Phalcon\Mvc\Controller
|
||||
return $this->jsonSuccess(['token' => $token]);
|
||||
}
|
||||
|
||||
/**
|
||||
* @Get("/alipay/callback", name="home.alipay_callback")
|
||||
*/
|
||||
public function alipayCallbackAction()
|
||||
{
|
||||
return $this->response->redirect('/h5/#/pages/uc/orders', true);
|
||||
}
|
||||
|
||||
/**
|
||||
* @Get("/wxpay/callback", name="home.wxpay_callback")
|
||||
*/
|
||||
public function wxpayCallbackAction()
|
||||
{
|
||||
return $this->response->redirect('/h5/#/pages/uc/orders', true);
|
||||
}
|
||||
|
||||
/**
|
||||
* @Post("/alipay/notify", name="home.alipay_notify")
|
||||
*/
|
||||
|
@ -99,6 +99,7 @@ class Alipay extends PayService
|
||||
'out_trade_no' => $trade->sn,
|
||||
'total_amount' => $trade->amount,
|
||||
'subject' => $trade->subject,
|
||||
'http_method' => 'GET',
|
||||
]);
|
||||
|
||||
} catch (\Exception $e) {
|
||||
|
@ -47,6 +47,7 @@ class AlipayGateway extends Service
|
||||
'alipay_root_cert' => config_path('alipay/alipayRootCert.crt'), // 支付宝根证书
|
||||
'app_cert_public_key' => config_path('alipay/appCertPublicKey.crt'), // 应用公钥证书
|
||||
'notify_url' => $this->settings['notify_url'],
|
||||
'return_url' => $this->settings['return_url'],
|
||||
'log' => [
|
||||
'file' => log_path('alipay.log'),
|
||||
'level' => $level,
|
||||
|
@ -6,6 +6,7 @@ use App\Models\Refund as RefundModel;
|
||||
use App\Models\Trade as TradeModel;
|
||||
use App\Repos\Trade as TradeRepo;
|
||||
use App\Services\Pay as PayService;
|
||||
use Symfony\Component\HttpFoundation\RedirectResponse;
|
||||
use Symfony\Component\HttpFoundation\Response;
|
||||
use Yansongda\Pay\Gateways\Wechat;
|
||||
use Yansongda\Pay\Log;
|
||||
@ -90,7 +91,7 @@ class Wxpay extends PayService
|
||||
* wap支付
|
||||
*
|
||||
* @param TradeModel $trade
|
||||
* @return Response|bool
|
||||
* @return RedirectResponse|bool
|
||||
*/
|
||||
public function wap(TradeModel $trade)
|
||||
{
|
||||
@ -102,11 +103,6 @@ class Wxpay extends PayService
|
||||
'body' => $trade->subject,
|
||||
]);
|
||||
|
||||
/**
|
||||
* 微信H5支付会检查Referer,构造Referer头信息
|
||||
*/
|
||||
$result->headers->set('Referer', kg_site_url());
|
||||
|
||||
} catch (\Exception $e) {
|
||||
|
||||
Log::error('Wxpay Wap Exception', [
|
||||
|
@ -21,6 +21,11 @@ class WxpayGateway extends Service
|
||||
$this->settings = array_merge($defaults, $options);
|
||||
}
|
||||
|
||||
public function setReturnUrl($returnUrl)
|
||||
{
|
||||
$this->settings['return_url'] = $returnUrl;
|
||||
}
|
||||
|
||||
public function setNotifyUrl($notifyUrl)
|
||||
{
|
||||
$this->settings['notify_url'] = $notifyUrl;
|
||||
@ -42,6 +47,7 @@ class WxpayGateway extends Service
|
||||
'mch_id' => $this->settings['mch_id'],
|
||||
'key' => $this->settings['key'],
|
||||
'notify_url' => $this->settings['notify_url'],
|
||||
'return_url' => $this->settings['return_url'],
|
||||
'cert_client' => config_path('wxpay/apiclient_cert.pem'),
|
||||
'cert_key' => config_path('wxpay/apiclient_key.pem'),
|
||||
'log' => [
|
||||
|
Loading…
x
Reference in New Issue
Block a user