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

    

    



  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
/** *SDK调用说明 */ public function index() { //调用测试 import('AlipaySDK.Alipay'); $pay = new \Alipay(); /** * $trade_type 交易类型 app wap web */ $data = $pay->alipay('215360251411626', '0.01', '测试', '测试', 'web', 'http://www.test.com/callback'); //wap 结果string(880) "https://openapi.alipay.com/gateway.do?alipay_sdk=alipay-sdk-php-20180705&app_id=2018072660781410&biz;_content={"body":"测试","subject":"测试","out_trade_no":"215360251411626","timeout_express":"90m","total_amount":"0.01","product_code":"QUICK_WAP_PAY"}&charset=UTF-8&format=json&method=alipay.trade.wap.pay&notify_url=http://www.test.com/callback&sign=RKPyAKAPv28GKfhWIdsCCOualcg2DMCbhpny6yw/tTvJ3Och+yIfS1au7zbGBnm5sFoX2enfgfZekTqBCyzK0/Irw01zDSAOJM4mPYxs96OUkOglWS5Zuq64JwQBAzesFvzKBGgsH2ecL8EUCclDbBIIrAT/DWr6KenyvQvXOxVQNwn540NoS754oBU0w9vLdrGj0Jljvn8D6cbDgnHiE8qLOgpaXv1ROLwtol0yj2H7cM/G7A9RM5Y8jV1aVNYWND8M4XAK5Wr8zwoa9RocbqDpYfw66NXSvrsuFpHf7MpWtSybH5TnxOP5kwzr7pJRDi0XRAyD9u1geei9thUsqA==&sign_type=RSA2&timestamp=2018-09-04+11:50:49&version=1.0" //app 结果直接返回客户端无需处理 alipay_sdk=alipay-sdk-php-20180705&app_id=2018072660781410&biz;_content={"body":"测试","subject":"测试","out_trade_no":"215360251411626","timeout_express":"90m","total_amount":"0.01","product_code":"QUICK_MSECURITY_PAY"}&charset=UTF-8&format=json&method=alipay.trade.app.pay¬ify_url=http://www.test.com/callback&sign_type=RSA2×tamp=2018-09-04+11:54:53&version=1.0&sign=Ab6a0lDxaNcWLL7XcETM85DbBrJI8Sj6czPGKBNK17MZ85FBeStKL+nA/Z4tMORC7H39ooVCDz9ILpbRUfU0eaE7Oe2MOz+Jsj7oUEqwvbvt7eebyPgy2PmPlfAwcZypKla0nUJwHOF5F0cL+mvMGk/K7f2PYMtWL/dIfPOQGC1hBoKFiS+ZF7jIJ98R0AaITAjvQ1drAmJqXpMzUCa1XsTCuQXMXYKu8DNGb/hooJu0xUH/qUU+4fKD0TmBYANQHIrKIBNFl6J2Gw504Mlcfh929ce+YdzF8DXQjacsBSp7f08UJ/FfRvhVXqAfX8lAFETGjc7FXGgU6simNgv1UQ== //web 结果 https://openapi.alipay.com/gateway.do?alipay_sdk=alipay-sdk-php-20180705&app_id=2018072660781410&biz;_content={"body":"测试","subject":"测试","out_trade_no":"215360251411626","timeout_express":"90m","total_amount":"0.01","product_code":"FAST_INSTANT_TRADE_PAY"}&charset=UTF-8&format=json&method=alipay.trade.page.pay¬ify_url=http://www.test.com/callback&sign=l9+A5ZByhwLjQwzRes9+ymKkFVu7uMND4j6cIWmXIXHjrBnGaHkcr+hVkwocaU3d/hB2hdPnxDruhyYFgchnsIA/XWumosG9uEnKyD/T52+VZ8FxLh5wpwH0ucvKzbMjgIWk9dPVjUAU5Zz7QjqKsJ+AsItFpttd0tEVZD4je2PFp5mizeCWT0id0H+y44IGexN705rNe6TGpfJDG0RSDsbD/ZoCzd8FRzC9cv5uwf00J1E9Yc0bUH/l37WFDBTv/LZnqdfeWpaiu8ro7CJ3R+z/xGQTHToo2zLtEc4Cwop096X8WqwSdGbyI9FCemcFzigRB+6yzD9nS4PsWEG3Ug==&sign_type=RSA2×tamp=2018-09-04+11:56:06&version=1.0 echo $data; exit; } /** * 回调地址 */ public function callback() { import('AlipaySDK.Alipay'); $pay = new \Alipay(); $data = $_POST; $verify_result = $pay->check($data); if ($verify_result) { // 验证功 $out_trade_no = $data['out_trade_no']; // 支付宝交易号 $trade_no = $data['trade_no']; // 交易状态 $trade_status = $data['trade_status']; if ($trade_status == 'TRADE_FINISHED') { //功之后的操作 } else if ($trade_status == 'TRADE_SUCCESS') { //功之后的操作 } echo "success"; // 请不要修改或删除 } else { // 验证失败 echo "fail"; } } 声明:是文档根据Alipay文档二次整合,完全开源。如果觉得还可以请点击收藏
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值