PHP支付寶pc支付和wap支付的sdk合併成一個

現在網站都是3端適應的,每次做支付寶支付需要調試2個sdk在集成到代碼中,麻煩死了,網上找了好多資料都沒有看到合併的方法,於是好好研究了下這2個sdk對應的代碼。

在調試2個sdk支之後,查看日誌文件,發現pc和wap提交參數就2個不同,其他都一樣的。

對應2個參數分別是

            1、biz_content 中的 productCode 參數,pc端是 FAST_INSTANT_TRADE_PAY ,wap端是  QUICK_WAP_PAY

        對應修改文件在 sdk下的 --> buildermodel --> AlipayTradeWapPayContentBuilder.php

       在49行是一個 __construct()  構造函數   我修改成

 public function __construct()
    {
        $this->bizContentarr['productCode'] = "QUICK_WAP_PAY";
        $this->bizContentarr['product_code'] = "FAST_INSTANT_TRADE_PAY";
    }

               是不是感覺有點奇怪,因爲我發現wap下是 productCode,  pc下是 product_code

               所以我乾脆直接2個都寫上了,還別說真可以。大笑

        2、method  參數 ,這個參數直接決定跳轉到PC還是WAP界面,PC端是 alipay.trade.page.pay , WAP端是 alipay.trade.wap.pay

            對應修改文件在sdk下的 --> aop -->request --> AlipayTradeWapPayRequest.php 

            第36行  getApiMethodName()  函數,直接把對應return修改就可以了


爲了能直接調用一個函數,實現不同客戶端,我做了如下修改:

        1、首先把上面“2”下面修改的函數直接修改如下:

    private $method;

    public function setApiMethodName($method)
    {
        if($method == 'wap'){
            $method = "alipay.trade.wap.pay";
        }else{
            $method = "alipay.trade.page.pay";
        }

        $this->method = $method;
    }

	public function getApiMethodName()
	{
		return $this->method;
	}

        2、找到提交函數,sdk下的 -->  service  --> AlipayTradeService.php

               wap的sdk是 77行的 wapPay() 函數,pc的sdk是 70行的 pagePay() 函數

               在函數裏面添加 

                        $request->setApiMethodName("web");參數就是wap或者別的啥,wap就是手機端,其他是電腦端。

                注意:這個一定要添加在 $request = new \AlipayTradeWapPayRequest(); 和 $response = $this->aopclientRequestExecute ($request,true); 中間(我這個應該是廢話吧,都應該知道這個吧。哈哈、、、還是提示下,免得沒注意搞錯了)

然後就可以直接調用啦,可以把這個參數用值傳遞來處理哦,這樣切換電腦手機支付就超級簡單了。


已經測試有效了!!!!大笑


轉載請標明本文章出處哦。https://blog.csdn.net/u012533474/article/details/80011035

    

    



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章