现在网站都是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