laravel8+php+支付宝沙箱测试 配置沙箱环境

可以参考 yansongda网站: https://pay.yansongda.cn/docs/v2/
1.首先准备好自己支付宝开发平台,密钥,公钥,appid,支付宝网关,这些自己在平台上可以自己搞定如图所示

在这里插入图片描述
2.接着准备好laravel8项目,可以临时模拟一下,在模拟之前,首先要清楚各个目录之间的含义,这里只讲经常用到的几个目录,作为了解,具体了解可以去参看官方平台。
2.1 这个安装包去支付宝开发平台去下载。然后解压开,移动到自己项目的入口文件下,在这里插入图片描述
2.2 里面的文件目录列表 展示
在这里插入图片描述
3. 搞定完这些,接下来可以先走一遍demo,demo测试没问题后,即可以编写。运行时直接域名后面跟上/plugins/alipay/index.php 具体文件可以看图2.2 运行完之后会自动跳转,成功即可。 运行前先配置一下 配置在/plugins/alipay/config.php 如下图所示在这里插入图片描述
**5.面测试通过后即可以编写 支付页面简单编写一下,可以使用demo里的模板 **

<form name=alipayment action='/plugins/alipay/pagepay/pagepay.php' method=post target="_blank">
    <div id="body1" class="show" name="divcontent">
        <dl class="content">
            <dt>商户订单号 :</dt>
            <dd>
                <input id="WIDout_trade_no" value="{{$order['out_trade_no']}}" name="WIDout_trade_no" />
            </dd>
            <hr class="one_line">
            <dt>订单名称 :</dt>
            <dd>
                <input id="WIDsubject" value="{{$order['subject']}}" name="WIDsubject" />
            </dd>
            <hr class="one_line">
            <dt>付款金额 :</dt>
            <dd>
                <input id="WIDtotal_amount" value="{{$order['total_amount']}}" name="WIDtotal_amount" />
            </dd>
            <hr class="one_line">
            <dt>商品描述:</dt>
            <dd>
                <input id="WIDbody" value="{{$order['body']}}" name="WIDbody" />
            </dd>
            <hr class="one_line">
            <dt></dt>
            <dd id="btn-dd">
                        <span class="new-btn-login-sp">
                            <button class="new-btn-login" type="submit" style="text-align:center;">付 款</button>
                        </span>
                <span class="note-help">如果您点击“付款”按钮,即表示您同意该次的执行操作。</span>
            </dd>
        </dl>
    </div>
</form>

6.定义好异步路由和回调路由

 Route::get('pay/notify',[PayController::class,'notify'])->name('admin.pay.notify');
    //回调
    Route::get('pay/callback',[PayController::class,'callback'])->name('admin.pay.callback');

7.控制器里写上接受的参数,为了直观,先手动写上数据,渲染到要支付的页面视图 图5即是视图

  public function index(){
       $time=date('YmdHis');
       $order=[
           'out_trade_no'=>'DDE5813E296D36DD82D4A139A092E782',
           'subject'=>'海南力源信息科技有限公司',
           'total_amount'=>68888,
           'body'=>'游戏运营推广代充(天子御花园)+无需经验',
       ];
        return view('admin.pay.index',compact('order'));
    }

8.上面都执行成功后,它会自动回调,返回参数,所以我们只需要写上回调方法即可

    public function callback(Request $request){
        $data=$request->all();
        //引入第三类 也有其他引入方式 不建议这种原生的引入 支付宝平台的包有点问题,这种引入不会报错
        require_once "./plugins/alipay/config.php";
        require_once "./plugins/alipay/pagepay/service/AlipayTradeService.php";

        $alipayService=new \AlipayTradeService($config);
        $request=$alipayService->check($data);
        if ($request){
            echo "支付成功";
//            return redirect('')->with();//重定向某个页面,并给出提示
        }else{
            echo "支付失败";
//            return redirect()->withErrors();//重定向某个页面,并给出提示
        }
    }

9.第8步回调的时候,会报一个错误,Cannot redeclare Encrypt()
原因:
因为laravel框架中的Encrypt()/Decrypt()定义的加密方法和解密方法 和 alipay SDK中的Encrypt()/Decrypt()方法重名了
解决方法:
在引入的SDK中,全局搜索Encrypt()/Decrypt(),然后改个方法改名就好了,比如改成alipayEncrypt()/alipayDecrypt();
要改的文件
aop/AopEncrypt.php
aop/AopClient.php

在这里插入图片描述
如上图所示,把encrypt和decrypt加个前缀alipay即可,记得改完后用小驼峰。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值