diff --git a/app/Libs/Alipay.class.php b/app/Libs/Alipay.class.php new file mode 100644 index 0000000..dba7a02 --- /dev/null +++ b/app/Libs/Alipay.class.php @@ -0,0 +1,61 @@ +config = config("pay.alipay"); + } + + public function test() + { + $order = [ + 'out_trade_no' => time(), + 'total_amount' => '1', + 'subject' => 'test subject - 测试', + ]; + + $alipay = Pay::alipay($this->config)->scan($order); + return $alipay->send();// laravel 框架中请直接 `return $alipay` + } + + public function return() + { + $data = Pay::alipay($this->config)->verify(); // 是的,验签就这么简单! + + // 订单号:$data->out_trade_no + // 支付宝交易号:$data->trade_no + // 订单总金额:$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(); + } +} diff --git a/composer.lock b/composer.lock index 7cc860b..2fc763f 100644 --- a/composer.lock +++ b/composer.lock @@ -3916,16 +3916,16 @@ }, { "name": "symfony/event-dispatcher", - "version": "v5.2.3", + "version": "v5.2.4", "source": { "type": "git", "url": "https://github.com/symfony/event-dispatcher.git", - "reference": "4f9760f8074978ad82e2ce854dff79a71fe45367" + "reference": "d08d6ec121a425897951900ab692b612a61d6240" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/4f9760f8074978ad82e2ce854dff79a71fe45367", - "reference": "4f9760f8074978ad82e2ce854dff79a71fe45367", + "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/d08d6ec121a425897951900ab692b612a61d6240", + "reference": "d08d6ec121a425897951900ab692b612a61d6240", "shasum": "", "mirrors": [ { @@ -3986,7 +3986,7 @@ ], "description": "Provides tools that allow your application components to communicate with each other by dispatching events and listening to them", "homepage": "https://symfony.com", - "time": "2021-01-27T10:36:42+00:00" + "time": "2021-02-18T17:12:37+00:00" }, { "name": "symfony/event-dispatcher-contracts", @@ -4176,16 +4176,16 @@ }, { "name": "symfony/http-foundation", - "version": "v5.2.3", + "version": "v5.2.4", "source": { "type": "git", "url": "https://github.com/symfony/http-foundation.git", - "reference": "20c554c0f03f7cde5ce230ed248470cccbc34c36" + "reference": "54499baea7f7418bce7b5ec92770fd0799e8e9bf" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-foundation/zipball/20c554c0f03f7cde5ce230ed248470cccbc34c36", - "reference": "20c554c0f03f7cde5ce230ed248470cccbc34c36", + "url": "https://api.github.com/repos/symfony/http-foundation/zipball/54499baea7f7418bce7b5ec92770fd0799e8e9bf", + "reference": "54499baea7f7418bce7b5ec92770fd0799e8e9bf", "shasum": "", "mirrors": [ { @@ -4234,7 +4234,7 @@ ], "description": "Defines an object-oriented layer for the HTTP specification", "homepage": "https://symfony.com", - "time": "2021-02-03T04:42:09+00:00" + "time": "2021-02-25T17:16:57+00:00" }, { "name": "symfony/http-kernel", @@ -6004,7 +6004,7 @@ "shasum": "", "mirrors": [ { - "url": "https://mirrors.cloud.tencent.com/composer/dists/%package%/%reference%.%type%", + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", "preferred": true } ] @@ -6086,7 +6086,7 @@ "shasum": "", "mirrors": [ { - "url": "https://mirrors.cloud.tencent.com/composer/dists/%package%/%reference%.%type%", + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", "preferred": true } ] @@ -6141,7 +6141,7 @@ "shasum": "", "mirrors": [ { - "url": "https://mirrors.cloud.tencent.com/composer/dists/%package%/%reference%.%type%", + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", "preferred": true } ] @@ -6204,7 +6204,7 @@ "shasum": "", "mirrors": [ { - "url": "https://mirrors.cloud.tencent.com/composer/dists/%package%/%reference%.%type%", + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", "preferred": true } ] @@ -6288,7 +6288,7 @@ "shasum": "", "mirrors": [ { - "url": "https://mirrors.cloud.tencent.com/composer/dists/%package%/%reference%.%type%", + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", "preferred": true } ] @@ -6356,7 +6356,7 @@ "shasum": "", "mirrors": [ { - "url": "https://mirrors.cloud.tencent.com/composer/dists/%package%/%reference%.%type%", + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", "preferred": true } ] @@ -6422,7 +6422,7 @@ "shasum": "", "mirrors": [ { - "url": "https://mirrors.cloud.tencent.com/composer/dists/%package%/%reference%.%type%", + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", "preferred": true } ] @@ -6472,7 +6472,7 @@ "shasum": "", "mirrors": [ { - "url": "https://mirrors.cloud.tencent.com/composer/dists/%package%/%reference%.%type%", + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", "preferred": true } ] @@ -6560,7 +6560,7 @@ "shasum": "", "mirrors": [ { - "url": "https://mirrors.cloud.tencent.com/composer/dists/%package%/%reference%.%type%", + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", "preferred": true } ] @@ -6659,7 +6659,7 @@ "shasum": "", "mirrors": [ { - "url": "https://mirrors.cloud.tencent.com/composer/dists/%package%/%reference%.%type%", + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", "preferred": true } ] @@ -6741,7 +6741,7 @@ "shasum": "", "mirrors": [ { - "url": "https://mirrors.cloud.tencent.com/composer/dists/%package%/%reference%.%type%", + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", "preferred": true } ] @@ -6798,7 +6798,7 @@ "shasum": "", "mirrors": [ { - "url": "https://mirrors.cloud.tencent.com/composer/dists/%package%/%reference%.%type%", + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", "preferred": true } ] @@ -6859,7 +6859,7 @@ "shasum": "", "mirrors": [ { - "url": "https://mirrors.cloud.tencent.com/composer/dists/%package%/%reference%.%type%", + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", "preferred": true } ] @@ -6936,7 +6936,7 @@ "shasum": "", "mirrors": [ { - "url": "https://mirrors.cloud.tencent.com/composer/dists/%package%/%reference%.%type%", + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", "preferred": true } ] @@ -6991,7 +6991,7 @@ "shasum": "", "mirrors": [ { - "url": "https://mirrors.cloud.tencent.com/composer/dists/%package%/%reference%.%type%", + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", "preferred": true } ] @@ -7058,7 +7058,7 @@ "shasum": "", "mirrors": [ { - "url": "https://mirrors.cloud.tencent.com/composer/dists/%package%/%reference%.%type%", + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", "preferred": true } ] @@ -7115,7 +7115,7 @@ "shasum": "", "mirrors": [ { - "url": "https://mirrors.cloud.tencent.com/composer/dists/%package%/%reference%.%type%", + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", "preferred": true } ] @@ -7168,7 +7168,7 @@ "shasum": "", "mirrors": [ { - "url": "https://mirrors.cloud.tencent.com/composer/dists/%package%/%reference%.%type%", + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", "preferred": true } ] @@ -7240,7 +7240,7 @@ "shasum": "", "mirrors": [ { - "url": "https://mirrors.cloud.tencent.com/composer/dists/%package%/%reference%.%type%", + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", "preferred": true } ] @@ -7314,7 +7314,7 @@ "shasum": "", "mirrors": [ { - "url": "https://mirrors.cloud.tencent.com/composer/dists/%package%/%reference%.%type%", + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", "preferred": true } ] @@ -7368,7 +7368,7 @@ "shasum": "", "mirrors": [ { - "url": "https://mirrors.cloud.tencent.com/composer/dists/%package%/%reference%.%type%", + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", "preferred": true } ] @@ -7444,7 +7444,7 @@ "shasum": "", "mirrors": [ { - "url": "https://mirrors.cloud.tencent.com/composer/dists/%package%/%reference%.%type%", + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", "preferred": true } ] @@ -7506,7 +7506,7 @@ "shasum": "", "mirrors": [ { - "url": "https://mirrors.cloud.tencent.com/composer/dists/%package%/%reference%.%type%", + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", "preferred": true } ] @@ -7559,7 +7559,7 @@ "shasum": "", "mirrors": [ { - "url": "https://mirrors.cloud.tencent.com/composer/dists/%package%/%reference%.%type%", + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", "preferred": true } ] @@ -7614,7 +7614,7 @@ "shasum": "", "mirrors": [ { - "url": "https://mirrors.cloud.tencent.com/composer/dists/%package%/%reference%.%type%", + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", "preferred": true } ] @@ -7672,7 +7672,7 @@ "shasum": "", "mirrors": [ { - "url": "https://mirrors.cloud.tencent.com/composer/dists/%package%/%reference%.%type%", + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", "preferred": true } ] @@ -7723,7 +7723,7 @@ "shasum": "", "mirrors": [ { - "url": "https://mirrors.cloud.tencent.com/composer/dists/%package%/%reference%.%type%", + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", "preferred": true } ] @@ -7792,7 +7792,7 @@ "shasum": "", "mirrors": [ { - "url": "https://mirrors.cloud.tencent.com/composer/dists/%package%/%reference%.%type%", + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", "preferred": true } ] @@ -7861,7 +7861,7 @@ "shasum": "", "mirrors": [ { - "url": "https://mirrors.cloud.tencent.com/composer/dists/%package%/%reference%.%type%", + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", "preferred": true } ] @@ -7917,7 +7917,7 @@ "shasum": "", "mirrors": [ { - "url": "https://mirrors.cloud.tencent.com/composer/dists/%package%/%reference%.%type%", + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", "preferred": true } ] @@ -7964,7 +7964,7 @@ "shasum": "", "mirrors": [ { - "url": "https://mirrors.cloud.tencent.com/composer/dists/%package%/%reference%.%type%", + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", "preferred": true } ] @@ -8019,7 +8019,7 @@ "shasum": "", "mirrors": [ { - "url": "https://mirrors.cloud.tencent.com/composer/dists/%package%/%reference%.%type%", + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", "preferred": true } ] @@ -8075,7 +8075,7 @@ "shasum": "", "mirrors": [ { - "url": "https://mirrors.cloud.tencent.com/composer/dists/%package%/%reference%.%type%", + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", "preferred": true } ] @@ -8164,7 +8164,7 @@ "shasum": "", "mirrors": [ { - "url": "https://mirrors.cloud.tencent.com/composer/dists/%package%/%reference%.%type%", + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", "preferred": true } ] @@ -8216,7 +8216,7 @@ "shasum": "", "mirrors": [ { - "url": "https://mirrors.cloud.tencent.com/composer/dists/%package%/%reference%.%type%", + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", "preferred": true } ] @@ -8267,7 +8267,7 @@ "shasum": "", "mirrors": [ { - "url": "https://mirrors.cloud.tencent.com/composer/dists/%package%/%reference%.%type%", + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", "preferred": true } ] @@ -8337,7 +8337,7 @@ "shasum": "", "mirrors": [ { - "url": "https://mirrors.cloud.tencent.com/composer/dists/%package%/%reference%.%type%", + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", "preferred": true } ] @@ -8399,7 +8399,7 @@ "shasum": "", "mirrors": [ { - "url": "https://mirrors.cloud.tencent.com/composer/dists/%package%/%reference%.%type%", + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", "preferred": true } ] @@ -8458,7 +8458,7 @@ "shasum": "", "mirrors": [ { - "url": "https://mirrors.cloud.tencent.com/composer/dists/%package%/%reference%.%type%", + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", "preferred": true } ] @@ -8531,7 +8531,7 @@ "shasum": "", "mirrors": [ { - "url": "https://mirrors.cloud.tencent.com/composer/dists/%package%/%reference%.%type%", + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", "preferred": true } ] @@ -8591,7 +8591,7 @@ "shasum": "", "mirrors": [ { - "url": "https://mirrors.cloud.tencent.com/composer/dists/%package%/%reference%.%type%", + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", "preferred": true } ] @@ -8644,7 +8644,7 @@ "shasum": "", "mirrors": [ { - "url": "https://mirrors.cloud.tencent.com/composer/dists/%package%/%reference%.%type%", + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", "preferred": true } ] @@ -8695,7 +8695,7 @@ "shasum": "", "mirrors": [ { - "url": "https://mirrors.cloud.tencent.com/composer/dists/%package%/%reference%.%type%", + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", "preferred": true } ] @@ -8754,7 +8754,7 @@ "shasum": "", "mirrors": [ { - "url": "https://mirrors.cloud.tencent.com/composer/dists/%package%/%reference%.%type%", + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", "preferred": true } ] @@ -8802,7 +8802,7 @@ "shasum": "", "mirrors": [ { - "url": "https://mirrors.cloud.tencent.com/composer/dists/%package%/%reference%.%type%", + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", "preferred": true } ] @@ -8854,7 +8854,7 @@ "shasum": "", "mirrors": [ { - "url": "https://mirrors.cloud.tencent.com/composer/dists/%package%/%reference%.%type%", + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", "preferred": true } ] @@ -8903,7 +8903,7 @@ "shasum": "", "mirrors": [ { - "url": "https://mirrors.cloud.tencent.com/composer/dists/%package%/%reference%.%type%", + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", "preferred": true } ] @@ -8958,7 +8958,7 @@ "shasum": "", "mirrors": [ { - "url": "https://mirrors.cloud.tencent.com/composer/dists/%package%/%reference%.%type%", + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", "preferred": true } ] @@ -9008,7 +9008,7 @@ "shasum": "", "mirrors": [ { - "url": "https://mirrors.cloud.tencent.com/composer/dists/%package%/%reference%.%type%", + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", "preferred": true } ] @@ -9059,7 +9059,7 @@ "shasum": "", "mirrors": [ { - "url": "https://mirrors.cloud.tencent.com/composer/dists/%package%/%reference%.%type%", + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", "preferred": true } ] @@ -9105,7 +9105,7 @@ "shasum": "", "mirrors": [ { - "url": "https://mirrors.cloud.tencent.com/composer/dists/%package%/%reference%.%type%", + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", "preferred": true } ] diff --git a/config/pay.php b/config/pay.php deleted file mode 100644 index a6a39ce..0000000 --- a/config/pay.php +++ /dev/null @@ -1,77 +0,0 @@ - [ - // 支付宝分配的 APPID - 'app_id' => env('ALI_APP_ID', ''), - - // 支付宝异步通知地址 - 'notify_url' => '', - - // 支付成功后同步通知地址 - 'return_url' => '', - - // 阿里公共密钥,验证签名时使用 - 'ali_public_key' => env('ALI_PUBLIC_KEY', ''), - - // 自己的私钥,签名时使用 - 'private_key' => env('ALI_PRIVATE_KEY', ''), - - // 使用公钥证书模式,请配置下面两个参数,同时修改 ali_public_key 为以 .crt 结尾的支付宝公钥证书路径,如(./cert/alipayCertPublicKey_RSA2.crt) - // 应用公钥证书路径 - 'app_cert_public_key' => env('ALI_CERT_PUBLIC_KEY', ''), - - // 支付宝根证书路径 - 'alipay_root_cert' => env('ALI_CERT_ROOT', ''), - - // optional,默认 warning;日志路径为:sys_get_temp_dir().'/logs/yansongda.pay.log' - 'log' => [ - 'file' => storage_path('logs/alipay.log'), - // 'level' => 'debug' - // 'type' => 'single', // optional, 可选 daily. - // 'max_file' => 30, - ], - - // optional,设置此参数,将进入沙箱模式 - // 'mode' => 'dev', - ], - - 'wechat' => [ - // 公众号 APPID - 'app_id' => env('WECHAT_APP_ID', ''), - - // 小程序 APPID - 'miniapp_id' => env('WECHAT_MINIAPP_ID', ''), - - // APP 引用的 appid - 'appid' => env('WECHAT_APPID', ''), - - // 微信支付分配的微信商户号 - 'mch_id' => env('WECHAT_MCH_ID', ''), - - // 微信支付异步通知地址 - 'notify_url' => '', - - // 微信支付签名秘钥 - 'key' => env('WECHAT_KEY', ''), - - // 客户端证书路径,退款、红包等需要用到。请填写绝对路径,linux 请确保权限问题。pem 格式。 - 'cert_client' => '', - - // 客户端秘钥路径,退款、红包等需要用到。请填写绝对路径,linux 请确保权限问题。pem 格式。 - 'cert_key' => '', - - // optional,默认 warning;日志路径为:sys_get_temp_dir().'/logs/yansongda.pay.log' - 'log' => [ - 'file' => storage_path('logs/wechat.log'), - // 'level' => 'debug' - // 'type' => 'single', // optional, 可选 daily. - // 'max_file' => 30, - ], - - // optional - // 'dev' 时为沙箱模式 - // 'hk' 时为东南亚节点 - // 'mode' => 'dev', - ], -];