【问题标题】:Laravel- Paypal checkout button is not showing upLaravel-Paypal 结帐按钮未显示
【发布时间】:2021-04-06 09:10:40
【问题描述】:

我按照Paypal的集成教程将智能支付按钮与我的blade.html集成

    @foreach($details as $detail )
            <div class="d-flex w-100 justify-content-between"> 
                 <h1 class="card-title">{{ $detail->project->name }}</h1>
                 <small class="text-info">assigned on {{ $detail->created_at->format('d.m.Y') }}</small>
            </div>
                          
                            <table>
                            //data fetched from database
                            </table>
                            <hr>
                            @if($detail->bid->method == 'milestone')
                            
                            @foreach($milestones as $milestone)
                            <div class="card text-white bg-dark mb-3" style="max-width: 100%;">
                            <div class="card-body">
                                <h5 class="card-title">Milestone: {{ $milestone->name }}</h5>
                                <div class="d-flex w-100 justify-content-between">
                                <p class="card-text">Amount (RM) : {{ $milestone->milestoneAmount }}</p>
                                <div id="payment-checkout"></div>
                                </div>
                                 
                            </div>
                            </div>
                            @endforeach
                            @else
                            <a href="#" class="btn btn-primary">Pay</a>
                            @endif
                           
                            <div class="row pt-4 float-right"><a href="{{route('projects.show',auth()->user()->id)}}" >Back</a></div>
@endforeach      

    <script src="https://www.paypal.com/sdk/js?client-id=Aa6YqiZeNrYj59PgmbpU6sUjOibNneCkf6QAmvNq71qVHG8BNViA6EKWBSiw-zFdGHpzWFrMR8jDDMAd"></script>
    <script>paypal.Buttons().render('#payment-checkout');</script>

我在 div 标签和 render() 中使用了相同的 id、payment-checkout,但没有显示结帐按钮。它只是创建了一个空白的 div 空间。 我希望按钮显示在每个卡片 div 上。 这是Rendered source

【问题讨论】:

  • 良好的代码缩进将帮助我们阅读代码,更重要的是它将帮助您调试您的代码Take a quick look at a coding standard为您自己的利益。您可能会被要求在几周/几个月内修改此代码,最后您会感谢我的。
  • 那里明显少了很多代码,能不能加个Minimal, Complete and Verifiable Example
  • @RiggsFolly 嗨,我已经编辑了这个问题。请看一下
  • 从(使用您的浏览器或命令行实用程序)下载页面呈现的 HTML 并上传,这样我们就可以查看发送到浏览器(而不是您的服务器)的实际 HTML/JS代码),以及随之而来的实际运行时错误

标签: php laravel paypal


【解决方案1】:

我希望按钮显示在每个卡片 div 中。

在这种情况下,您需要多次调用 .render() 函数(分别调用每个函数),否则它只会在第一次匹配时呈现。

为简单起见,您要呈现按钮的每个位置都应具有唯一的 HTML id

不过,您的主要问题是其他问题——因为以下简单示例按预期工作(只会呈现一个按钮堆栈):

First:<hr />
<div id="payment-checkout"></div>
Second:<hr />
<div id="payment-checkout"></div>
<script src="https://www.paypal.com/sdk/js?client-id=Aa6YqiZeNrYj59PgmbpU6sUjOibNneCkf6QAmvNq71qVHG8BNViA6EKWBSiw-zFdGHpzWFrMR8jDDMAd"></script>
<script>paypal.Buttons().render('#payment-checkout');</script>

对于主要问题的建议,使用提供给客户端的 HTML 更新问题(使用您的浏览器或其他实用程序获取),以便我们可以查看在客户端运行的实际 HTML/JS,以及因此能够重现或以其他方式识别运行时错误。

【讨论】:

  • 我在问题中添加了渲染源。在 foreach 的第一个循环中注意到,它确实加载了我猜的 paypal api。
  • 另一个问题是,如何在每个单独的循环中调用 .render() 函数?
  • 你渲染的源码不包含js的script标签,所以没用。在浏览器执行任何或 JS 之前,您应该获取服务器提供的源代码。您的服务器为要显示的页面传输的文件信息就是所需要的。
猜你喜欢
  • 2018-08-30
  • 2021-08-12
  • 2016-10-31
  • 2017-07-15
  • 2018-04-09
  • 2017-11-07
  • 1970-01-01
  • 1970-01-01
  • 2015-01-06
相关资源
最近更新 更多