ThinkPHP 支付宝 扫码支付

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

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

3.使用方式

ThinkPHP 支付宝 扫码支付_第2张图片
使用方式.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最后面
ThinkPHP 支付宝 扫码支付_第3张图片
SignData.png

公钥,私钥,支付宝公钥

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

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

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

ThinkPHP 支付宝 扫码支付_第7张图片
分三行

就这样

你可能感兴趣的:(ThinkPHP 支付宝 扫码支付)