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

    

    



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