多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
![在这里插入图片描述](https://img-blog.csdnimg.cn/2021041214444282.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dhbmd6aGFl,size_16,color_FFFFFF,t_70) 1、下载、放置的第三方类库目录下、thinkphp放在vendor下 [https://github.com/alipay/alipay-sdk-php-all](https://github.com/alipay/alipay-sdk-php-all) 2、引用AopClient和AlipayTradeAppPayRequest,引用方式有很多,下面用了其中一种 ```php require_once 'vendor/ali/aop/AopClient.php'; require_once 'vendor/ali/aop/request/AlipayTradeAppPayRequest.php'; ``` 其他的`import`、`ure`、`include`等 3、下面懒人支付代码 ```php header("Content-type:text/html;charset=utf-8"); require_once 'vendor/ali/aop/AopClient.php'; require_once 'vendor/ali/aop/request/AlipayTradeAppPayRequest.php'; $aop = new \AopClient; $aop->gatewayUrl = "https://openapi.alipay.com/gateway.do"; $aop->appId = "2021002134693554"; $aop->rsaPrivateKey = '密钥'; $aop->alipayrsaPublicKey = '支付宝公钥'; //实例化具体API对应的request类,类名称和接口名称对应,当前调用接口名称:alipay.trade.app.pay $request = new \AlipayTradeAppPayRequest(); $arr = [ "body"=>$params['body'], "subject"=>$params['body'], "out_trade_no"=>$params['out_trade_no'], "timeout_express"=>"30m", "total_amount"=> floatval($params['total_fee']), "product_code"=>"QUICK_MSECURITY_PAY" ]; $bizcontent = json_encode($arr); $request->setNotifyUrl($this->notify_url); $request->setBizContent($bizcontent); $response = $aop->sdkExecute($request); //htmlspecialchars是为了输出到页面时防止被浏览器将关键参数html转义,实际打印到日志以及http传输不会有 return htmlspecialchars($response);die; ``` 4、懒人回调 ```php require_once 'vendor/ali/aop/AopClient.php'; $aop = new \AopClient(); $aop->alipayrsaPublicKey = '支付宝公钥'; //验证签名 $result = $aop->rsaCheckV1($_POST,NULL,"RSA2"); // $_POST['sign_type'] if($result=='true'){ //1、签名验证通过后需做以下操作,所有操作全部判定成功后才视为支付成功。 //1-1、商户需要验证该通知数据中的out_trade_no是否为商户系统中创建的订单号; //1-2、判断total_amount是否确实为该订单的实际金额(即商户订单创建时的金额); //1-3、校验通知中的seller_id(或者seller_email) 是否为out_trade_no这笔单据对应的操作方(有的时候,一个商户可能有多个seller_id/seller_email); //1-4、验证app_id是否为该商户本身。 //2、判断返回状态,并根据返回状态做相应处理, //2-1、状态TRADE_SUCCESS的通知触发条件是商户签约的产品支持退款功能的前提下,买家付款成功; //2-2、状态TRADE_FINISHED的通知触发条件是商户签约的产品不支持退款功能的前提下,买家付款成功;或者,商户签约的产品支持退款功能的前提下,交易已经成功并且已经超过可退款期限。 if($_POST['trade_status'] == 'TRADE_FINISHED' || $_POST['trade_status'] == 'TRADE_SUCCESS') { //处理更新订单状态等相关逻辑 $transaction_id = $_POST['trade_no']; //支付宝的订单编号 $out_trade_no = $_POST['out_trade_no']; //我系统中的编号 $total_fee = $_POST['total_amount']; // 支付价格 //业务处理 } }else{ //验签失败 echo 'fail'; exit(); } ```