laravel支付宝支付

如果没看懂,可以查看https://learnku.com/articles/19427

1、支付宝开放平台,注册商户,申请支付功能
https://openhome.alipay.com/

2、进入商户平台创建应用,下载支付宝开发平台开发助手(生成密钥用的),进行配置

3、进入商家中心把应用绑定一下

4、等待审核

5、引入支付组件:composer require yansongda/pay

6、引入二维码生成器:composer require simplesoftwareio/simple-qrcode

7、创建支付宝配置文件,在config中新建alipay.php

<?php
return [
    'pay' => [
        // APPID
        'app_id' => '************',
        // 支付宝 支付成功后 主动通知商户服务器地址  注意 是post请求
        'notify_url' => 'http://192.168.0.110:9555/api/home/ali_pay_ntify',
        // 支付宝 支付成功后 回调页面 get
        'return_url' => 'http://192.168.0.110:9528/#/pay_success',
        // 公钥(注意是支付宝的公钥,不是商家应用公钥)
        'ali_public_key' => '********',
        // 加密方式: **RSA2** 私钥 商家应用私钥
        'private_key' => '********',
        'log' => [ // optional
            'file' => '../storage/logs/alipay.log',
            'level' => 'info', // 建议生产环境等级调整为 info,开发环境为 debug
            'type' => 'single', // optional, 可选 daily.
            'max_file' => 30, // optional, 当 type 为 daily 时有效,默认 30 天
        ],
        'http' => [
            'timeout' => 5.0,
            'connect_timeout' => 5.0,
            // 更多配置项请参考 [Guzzle](https://guzzle-cn.readthedocs.io/zh_CN/latest/request-options.html)
        ],
        'mode' => 'dev', // optional,设置此参数,将进入沙箱模式
    ]
];

8、创建controlle,创建常用方法

<?php

namespace App\Http\Controllers\Alipay;

use Yansongda\Pay\Pay;
use SimpleSoftwareIO\QrCode\Facades\QrCode;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;


class AliPayController extends Controller
{
    // 手机网页支付接口
    public function aliPay(Request $request)
    {
        $aliPayOrder = [
            'out_trade_no' => time(),
            'total_amount' => 1, // 支付金额
            'subject'      => '支付宝手机网页支付' // 备注
        ];

        $config = config('alipay.pay');

        $config['return_url'] = $config['return_url'].'?id='.$request->id;

        $config['notify_url'] = $config['notify_url'].'?id='.$request->id;

        return Pay::alipay($config)->wap($aliPayOrder);
    }

    // app支付接口
    public function aliPayApp(Request $request)
    {
        $aliPayOrder = [
            'out_trade_no' => time(),
            'total_amount' => 1, // 支付金额
            'subject'      => 'app支付' // 备注
        ];

        $config = config('alipay.pay');

        $config['return_url'] = $config['return_url'].'?id='.$request->id;

        return Pay::alipay($config)->app($aliPayOrder);
    }

    // 支付宝扫码 支付
    public function aliPayScan(Request $request)
    {
        $aliPayOrder = [
            'out_trade_no' => time(),
            'total_amount' => 1, // 支付金额
            'subject'      =>  '扫码支付' // 备注
        ];

        $config = config('alipay.pay');

        $config['return_url'] = $config['return_url'].'?order_guid='.$request->order_guid;

        $scan = Pay::alipay($config)->scan($aliPayOrder);

        if(empty($scan->code) || $scan->code !== '10000') return false;

        $url = $scan->code.'?order_guid='.$request->order_guid;
        // 生成二维码
        return  QrCode::encoding('UTF-8')->size(300)->generate($url);

    }

    // 支付成功后 支付宝服务通知本项目服务器
    // post 请求
    // 这里只是大概写一下逻辑,具体的安全防护 自己再去做限制
    public function aliPayNtify(Request $request, OrderService $orderService)
    {
        $order = Order::find($request->id);
        // 更新自己项目 订单状态
        if(!empty($order))  $orderService->payOrder($order);
    }

    // 支付宝退款
    public function aliPayRefund(Request $request)
    {
        try {
            $payOrder = [
                'out_trade_no' => '', // 商家订单号
                'refund_amount' => 1, // 退款金额  不得超过该订单总金额
                'out_request_no' => '生成标示' // 同一笔交易多次退款标识(部分退款标识)
            ];

            $config = config('alipay.pay');

            // 返回状态码 code 10000 成功
            $result = Pay::alipay($config)->refund($payOrder);
            if (empty($result->code) || $result->code !== '10000') throw new \Exception('请求支付宝退款接口失败');
            // 订单改为 已退款状态
            // ~~自己商城的订单状态修改逻辑
        } catch (\Exception $exception) {
            \Log::error($exception->getMessage());
            return false;
        }
    }

    public function aliNotify()
    {

    }
}

9、创建route。这里测试一个,需要用什么自己去创建

Route::get('alipay','Alipay\AliPayController@aliPay');          //支付宝网页支付

10、使用沙箱测试 https://openhome.alipay.com/platform/appDaily.htm?tab=account
沙箱里面配置公钥,和私钥。 应用私钥需要在下载的辅助工具生成

11、请求成功,使用沙箱的用户账号和密码 登录支付宝,进行支付。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Laravel是一个优秀的PHP开发框架,具有简洁优雅、灵活可扩展的特点,广泛应用于Web开发领域。多商户商城是指一个电商平台上可以有多个独立的商户店铺,这些店铺可以独立运营和管理。在Laravel中,我们可以借助已有的开源多商户商城源码来实现这样的功能。 Laravel多商户商城源码通常包含以下核心功能: 1. 用户管理:包括用户注册、登录、个人中心等功能,用户可以创建自己的商户店铺并进行商品管理。 2. 商户管理:商户可以登录后台管理自己的店铺,包括商品管理、订单管理、店铺设置等功能。 3. 商品管理:商户可以上传、编辑和下架自己的商品,并设置商品的价格、库存等信息。 4. 订单管理:商户可以查看自己店铺的订单,包括待处理、已发货和已完成的订单,还可以进行订单发货操作。 5. 支付集成:商城需要与第三方支付平台集成,实现在线支付功能,例如支付宝、微信支付等。 6. 优惠活动:商户可以设置促销活动、限时折扣等,吸引用户购买。 7. 数据统计:商城需要提供数据统计功能,例如销售额统计、用户增长情况等,以便商户了解店铺运营情况。 构建一个完整的多商户商城源码需要深入了解Laravel框架的使用,设计良好的数据库结构,合理安排路由和控制器,编写清晰易懂的代码,实现各种商城功能。当然,由于Laravel是开源的,也可以参考已有的开源多商户商城项目进行二次开发,根据实际需求进行定制和优化。 需要指出的是,建立一个多商户商城源码不是一项容易的任务,需要有一定的PHP编程和Web开发经验。如果没有相关经验,建议先学习Laravel框架的基础知识,再逐步深入学习多商户电商开发的相关技术和知识。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值