現在網站都是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