laravel5.5框架实现支付宝支付

简介支付宝,微信支付

1.路由

Route::get('/startPay','Home\IndexController@index');
Route::any('/notify', 'Home\IndexController@notify');
Route::any('/refund', 'Home\IndexController@refund');
Route::get('/success','Home\IndexController@success');


3.下载Alipay 和 WeChat 的支付 SDK 扩展包

运行环境

  • PHP 7.0+ (v2.8.0 开始 >= 7.1.3)
  • composer
 安装:composer require yansongda/pay -vvv

更详细的文档请查看https://github.com/yansongda/pay

3.控制器方法

<?php

namespace App\Http\Controllers\Home;

//use Pay;
use Illuminate\Support\Facades\Request;
use Yansongda\Pay\Exceptions\GatewayException;
use Yansongda\Pay\Log;
use Yansongda\Pay\Pay;

class IndexController
{
protected $config = [
'app_id' => '2018092561563005',//应用id
'notify_url' => 'http://tp.xxxx.cn/notify',//回调地址
'return_url' => 'http://tp.xxxxx.cn/success',//支付成功地址

'ali_public_key' => 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxx', //支付宝公钥

// 使用公钥证书模式,请配置下面两个参数,同时修改ali_public_key为以.crt结尾的支付宝公钥证书路径,如(./cert/alipayCertPublicKey_RSA2.crt
// 'app_cert_public_key' => './cert/appCertPublicKey.crt', //应用公钥证书路径
// 'alipay_root_cert' => './cert/alipayRootCert.crt', //支付宝根证书路径
'private_key' => 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx',//应用私钥
'log' => [ // optional
'file' => './logs/alipay.log',
'level' => 'info', // 建议生产环境等级调整为 info,开发环境为 debug
'type' => 'single', // optional, 可选 daily.
'max_file' => 30, // optional, 当 type 为 daily 时有效,默认 30 天//
],
'http' => [ // optional
'timeout' => 5.0,
'connect_timeout' => 5.0,
// 更多配置项请参考 [Guzzle](https://guzzle-cn.readthedocs.io/zh_CN/latest/request-options.html)
],
//'mode' => 'dev', // optional,设置此参数,将进入沙箱模式//
];


public function index()
{
$order = [
'out_trade_no' => time(),
'total_amount' => '0.01',
'subject' => '测试111'
];
return Pay::alipay($this->config)->web($order);//这里的web方法是发起支付宝扫码支付,如果是wap则为手机网站支付
/*
*
* method 描述
web 电脑支付
wap 手机网站支付
app APP 支付
pos 刷卡支付
scan 扫码支付
transfer 帐户转账
mini 小程序支付
*/


}

//这里处理支付宝回调
public function notify()
{
$out_trade_no = request('out_trade_no');//获取支付宝返回的商家订单编号
if (request('trade_status') == "TRADE_SUCCESS") { //订单支付成功的情况
file_put_contents(public_path('record.txt'), $out_trade_no . "订单支付成功", FILE_APPEND);//将信息保存下来方便查看
}
//其他逻辑.....
echo "success";
exit;
}

//支付成功响应页面
public function success()
{
$out_trade_no = request('out_trade_no');
echo $out_trade_no . "支付成功!";
}

//订单发起退款
public function refund()
{
$pay = Pay::alipay($this->config);

$result = $pay->refund(['out_trade_no' => 1590496735, 'refund_amount' => 0.01]);//参数为商家订单编号和订单金额
dd($result);

}

4.注意,回调路由解除csrf限制,否则将接收不到支付宝回调




5.扫码支付效果



}

 

文章评论

共有0条评论来说两句吧...

用户名:

验证码:

Top