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'); #如果你沒有把這個文件提出來,就應(yīng)該是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服務(wù)器中的時候,提示找不到SignData Class,你可以把SignData提出來放到AopClient.php最后面

SignData.png
公鑰,私鑰,支付寶公鑰
進入沙箱調(diào)試網(wǎng)址,生成公鑰、私鑰、設(shè)置公鑰、查看支付寶公鑰

生成公鑰

設(shè)置公鑰.png

查看支付寶公鑰
然后將私鑰放到一個文件夾下(ras_private_key.pem是非JAVA語言的,ras.private_key_pkcs8.pem是JAVA語言的),并創(chuàng)建一個alipay_public_key.pem (名字隨便你)

目錄文件
這里注意了(看到?jīng)],字都特別大,所以一定要注意)
在
alipay_public_key.pem中切記要把KEY分三行,windows和mac下都沒問題,到了Linux上就有問題了!??!至于三行怎么斷,隨便你怎么斷,因為我也是亂斷的

分三行
就這樣