ThinkPHP3.2.3
集成支付寶的掃碼支付
1.先下載官方Demo坛掠,下載后將整個(gè) aop
文件夾放到ThinkPHP/Library/Vendor中
放置位置.png
2.修改文件郊酒,將AopClient.php
中的 new SignData();
更改為 new \SignData();
;
將aop/request/AlipayTradePrecreateRequest
放到aop
目錄下(這個(gè)隨意,我是打算刪掉request目錄,所以才提出來(lái))
3.使用方式
使用方式.png
public function testAction(){
Vendor('aop.AopClient');
Vendor('aop.signData');
Vendor('aop.AlipayTradePrecreateRequest'); #如果你沒(méi)有把這個(gè)文件提出來(lái)瞧柔,就應(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" => "測(cè)試",
"body" => "測(cè)試商品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) ;//容錯(cuò)級(jí)別
$matrixPointSize = intval(8);//生成圖片大小
$object = new \QRcode();
$object->png($url, false, $errorCorrectionLevel, $matrixPointSize, 2);
} else {
echo "失敗";
exit;
}
}
小tip:我只改了new \SignData()
過(guò)后放到Linux服務(wù)器中的時(shí)候,提示找不到SignData Class睦裳,你可以把SignData提出來(lái)放到AopClient.php
最后面
SignData.png
公鑰造锅,私鑰,支付寶公鑰
進(jìn)入沙箱調(diào)試網(wǎng)址廉邑,生成公鑰哥蔚、私鑰、設(shè)置公鑰蛛蒙、查看支付寶公鑰
生成公鑰
設(shè)置公鑰.png
查看支付寶公鑰
然后將私鑰放到一個(gè)文件夾下(ras_private_key.pem
是非JAVA語(yǔ)言的糙箍,ras.private_key_pkcs8.pem
是JAVA語(yǔ)言的),并創(chuàng)建一個(gè)alipay_public_key.pem
(名字隨便你)
目錄文件
這里注意了(看到?jīng)]牵祟,字都特別大深夯,所以一定要注意)
在
alipay_public_key.pem
中切記要把KEY分三行,windows和mac下都沒(méi)問(wèn)題诺苹,到了Linux上就有問(wèn)題了9窘!收奔!至于三行怎么斷掌呜,隨便你怎么斷,因?yàn)槲乙彩莵y斷的
分三行
就這樣