php 做支付宝电脑网站和app支付

首先支付宝的文档真是看得头晕眼花,摸不着北的感觉,网上百度PHP支付宝一堆都是花里胡哨的,看得一脸懵逼。所以自己整理了一下,其实也没那么复杂直接上代码:

php 电脑支付的方法:

    /**
     * 支付宝支付
     *$order_sn 单号  $total_amount 价格
     */
    public function alipay($order_sn,$total_amount)
    {
        require_once INCLUDES_PATH.'class'.DS.'Pay'.DS.'mobile'.DS.'alipaytest/'.'AopClient.php';
        $aop = new AopClient();//这个类支付宝php服务端 都要用到 (app支付服务端也要用到这个类)
        $aop->gatewayUrl = 'https://openapi.alipay.com/gateway.do';//支付宝网关,也就是接口地址
        $aop->appId = '201709010........';//APPID
        $aop->rsaPrivateKey =''";//商户的私钥()
        $aop->format = 'json';
        $aop->apiVersion = '1.0';
        $aop->postCharset= 'utf-8';
        $aop->signType = 'RSA2';
      
        $request = new AlipayTradePagePayRequest();//支付宝电脑网站支付需要用到的类 这个类支付宝SDK可以下载
        $request->setNotifyUrl(HTTP_HOST.'pay/alipay_notify.php');//支付结果的异步通知回调地址
        $request->setReturnUrl(HTTP_HOST.'pay/alipay_return.php');//同步回调回调地址

        $bizcontent = json_encode(array(
            'subject'=>'商品订单'.$order_sn,
            'out_trade_no'=>$order_sn,
            'body'=>'商品订单',
            'total_amount'=>sprintf('%.2f',$total_amount),
            'product_code'=>'FAST_INSTANT_TRADE_PAY',//支付类型,APP和电脑支付 手机支付是不一样的 所以这个类型也是不一样的
        ), JSON_UNESCAPED_UNICODE);



        $request->setBizContent($bizcontent);
        $test = $aop->pageExecute($request,'post');//支付宝返回来的地址,直接是可以跳转的
        echo $test;


    }

附上所需要用到的类:




只需要这三个类就好了,支付宝的sdk 满满的一堆 ,但是我们不需要那么多,需要用到类再把它抠出来就好了
 

app 支付 我们PHP 服务端的代码,其实就是生成一堆支付的参数 直接上代码了,其实和上面的电脑支付没什么区别 只不过是参数有所变动:
    /**
     * 生成支付宝app支付参数
     * @param string $title
     * @param string $order_sn
     * @param float $amount
     * @return string
     */
    public function alipay_app($title, $order_sn, $amount)
    {
        require_once BASE_DATA_PATH.'/vendors/alipay/AopClient.php';
        $aop = new AopClient();
        $aop->gatewayUrl = 'https://openapi.alipay.com/gateway.do';
        $aop->appId = '20170901。。。';
       
        $aop->rsaPrivateKey = ''; //商户私钥 
        $aop->format = 'json';
        $aop->charset = 'UTF-8';
        $aop->signType = 'RSA2';
       
        $aop->alipayrsaPublicKey   = '';//支付宝公钥
        $request = new AlipayTradeAppPayRequest();
        $bizcontent = json_encode(array(
            'subject'=>$title,
            'out_trade_no'=>$order_sn,
            'timeout_express'=>'30m',
            'total_amount'=>sprintf('%.2f',$amount),
            'product_code'=>'QUICK_MSECURITY_PAY',
        ), JSON_UNESCAPED_UNICODE);
        $request->setNotifyUrl('http://xxx/control/alipay_notify.php');
        $request->setBizContent($bizcontent);
        $response = $aop->sdkExecute($request);

        return $response;
    }
还是三个类 

只不过这个类有所变动而已

再者多了一个应用公钥:

电脑支付是不要这个PUBLIC key的

好啦 以上就是支付宝电脑网站支付和app 支付的方法  其实手机支付也是差不多的 变得就是支付类型 和支付类



各位多多指教!
原文地址:https://www.cnblogs.com/lixiaoquan/p/7691827.html