安裝
// 拉取元件
composer require latrell/alipay dev-master
找到
config/app.php
配置檔案中,
key
為
providers
的數組,在數組中添加服務提供者.
'providers' => [
// ...
Latrell\Alipay\AlipayServiceProvider::class,
]
在項目根目錄中運作
// 生成配置檔案
php artisan vendor:publish
配置檔案說明
-
為公共配置資訊檔案.config/latrell-alipay.php
-
為 Web 版支付寶 SDK 配置.config/latrell-alipay-web.php
-
為手機端支付寶 SD K配置config/latrell-alipay-mobile.php
使用
先給支付添加一個路由和方法.
Web端
public function alipay()
{
$orderId = time();
$orderPrice = ;
$goodsName = '外星人筆記本電腦';
$goodsDescription = '外星人筆記本電腦';
// 建立支付單。
$alipay = app('alipay.web');
$alipay->setOutTradeNo($orderId);
$alipay->setTotalFee($orderPrice);
$alipay->setSubject($goodsName);
$alipay->setBody($goodsDescription);
// 跳轉到支付頁面。
return redirect()->to($alipay->getPayLink());
}
手機端
public function alipay()
{
$orderId = time();
$orderPrice = ;
$goodsName = '外星人筆記本電腦';
$goodsDescription = '外星人筆記本電腦';
// 建立支付單。
$alipay = app('alipay.mobile');
$alipay->setOutTradeNo($orderId);
$alipay->setTotalFee($orderPrice);
$alipay->setSubject($goodsName);
$alipay->setBody($goodsDescription);
// 傳回簽名後的支付參數給支付寶移動端的 SDK.
return $alipay->getPayPara();
}
Web 端回調
/**
* 異步通知
*/
public function webNotify()
{
// 驗證請求。
if (! app('alipay.web')->verify()) {
Log::notice('Alipay notify post data verification fail.', [
'data' => Request::instance()->getContent()
]);
return 'fail';
}
// 判斷通知類型。
switch (Input::get('trade_status')) {
case 'TRADE_SUCCESS':
case 'TRADE_FINISHED':
// TODO: 支付成功,取得訂單号進行其它相關操作。
Log::debug('Alipay notify post data verification success.', [
'out_trade_no' => Input::get('out_trade_no'),
'trade_no' => Input::get('trade_no')
]);
break;
}
return 'success';
}
/**
* 同步通知
*/
public function webReturn()
{
// 驗證請求。
if (! app('alipay.web')->verify()) {
Log::notice('Alipay return query data verification fail.', [
'data' => Request::getQueryString()
]);
return view('alipay.fail');
}
// 判斷通知類型。
switch (Input::get('trade_status')) {
case 'TRADE_SUCCESS':
case 'TRADE_FINISHED':
// TODO: 支付成功,取得訂單号進行其它相關操作。
Log::debug('Alipay notify get data verification success.', [
'out_trade_no' => Input::get('out_trade_no'),
'trade_no' => Input::get('trade_no')
]);
break;
}
return view('alipay.success');
}
APP端回調
/**
* 支付寶異步通知
*/
public function alipayNotify()
{
// 驗證請求。
if (! app('alipay.mobile')->verify()) {
Log::notice('Alipay notify post data verification fail.', [
'data' => Request::instance()->getContent()
]);
return 'fail';
}
// 判斷通知類型。
switch (Input::get('trade_status')) {
case 'TRADE_SUCCESS':
case 'TRADE_FINISHED':
// TODO: 支付成功,取得訂單号進行其它相關操作。
Log::debug('Alipay notify get data verification success.', [
'out_trade_no' => Input::get('out_trade_no'),
'trade_no' => Input::get('trade_no')
]);
break;
}
return 'success';
}