1
0
mirror of https://gitee.com/koogua/course-tencent-cloud.git synced 2025-06-24 12:05:39 +08:00
koogua cbc2e5762a !11 阶段性合并
* 根据app需要作出相应调整
* 路由增加命名name,增加app应用管理
* 完成基本API,增加h5和小程序支付定义
2020-11-10 10:25:16 +08:00

126 lines
3.0 KiB
PHP

<?php
namespace App\Http\Api\Services;
use App\Models\Client as ClientModel;
use App\Models\Trade as TradeModel;
use App\Services\Logic\OrderTrait;
use App\Services\Logic\TradeTrait;
use App\Services\Pay\Alipay;
use App\Services\Pay\Wxpay;
use App\Validators\Client as ClientValidator;
use App\Validators\Trade as TradeValidator;
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();
$validator = new ClientValidator();
$platform = $this->getPlatform();
$validator->checkH5Platform($platform);
$order = $this->checkOrderBySn($post['order_sn']);
$user = $this->getLoginUser();
$validator = new TradeValidator();
$channel = $validator->checkChannel($post['channel']);
$trade = new TradeModel();
$trade->subject = $order->subject;
$trade->amount = $order->amount;
$trade->channel = $channel;
$trade->order_id = $order->id;
$trade->owner_id = $user->id;
$trade->create();
return $trade;
}
public function createMpTrade()
{
$post = $this->request->getPost();
$validator = new ClientValidator();
$platform = $this->getPlatform();
$platform = $validator->checkMpPlatform($platform);
$order = $this->checkOrderBySn($post['order_sn']);
$user = $this->getLoginUser();
$channel = TradeModel::CHANNEL_WXPAY;
if ($platform == ClientModel::TYPE_MP_ALIPAY) {
$channel = TradeModel::CHANNEL_ALIPAY;
} elseif ($platform == ClientModel::TYPE_MP_WEIXIN) {
$channel = TradeModel::CHANNEL_WXPAY;
}
$trade = new TradeModel();
$trade->subject = $order->subject;
$trade->amount = $order->amount;
$trade->channel = $channel;
$trade->order_id = $order->id;
$trade->owner_id = $user->id;
$trade->create();
$response = null;
if ($post['channel'] == TradeModel::CHANNEL_ALIPAY) {
$alipay = new Alipay();
$buyerId = '';
$response = $alipay->mini($trade, $buyerId);
} elseif ($post['channel'] == TradeModel::CHANNEL_WXPAY) {
$wxpay = new Wxpay();
$openId = '';
$response = $wxpay->mini($trade, $openId);
}
return $response;
}
public function createAppTrade()
{
}
protected function getPlatform()
{
return $this->request->getHeader('X-Platform');
}
}