Laravel 支付寶SDK在Laravel5的封裝

一、安裝

composer require latrell/alipay dev-master

找到 config/app.php 配置文件中岛都,keyproviders 的數(shù)組质和,在數(shù)組中添加服務(wù)提供者。

'providers' => [  
   // ...
  Latrell\Alipay\AlipayServiceProvider::class,
    ]

在項(xiàng)目根目錄中運(yùn)行 php artisan vendor:publish 命令室囊,發(fā)布配置文件到你的項(xiàng)目中雕崩。

說(shuō)明

配置文件 config/latrell-alipay.php 為公共配置信息文件, config/latrell-alipay-web.php 為Web版支付寶SDK配置融撞, config/latrell-alipay-mobile.php 為手機(jī)端支付寶SDK配置盼铁。

二、使用

下面給打下一個(gè)支付申請(qǐng)得小例子:

Web端

 public function alipay()
 {
        $orderId = time();
        $orderPrice = 0.01;
        $goodsName = '外星人筆記本電腦';
        $goodsDescription = '外星人筆記本電腦';
        // 創(chuàng)建支付單懦铺。
        $alipay = app('alipay.web');
        $alipay->setOutTradeNo($orderId);
        $alipay->setTotalFee($orderPrice);
        $alipay->setSubject($goodsName);
        $alipay->setBody($goodsDescription);
        // 跳轉(zhuǎn)到支付頁(yè)面捉貌。
        return redirect()->to($alipay->getPayLink());
  }

手機(jī)端

 public function alipay()
 {
    $orderId = time();
    $orderPrice = 0.01;
    $goodsName = '外星人筆記本電腦';
    $goodsDescription = '外星人筆記本電腦';
    // 創(chuàng)建支付單支鸡。
    $alipay = app('alipay.mobile');
    $alipay->setOutTradeNo($orderId);
    $alipay->setTotalFee($orderPrice);
    $alipay->setSubject($goodsName);
    $alipay->setBody($goodsDescription);

    // 返回簽名后的支付參數(shù)給支付寶移動(dòng)端的SDK冬念。
    return $alipay->getPayPara();
  }

Web端回調(diào)(通知)

/**
     * 異步通知
     */
    public function webNotify()
    {
        // 驗(yàn)證請(qǐng)求。
        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: 支付成功急前,取得訂單號(hào)進(jìn)行其它相關(guān)操作。
                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()
    {
        // 驗(yàn)證請(qǐng)求瀑构。
        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: 支付成功,取得訂單號(hào)進(jìn)行其它相關(guān)操作寺晌。
                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端回調(diào)(通知)

/**
     * 支付寶異步通知
     */
    public function alipayNotify()
    {
        // 驗(yàn)證請(qǐng)求世吨。
        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: 支付成功呻征,取得訂單號(hào)進(jìn)行其它相關(guān)操作耘婚。
                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';
    }

TRADESUCCESS狀態(tài)代表了充值成功,也就是說(shuō)錢已經(jīng)進(jìn)了支付寶(擔(dān)保交易)或賣家(即時(shí)到賬)陆赋;這時(shí)候沐祷,這筆交易應(yīng)該還可以進(jìn)行后續(xù)的操作(比如三個(gè)月后交易狀態(tài)自動(dòng)變成TRADEFINISHED),因?yàn)檎P交易還沒有關(guān)閉掉攒岛,也就是說(shuō)一定還有主動(dòng)通知過來(lái)赖临。而TRADEFINISHED代表了這筆訂單徹底完成了,不會(huì)再有任何主動(dòng)通知過來(lái)了

綜上所述灾锯,收到TRADEFINISHED請(qǐng)求后兢榨,這筆訂單就結(jié)束了,支付寶不會(huì)再主動(dòng)請(qǐng)求商戶網(wǎng)站了顺饮;收到TRADESUCCESS請(qǐng)求后吵聪,后續(xù)一定還有至少一條通知記錄,即TRADEFINISHED领突。所以暖璧,在做通知接口時(shí),切記使用判斷訂單狀態(tài)用或的關(guān)系

【原文地址】
Laravel 支付寶SDK在Laravel5的封裝

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末君旦,一起剝皮案震驚了整個(gè)濱河市澎办,隨后出現(xiàn)的幾起案子嘲碱,更是在濱河造成了極大的恐慌,老刑警劉巖局蚀,帶你破解...
    沈念sama閱讀 222,183評(píng)論 6 516
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件麦锯,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡琅绅,警方通過查閱死者的電腦和手機(jī)扶欣,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,850評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)千扶,“玉大人料祠,你說(shuō)我怎么就攤上這事∨煨撸” “怎么了髓绽?”我有些...
    開封第一講書人閱讀 168,766評(píng)論 0 361
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)妆绞。 經(jīng)常有香客問我顺呕,道長(zhǎng),這世上最難降的妖魔是什么括饶? 我笑而不...
    開封第一講書人閱讀 59,854評(píng)論 1 299
  • 正文 為了忘掉前任株茶,我火速辦了婚禮,結(jié)果婚禮上图焰,老公的妹妹穿的比我還像新娘启盛。我一直安慰自己,他們只是感情好楞泼,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,871評(píng)論 6 398
  • 文/花漫 我一把揭開白布驰徊。 她就那樣靜靜地躺著,像睡著了一般堕阔。 火紅的嫁衣襯著肌膚如雪棍厂。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,457評(píng)論 1 311
  • 那天超陆,我揣著相機(jī)與錄音牺弹,去河邊找鬼。 笑死时呀,一個(gè)胖子當(dāng)著我的面吹牛张漂,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播谨娜,決...
    沈念sama閱讀 40,999評(píng)論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼航攒,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了趴梢?” 一聲冷哼從身側(cè)響起漠畜,我...
    開封第一講書人閱讀 39,914評(píng)論 0 277
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤币他,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,465評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡晴裹,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,543評(píng)論 3 342
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了拍冠。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,675評(píng)論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡簇抵,死狀恐怖庆杜,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情正压,我是刑警寧澤欣福,帶...
    沈念sama閱讀 36,354評(píng)論 5 351
  • 正文 年R本政府宣布,位于F島的核電站焦履,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏雏逾。R本人自食惡果不足惜嘉裤,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,029評(píng)論 3 335
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望栖博。 院中可真熱鬧屑宠,春花似錦、人聲如沸仇让。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,514評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)丧叽。三九已至卫玖,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間踊淳,已是汗流浹背假瞬。 一陣腳步聲響...
    開封第一講書人閱讀 33,616評(píng)論 1 274
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留迂尝,地道東北人脱茉。 一個(gè)月前我還...
    沈念sama閱讀 49,091評(píng)論 3 378
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像垄开,于是被迫代替她去往敵國(guó)和親琴许。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,685評(píng)論 2 360

推薦閱讀更多精彩內(nèi)容