首先下载SDK
composer require yansongda/pay -vvv
这个是集成支付宝和微信的sdk
//支付宝
<?php
namespace app\pay\controller;
use Yansongda\Pay\Pay;
use Yansongda\Pay\Log;
class Alipay
{
protected $config = [
'app_id' => '2016102700769558',
'notify_url' => 'http://month.cn/index.php/pay/alipay/notify',
'return_url' => 'http://month.cn/index.php/pay/alipay/returns',
'ali_public_key' =>'./foo/alipayCertPublicKey_RSA2.crt',
// 加密方式: **RSA2**
'private_key' => 'MIIEvwIBADANBgkqhkiG9w0BAQEFAASCBKkwggSlAgEAAoIBAQDcnGLzrLAwRPYLukijiGFMMKumR2CTKeVH77XfEW4ivK+P9YW9XBT+Cs46BMtHatVz322syDhZi83lChPHXZDfPcA5aoZN6PX6fHBwfZ4UzFwWnXqvSpOXR+ShANXhQAECp4EhHHHe49NtQlZNIxEmdoRuM/yeIpd3kbYysf9FALsGsYTt01eqd502OBZYdyso5+XKYJ2gnWDfGICh3/o7DuM2agl2SQJUNGzMUVAANLFlZN5xW0AERSt9j85eON3No6iT7F1uym92+FKi8SDAsHTwVqNeqPI6PcuVeNBehXCmuAalUucW0VFqCPaQnZ/rIYBLgLKufS4bFajqkNKhAgMBAAECggEBAMLQz4lEDGrz2xvMK21OeC2iJVK3YY9TxgfapY8Rg2LloVvNg4cPE/KrdCZEKYctzsV+nwmf3jMlhHMojQLXm6GolGGfsm6GtQG4dkrAg6L2PLQz6S12/BLyB/IuHLHHpZzEcwHcbqpYIlMv66o+t1xx+Myg2AqFnaCXaoAmM7ioIp+mONc2L2BwL9PvrpU+N5gmIGvQlY+5OGJMzNKRCOB9FdhrAI/5zvuovaNxGI7AtkIbZ7ehbL7Mc2jq48DK9pqyxjCANGFX4xQ+w5lcqgnqzkSsFCLl94LvCOys0QD0CVYF+IlcA+6iFPmMmIaDtA2G8rFgTdoCokiYO+eC2gECgYEA9CYX4c8aJuns7MVVoLE5eKmQqX4yQ71jjNFFtsLURZ0j0YEz8ahq0un1r1k0g1XnbTajdvlkjP51P/+67VUHT/ThW8E/33V+UaSXjyl+qdg3q5OLNZnrioUecbtOc4gGuRnyzHN6ztrqpp86nSVvZ7EWvjR0ILeN/PjUdvUfITECgYEA51HM1Nv4P3PnYEMGYlhwYHxlYQnjM0UafhLzBXdV05d10iwbzga+DKP9SR9JKEiOhBIVoGSp6o2YtMATOnX4gPMW/tdww26dFuTnZRrfpUNFjcybnfhuaQEGkBffguFRoeSEHwd05gjLAUM0QVv7EJ04GNlmcH7oV9wUW3pa7HECgYEA8wcINspEqf+oy3cS6UYAg0+mpFDuD+fxtDaMQoRlcHYfNWh7IE4ZJ6Gj4cvWLfXQzDHbPY66vG5+oBobJCvDf5+uw/r1baYy+2nvQ552avLDV5Miu1Rf1h70Uxmz2eTJbG+b9E/vKwFXGkzdt5eP8ZOho+vqvLZ6LBo0w8T0G8ECgYEA1MkcgRowDD6UMqq1LrZn+Xm00EUGKN2Cd0L7JqYV32ROT52fni/5lysrDZ6n71R/NOJl3nt7CnZiaLLffUGT7RqwppCL/Fq+SpcafJjx7dYqHzx+Uhx7hEAbR2WOh5i5PRE2sExtrkWcaHbnlNAF7cySE9m4L/etx1R9rYCqLyECgYBEw6s3Iek2QoFf05sQovEZddKi92wMZy4ox8NI/jOrmc6/S3wMacuv/7ngHps5GWBEHbvQHi9Dy9rrLa1jfNU66hhvgG4YH+CGtOKTZfdxVDoTefOSqoQrfTLam35Tb31uUAxPLcmQo76UxfxgzcZgJ2X3zY1zf5gpmYsrS9/ZIQ==',
// 使用公钥证书模式,请配置下面两个参数,同时修改ali_public_key为以.crt结尾的支付宝公钥证书路径,如(./cert/alipayCertPublicKey_RSA2.crt)
'app_cert_public_key' => './foo/appCertPublicKey_2016102700769558.crt', //应用公钥证书路径
'alipay_root_cert' => './foo/alipayRootCert.crt', //支付宝根证书路径
'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' => '1',
'subject' => 'test subject - 测试',
];
$alipay = Pay::alipay($this->config)->web($order);
return $alipay->send();// laravel 框架中请直接 `return $alipay`
}
//成功后的回调
public function returns()
{
$data = Pay::alipay($this->config)->verify(); // 是的,验签就这么简单!
echo $data->out_trade_no;
echo $data->trade_no;
echo $data->total_amount;
}
public function notify()
{
$alipay = Pay::alipay($this->config);
try{
$data = $alipay->verify(); // 是的,验签就这么简单!
// 请自行对 trade_status 进行判断及其它逻辑进行判断,在支付宝的业务通知中,只有交易通知状态为 TRADE_SUCCESS 或 TRADE_FINISHED 时,支付宝才会认定为买家付款成功。
// 1、商户需要验证该通知数据中的out_trade_no是否为商户系统中创建的订单号;
// 2、判断total_amount是否确实为该订单的实际金额(即商户订单创建时的金额);
// 3、校验通知中的seller_id(或者seller_email) 是否为out_trade_no这笔单据的对应的操作方(有的时候,一个商户可能有多个seller_id/seller_email);
// 4、验证app_id是否为该商户本身。
// 5、其它业务逻辑情况
Log::debug('Alipay notify', $data->all());
} catch (\Exception $e) {
$e->getMessage();
}
return $alipay->success()->send();// laravel 框架中请直接 `return $alipay->success()`
}
}