yii2.0 app上集成支付宝支付

来源:互联网 发布:深睡眠和浅睡眠 知乎 编辑:程序博客网 时间:2024/06/13 07:13

1.首先从支付宝官网下载支付宝app支付sdk 地址 : https://doc.open.alipay.com/docs/doc.htm?spm=a219a.7629140.0.0.hLEa5O&treeId=54&articleId=106370&docType=1

2.解压下载文件会得到几个文件夹


用到的文件有AopClient.php/AopEncrypt.php/AlipayTradeAppPayRequest.php 这几个文件

3.将解压好的文件放到yii/frontend下新建文件alipay下

如果没有 frontend 文件,则可以 放到vender 文件下,然后namespace 为 alipay\aop;

4.修改要用到的文件的命名空间:

AopClient.php


AopEncrypt.php


AlipayTradeAppPayRequest.php


5.新建自己要用到支付控制器我的是orderController.php


注意:一定要引入修改的支付宝sdk

$aop = new AopClient;
        $aop->gatewayUrl = Yii::$app->params['gatewayUrl'];
        $aop->appId = Yii::$app->params['appId'];
        $aop->rsaPrivateKey = Yii::$app->params['rsaPrivateKey'];
        $aop->format = Yii::$app->params['format'];
        // $aop->charset = Yii::$app->params['charset'];
        $aop->signType = Yii::$app->params['signType'];
        $aop->alipayrsaPublicKey = Yii::$app->params['alipayrsaPublicKey'];
        //实例化具体API对应的request类,类名称和接口名称对应,当前调用接口名称:alipay.trade.app.pay
        $request = new AlipayTradeAppPayRequest();
        //SDK已经封装掉了公共参数,这里只需要传入业务参数
        $bizcontent = json_encode([  
            'body'=>$order['order_sn'],  
            'subject'=>'App支付测试',  
            'out_trade_no'=>$order['order_sn'],//此订单号为商户唯一订单号  
            'total_amount'=> $order['order_amount'],//保留两位小数  
            'product_code'=>'QUICK_MSECURITY_PAY'  
        ]);
        $request->setNotifyUrl("商户外网可以访问的异步地址");
        $request->setBizContent($bizcontent);
        //这里和普通的接口调用不同,使用的是sdkExecute
        $response = $aop->sdkExecute($request);
        //htmlspecialchars是为了输出到页面时防止被浏览器将关键参数html转义,实际打印到日志以及http传输不会有这个问题echo htmlspecialchars($response);
        echo $response;//就是orderString 可以直接给客户端请求,无需再做处理。

上面这些信息里面的配置可以放到Params.php方便调用

使用Yii::$app->params方法调用

到这基本上都能获取orderString 可以直接给客户端请求,无需再做处理。剩下就是自己做一些逻辑处理订单信息了;

注:生成一些私钥到官方下载https://docs.open.alipay.com/291/106097 下载密钥生成工具

我只是个菜鸟,有问题请在下方评论,共同学习进步


原创粉丝点击