iT邦幫忙

第 11 屆 iThome 鐵人賽

DAY 20
1
Software Development

PHP新手30天實戰金流系列 第 20

[Day20]平台串金流--PAYPAL 導入平台,架構重整

  • 分享至 

  • xImage
  •  
PHP新手30天實戰金流, Laravel6

前言

因為要提供兩種第三方支付給使用者選擇,所以在 controller 的地方會判斷是哪個服務

平台修改:

  • Model create:
    • order_relations 訂單和付款服務商的關係表
    • payment_services 付款服務商
    • paypal paypal的金流單
    • ecpay ecpay的金流單

在付款服務商的 Model 中寫 make 和 send 函式 call service api

  • Controller edit:
    • PaymentController
      • payment function 判斷
         switch ($thirdPartyPaymentService->id) {
                     case 1: // ECpay
                         $pay_obj = new ECPay();
        
                     case 2: //paypal
                         $pay_obj = new Paypal();
                     }
        
         $error = $pay_obj->make($toBeSavedInfo, $request, $recipient);
         if ($error)
             return Helpers::result(false, $error, 400);
         $url = $pay_obj->send($toBeSavedInfo, $request, $recipient);
         return Helpers::result(true, $url, 200);  
        
      • 基本設定寫在各 payment Service 的 Model 的初始函式中
      • PaymentController 單純4個函式:
        • build
        • paymentExecute
        • listen
        • refund

可以寫 helper 來處理共同項目

class Helpers {

    public static function result($result, $response, $statusCode)
    {
        return Response::json(['result' => $result, 'response' => $response], $statusCode);
    }

重構

  • 重點:不會改變程式碼的外在行為(observable behavior)。如果有人重構了某段程式碼,而導致原有功能被破壞。那麼他肯定不是在重構,如果方法正確,在整個重構過程中,程式碼都是可以穩定運作的。
  • 兩個目的:讓程式碼更容易理解(easier to understand)和修改(cheaper to modify)。
  • 參考

上一篇
[Day19]平台串金流--PAYPAL (中)
下一篇
[Day21]平台串金流--PAYPAL 買家付款模式(payment)
系列文
PHP新手30天實戰金流34
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言