2019-08-01 13:42:25
围观(8313)
先到官网下载SDK:https://docs.open.alipay.com/54/106682/
在项目 APP 目录下创建 Packages 目录,在 Packages 目录下再创建一个 alipay 目录,将下载的 sdk 解压进去。
由于我的项目需要区分PC端和手机端 所以取名为 alipaypc.

在config目录下创建个 alipay.php 文件并写入代码:
return [
//应用ID
'app_id' => env('ALIPAY_APPID'),
//商户私钥,您的原始格式RSA私钥
'merchant_private_key' => env('ALIPAY_PRIVATE_KEY'),
//异步通知地址 需要外网可以访问的地址
'notify_url' => env('ALIPAY_NOTIFY_URL'),
//同步跳转
'return_url' => env('ALIPAY_RETURN_URL'),
//编码格式
'charset' => "UTF-8",
//签名方式
'sign_type'=>"RSA2",
//支付宝网关
'gatewayUrl' => "https://openapi.alipay.com/gateway.do",
//支付宝公钥,查看地址:https://openhome.alipay.com/platform/keyManage.htm 对应APPID下的支付宝公钥。
'alipay_public_key' => env('ALIPAY_PUBLIC_KEY'),
];还需要在 .ENV 文件也写入对应的配置信息
打开 composer.json 并写入代码:
"app/Packages/alipaypc"

保存文件后 使用命令行工具执行:
composer dumpautoload
回到 app/Packages/alipaypc 目录,创建一个 Alipay.php 文件并写入代码:
namespace App\Packages\alipaypc;
require ('AopSdk.php');
class Alipay
{
public static function alipays($data)
{
if (!$data)
{
exit('param is numm');
}
$out_trade_no = $data['order_no'];
//订单名称,必填
$subject = $data['order_name'];
//付款金额,必填
$total_amount = $data['total_num'];
//商品描述,可空
$body = $data['body'];
$payRequestBuilder = new \AlipayTradePagePayContentBuilder();
$payRequestBuilder->setBody($body);
$payRequestBuilder->setSubject($subject);
$payRequestBuilder->setTotalAmount($total_amount);
$payRequestBuilder->setOutTradeNo($out_trade_no);
$config = config('alipay');
$payResponse = new \AlipayTradeService($config);
$response = $payResponse->pagePay($payRequestBuilder,$config['return_url'],$config['notify_url']);
return $response;
}
public static function notify($data)
{
$config = config('alipay');
$alipaySevice = new \AlipayTradeService($config);
$alipaySevice->writeLog(var_export($data,true));
$result = $alipaySevice->check($data);
if($result) {
//验证成功
//商户订单号
$out_trade_no = $_POST['out_trade_no'];
//支付宝交易号
$trade_no = $_POST['trade_no'];
//交易状态
$trade_status = $_POST['trade_status'];
if($_POST['trade_status'] == 'TRADE_FINISHED') {
//根据业务需求返回
return true;
}
else if ($_POST['trade_status'] == 'TRADE_SUCCESS') {
//根据业务需求返回
return true;
}
return true;
}else {
return false;
}
}
}此时已经可以在控制器中调用,控制器中发起支付 代码:
public function pay_test()
{
//$total_fee = 0.01;
$data['order_no'] = time();
$data['order_name'] = '测试';
$data['body'] = '测试';
$data['total_num'] = 0.01;
Alipay::alipays($data);
}控制器中执行回调:
public function pay_res(Request $request)
{
$data = $request->all();
$res = Alipay::notify($data);
if($res){
Log::info('msgs' . json_encode($data));
//业务逻辑
return 'success';
}else{
Log::info('error');
//业务逻辑
return 'fail';
}
}注意,此段代码使用了日志 所以需要先 use 一下
use App\Packages\alipaypc\Alipay; use Log;
本文地址 : bubaijun.com/page.php?id=127
版权声明 : 未经允许禁止转载!
上一篇文章: Linux Centos7安装配置SVN
下一篇文章: PHP开发微信支付功能