### 运行环境 * PHP 7.0+ (v2.8.0 开始 >= 7.1.3) * composer > php5 请使用 v1.x 版本[https://github.com/yansongda/pay/tree/v1.x](https://github.com/yansongda/pay/tree/v1.x) 详情 请查看 https://github.com/yansongda/pay/tree/v2 ### 1、支付宝 * 电脑支付 * 手机网站支付 * APP 支付 * 刷卡支付 * 扫码支付 * 账户转账 * 小程序支付 | method | 描述 | | :-: | :-: | | web | 电脑支付 | | wap | 手机网站支付 | | app | APP 支付 | | pos | 刷卡支付 | | scan | 扫码支付 | | transfer | 帐户转账 | | mini | 小程序支付 | ### 2、微信 * 公众号支付 * 小程序支付 * H5 支付 * 扫码支付 * 刷卡支付 * APP 支付 * 企业付款 * 普通红包 * 分裂红包 | method | 描述 | | :-: | :-: | | mp | 公众号支付 | | miniapp | 小程序支付 | | wap | H5 支付 | | scan | 扫码支付 | | pos | 刷卡支付 | | app | APP 支付 | | transfer | 企业付款 | | redpack | 普通红包 | | groupRedpack | ## 安装 **安装 方式1** ~~~shell composer require yansongda/pay -vvv ~~~ **安装 方式2** 执行上面命令或者执行下面 ![](https://img.kancloud.cn/9d/1a/9d1a6ffc2cbd79f2874658af62c71fe9_627x317.png) ~~~ "yansongda/pay": "^2.10" ~~~ `composer install` composer install 报错版本不匹配 或者如下图 执行 `composer install --ignore-platform-reqs` 忽略版本号 ![](https://img.kancloud.cn/8b/27/8b27d9a79e5c7361c475e410f3cd1203_962x448.png) ***** **使用** 下面例子是 laravel8.0 且仅仅用了 h5 和web app 支付测试 总是报错 最后使用支付宝 官方提供 ~~~ //支付入口 public function alipayIndex(Request $request) { $money = $request->money ?? 39.9; //支付金额 $user_id = $request->id ?? null; //用户ID $pay_type = $request->pay_type ?? 'h5'; // 支付方式 $out_trade_no = date("YmdHis").rand(10,99).rand(100,999);//订单号 $alipay_order = [ 'out_trade_no' => $out_trade_no, 'total_amount' => $money, 'subject' => 'fenqixin', ]; $config = Config::get("alipay.h5_pay"); $alipay = Pay::alipay($config); $result = Order::insertOrder($user_id,$money,$out_trade_no,2); if(!$result) return false; if($pay_type == 'h5'){ return $alipay->wap($alipay_order); } return $alipay->web($alipay_order); } ~~~ ~~~ //支付宝验签 h5 public function alipayNoticeApp() { $config = Config::get("alipay.h5_pay"); $data = Pay::alipay($config)->verify(); $order_id = $data->out_trade_no; $money = $data->total_amount; $where = [ ['order_id','=',$order_id], ['money','=',$money] ]; if($data->trade_status == "TRADE_SUCCESS" || $data->trade_status == "TRADE_FINISHED"){ $order_data = Order::query()->where($where)->first(); if($order_data->status == 's') return true;//该订单 已经处理过 无需更新 订单 用户 状态 Order::query()->where($where)->update(['status' => 's']);//处理订单成功修改 User::updateUserVipStatus($order_data->user_id);//修改用户VIP状态 和 VIP时间 }else{ Order::query()->where($where)->update(['status' => 'f']); } return true; } ~~~ 支付宝官方支付 1 下载官方包 放在laravel框架 vendor目录下 ![](https://img.kancloud.cn/21/ad/21adf3193f31519748b94803ab1e89d7_222x134.png) ~~~ public function _aliPay($alipay_order,$config) { $dir = __DIR__.'/../../../vendor/';//根据自己控制器路径调整对应位置 require_once $dir.'aop/AopClient.php'; require_once $dir.'aop/request/AlipayTradeAppPayRequest.php'; $aop = new \AopClient; $aop->gatewayUrl = "https://openapi.alipay.com/gateway.do"; $aop->appId = $config['app_id']; $aop->rsaPrivateKey = $config['private_key']; $aop->format = "json"; $aop->charset = "UTF-8"; $aop->signType = "RSA2"; $aop->alipayrsaPublicKey = $config['ali_public_key']; //实例化具体API对应的request类,类名称和接口名称对应,当前调用接口名称:alipay.trade.app.pay $req = new \AlipayTradeAppPayRequest(); $notify_url = "https://api-fqx.fenqiqian.com.cn/app/alipay-notice-app-app"; $subject = $alipay_order['subject']; $body = '订单详情'; $out_trade_no = $alipay_order['out_trade_no']; $money = $alipay_order['total_amount']; $bizcontent = "{\"body\":\"".$body."\"," . "\"subject\": \"".$subject."\"," . "\"out_trade_no\": \"".$out_trade_no."\"," . "\"timeout_express\": \"30m\"," . "\"total_amount\": \"".$money."\"," . "\"product_code\":\"QUICK_MSECURITY_PAY\"" . "}"; $req->setNotifyUrl($notify_url); $req->setBizContent($bizcontent); return $aop->sdkExecute($req); } ~~~ ~~~ //支付宝验签 app public function alipayNoticeAppAPP() { $config = Config::get("alipay.app_pay"); $data = Pay::alipay($config)->verify(); $order_id = $data->out_trade_no; $money = $data->total_amount; $where = [ ['order_id','=',$order_id], ['money','=',$money] ]; DB::table("alipay")->insert(['status' => $order_id]); DB::table("alipay")->insert(['status' => $money]); if($data->trade_status == "TRADE_SUCCESS" || $data->trade_status == "TRADE_FINISHED"){ return true; } } ~~~ ***** config 配置 ~~~ 'app_pay' => [ // APPID 'app_id' => '2021002156678492', // 支付宝 支付成功后 主动通知商户服务器地址 注意 是post请求 'notify_url' => 'https://api-xxxx.cn/app/alipay-notice-app-app', // 支付宝 支付成功后 回调页面 get // 'return_url' => 'https://xxx/pages/gather/initialSuccess', // 公钥(注意是支付宝的公钥,不是商家应用公钥) 'ali_public_key' => '', // 加密方式: **RSA2** 私钥 商家应用私钥 'private_key' => "", // 'http' => [ // 'timeout' => 5.0, // 'connect_timeout' => 5.0, // // 更多配置项请参考 [Guzzle](https://guzzle-cn.readthedocs.io/zh_CN/latest/request-options.html) // ], ] ~~~