遇到很多坑记录一下
这里用的是电脑支付
下载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()); }