遇到很多坑記錄一下
這里用的是電腦支付
下載dome鏈接:https://docs.open.alipay.com/...
把demo放到extend目錄,文件夾改名字為:alipay,方便后面操作
有人說把需要用的類命名空間,namespace,這個人拉出去槍斃了,真的坑爹啊,命名空間加上后,可能是我linux系統,盡然找不到類了,拉出去槍斃,槍斃,牆壁!
然后在config.php文件夾中配置appid、回調地址一系列參數,如果沒有這個文件重新去官網下載
我這里用的require引入
/*支付寶支付*/ public function pay(){ header('Content-type:text/html;charset=utf-8'); require '../extend/alipay/config.php'; require '../extend/alipay/pagepay/service/AlipayTradeService.php'; require '../extend/alipay/pagepay/buildermodel/AlipayTradePagePayContentBuilder.php'; //獲取訂單生成后傳遞過來的訂單編號和金額 $data=input('param'); //商戶訂單號,商戶網站訂單系統中唯一訂單號,必填 $out_trade_no = '201791711599526'; // $out_trade_no = $data['sn']; //訂單名稱,必填 $subject = "認證"; //付款金額,必填 $total_amount = '0.01'; // $total_amount = $data['money']; //商品描述,可空 $body = ""; $payRequestBuilder = new \AlipayTradePagePayContentBuilder(); $payRequestBuilder->setBody($body); $payRequestBuilder->setSubject($subject); $payRequestBuilder->setTotalAmount($total_amount); $payRequestBuilder->setOutTradeNo($out_trade_no); $aop = new \AlipayTradeService($this->payconfig); /** * pagePay 電腦網站支付請求 * @param $builder 業務參數,使用buildmodel中的對象生成。 * @param $return_url 同步跳轉地址,公網可以訪問 * @param $notify_url 異步通知地址,公網可以訪問 * @return $response 支付寶返回的信息 */ $response = $aop->pagePay($payRequestBuilder,$this->payconfig['return_url'],$this->payconfig['notify_url']); var_dump($response); }
異步方法:
//異步通知回調 public function getToken(){ try{ $info = Request::param(); $aop = new AopClient; $aop->alipayrsaPublicKey = '填寫你的支付寶公鑰'; $flag = $aop->rsaCheckV1($info,NULL,"RSA2"); //驗簽 if(!$flag){ Log::write('驗簽失敗','ALIPAY_THORW'); }else if($info['trade_status']=='TRADE_SUCCESS'){ //支付狀態 if(!Db::table('order')->where('ordernum','=',$info['out_trade_no'])->find()){ $insertData = ['create_time'=>time(),'update_time'=>time(),'goodname'=>$info['subject'],'ordernum'=>$info['out_trade_no'], 'alipaynum'=>$info['trade_no'],'total_money'=>$info['total_amount'],'status'=>1]; Db::table('order')->insert($insertData);} } } catch (Exception $e){ Log::write($e->getMessage(),'ALIPAY_THORW'); } }
同步方法:
//網頁付款成功后返回頁面 public function returnback(){ echo "<h1>支付成功<h1>"; halt(Request::param()); }