laravel框架 APP 支付宝支付

6 篇文章 0 订阅
2 篇文章 0 订阅

首先去 支付宝 下载sdk
我下载的SDK放在第三方vendor中如下:
在这里插入图片描述

放入地址以后给alipay权限:
sudo chmod -R 777 alipay

放入vendor以后在composer.json 加入以下内容:

在这里插入图片描述

在composer加入classmap以后执行如下代码
composer dump-autoload

完成以后在app 同级目录 config 下面创建配置文件我的是alipay.php
配置文件中的内容如下:

<?php

return [
    'alipayApp' => [
        //应用ID,您的APPID。
        'app_id' => env('ALIPAY_APPID',"去支付宝获取"),

        //支付宝网关
        'gatewayUrl' => env('ALIPAY_GATEWAY_URL',"去支付宝获取"),

        //商户私钥,您的原始格式RSA私钥
        'merchant_private_key' => env('MERCHANT_PRIVATE_KEY',"去支付宝获取"),

        //支付宝公钥,查看地址:https://openhome.alipay.com/platform/keyManage.htm 对应APPID下的支付宝公钥。
        'alipay_public_key' => env('ALIPAY_PUBLIC_KEY',"去支付宝获取"),

        //异步通知地址
        'notify_url' => env('ALIPAY_APP_NOTIFY_URL','下面红色字体下的内容'),

        //编码格式
        'charset' => "UTF-8",

        //签名方式
        'sign_type' => "RSA2",

        //返回数据格式
        'format' => "json",

        // 付款时间
        'timeout_express' => '30m',

        // 商户uid
        'seller_id' => env('SELLER_ID','自己获取'),
    ]
];

(自己配置回调地址路由)代码如下:

		$API = config('config.alipayApp');           // 调用支付宝配置文件
        $Client = new \AopClient();                     // 实例化类
        $Client->alipayrsaPublicKey = $API['alipay_public_key'];
        $parm = $_POST;
        Redis::setex('alipayRedis',3600,serialize($parm));
        //  验证签名
        $flag = $Client->rsaCheckV1($parm,NULL,"RSA2");
        if($flag){
            if ($parm['trade_status'] == 'TRADE_SUCCESS' || $parm['trade_status'] == 'TRADE_FINISHED') {
                // 此处为自己业务逻缉处理
                DB::table('bk_goods_info')->insert([
                    'order_no'=>$parm['out_trade_no'],          // 交易订单号
                    'pay_platform'=>1,                          // 支付类型   1:支付宝 2:微信
                    'platform_status'=>'成功'                    // 是否支付
                ]);
                GoodsOrderModel::where(['order_no'=>$parm['out_trade_no']])->update([
                    'status'=>20,                       // 订单状态:0-已取消,10-未付款,20-已付款,40-已发货,50-交易成功,60-交易关闭
                    'payment_time'=>time(),             // 付款时间
                    'postage'=>0,                       // 运费,单位是元
                ]);
                echo 'success';
            }
        }

支付接口代码:

    public function alipay()
    {
//        $orderId = request()->input('orderId');
//        $subject = request()->input('subject');
//        $expire = config('config.alipayApp.timeout_express');
//        $body = request()->input('body');
//        $total_amount = request()->input('total_amount');
//        "{\"body\":\"{$body}\","      //支付商品描述
//        . "\"subject\":\"{$subject}\","        //支付商品的标题
//        . "\"out_trade_no\":\"{$orderId}\","   //商户网站唯一订单号
//        . "\"timeout_express\":\"{$expire}m\"," //该笔订单允许的最晚付款时间,逾期将关闭交易。取值范围:1m~15d。m-分钟,h-小时,d-天,1c-当天(1c-当天的情况下,无论交易何时创建,都在0点关闭)。 该参数数值不接受小数点, 如 1.5h,可转换为 90m。
//        //注:若为空,则默认为15d。
//        . "\"total_amount\":\"{$total_amount}\"," //订单总金额,单位为元,精确到小数点后两位,取值范围[0.01,100000000]
//        . "\"product_code\":\"QUICK_MSECURITY_PAY\""
//        . "}"
        try{
            $aop = new \AopClient();
            $aop->gatewayUrl = config('config.alipayApp.gatewayUrl'); // 支付宝网关
            $aop->appId = config('config.alipayApp.app_id'); // app_id
            $aop->rsaPrivateKey = config('config.alipayApp.merchant_private_key'); // 私钥
            $aop->alipayrsaPublicKey = config('config.alipayApp.alipay_public_key'); // 公钥
            $aop->format= 'json';//固定
            $aop->charset = config('config.alipayApp.charset'); // 编码
            $aop->signType = config('config.alipayApp.sign_type'); // 签名类型
            $request = new \AlipayTradeAppPayRequest();
            //SDK已经封装掉了公共参数,这里只需要传入业务参数
            $bizcontent = "{\"body\":\"我是测试数据\","
                . "\"subject\": \"App支付测试\","
                . "\"out_trade_no\": \"" . time() . "123456\","
                . "\"timeout_express\": \"30m\","
                . "\"total_amount\": \"0.01\","
                . "\"product_code\":\"QUICK_MSECURITY_PAY\""
                . "}";
            $request->setNotifyUrl(config('config.alipayApp.notify_url'));
            $request->setBizContent($bizcontent);
            //这里和普通的接口调用不同,使用的是sdkExecute
            $response = $aop->sdkExecute($request);
            //htmlspecialchars是为了输出到页面时防止被浏览器将关键参数html转义,实际打印到日志以及http传输不会有这个问题
//            return htmlspecialchars($response);//就是orderString 可以直接给客户端请求,无需再做处理。
            return $response;
        }catch(Exception $e){
            //失败返回false
            return false;
        }

laravel框架支付功能就完成啦。。。
(纯属爱好就当作日记 把遇到的问题记录一下 有问题请留言)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值