美文网首页
ThinkPHP 支付宝 扫码支付

ThinkPHP 支付宝 扫码支付

作者: yieldHL | 来源:发表于2016-12-11 18:12 被阅读0次

    ThinkPHP3.2.3 集成支付宝的扫码支付

    1.先下载官方Demo,下载后将整个 aop 文件夹放到ThinkPHP/Library/Vendor中
    放置位置.png
    2.修改文件,将AopClient.php中的 new SignData(); 更改为 new \SignData();
    aop/request/AlipayTradePrecreateRequest放到aop目录下(这个随意,我是打算删掉request目录,所以才提出来)

    3.使用方式

    使用方式.png
    public function testAction(){
            Vendor('aop.AopClient');  
            Vendor('aop.signData');   
            Vendor('aop.AlipayTradePrecreateRequest');  #如果你没有把这个文件提出来,就应该是aop.request.AlipayTradePrecreateRequest
            $aop = new \AopClient();
            $aop->gatewayUrl = 'https://openapi.alipaydev.com/gateway.do';
            $aop->appId = '2016072300102600';
            $aop->rsaPrivateKeyFilePath = './rsa_private_key.pem';
            $aop->alipayPublicKey='./alipay_public_key.pem';
            $aop->apiVersion = '1.0';
            $aop->postCharset='UTF-8';
            $aop->format='json'; 
            $request = new \AlipayTradePrecreateRequest();
            $data = json_encode(array(
                "out_trade_no" => "wx2016120951519992",
                "total_amount" => "1",
                "subject"      => "测试",
                "body"         => "测试商品100"
            ),JSON_UNESCAPED_UNICODE|JSON_PRETTY_PRINT);
            $request->setBizContent($data);
            $request->setNotifyUrl("http://pay.moblm.com/Todo/notify");
            $result = $aop->execute ( $request); 
            $responseNode = str_replace(".", "_", $request->getApiMethodName()) . "_response";
            $resultCode = $result->$responseNode->code;
            if(!empty($resultCode)&&$resultCode == 10000){
                $resp = (array)$result->$responseNode;
                Vendor('phpqrcode.phpqrcode'); # 这里开始是生成二维码
                $url = $resp['qr_code'];
                $errorCorrectionLevel =intval(4) ;//容错级别 
                $matrixPointSize = intval(8);//生成图片大小 
                $object = new \QRcode();
                $object->png($url, false, $errorCorrectionLevel, $matrixPointSize, 2); 
            } else {
                echo "失败";
                exit;
            }
        }
    
    小tip:我只改了new \SignData()过后放到Linux服务器中的时候,提示找不到SignData Class,你可以把SignData提出来放到AopClient.php最后面
    SignData.png

    公钥,私钥,支付宝公钥

    进入沙箱调试网址,生成公钥、私钥、设置公钥、查看支付宝公钥
    生成公钥 设置公钥.png 查看支付宝公钥
    然后将私钥放到一个文件夹下(ras_private_key.pem是非JAVA语言的,ras.private_key_pkcs8.pem是JAVA语言的),并创建一个alipay_public_key.pem (名字随便你)
    目录文件

    这里注意了(看到没,字都特别大,所以一定要注意)

    alipay_public_key.pem中切记要把KEY分三行,windows和mac下都没问题,到了Linux上就有问题了!!!至于三行怎么断,随便你怎么断,因为我也是乱断的

    分三行

    就这样

    相关文章

      网友评论

          本文标题:ThinkPHP 支付宝 扫码支付

          本文链接:https://www.haomeiwen.com/subject/ckypmttx.html