在 Play 框架 Java 2.6 中添加 Paypal 按钮

Posted

技术标签:

【中文标题】在 Play 框架 Java 2.6 中添加 Paypal 按钮【英文标题】:Adding Paypal button in Play framework Java 2.6 【发布时间】:2018-04-01 19:13:46 【问题描述】:

我正在尝试实现支付方式 Paypal 的按钮。所以我想在网站上关注guide。我正在使用 Java 和 Play 框架 2.6。

他们在网站上提供以下代码以添加您自己的代码:

<!DOCTYPE html>

<head>
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta name="viewport" content="width=device-width, initial-scale=1">
<script src="https://www.paypalobjects.com/api/checkout.js"></script>
</head>

<body>
<div id="paypal-button"></div>

  <script>
    paypal.Button.render(

        env: 'production', // Or 'sandbox',

        commit: true, // Show a 'Pay Now' button

        payment: function() 
            // Set up the payment here
        ,

        onAuthorize: function(data, actions) 
            // Execute the payment here
       

    , '#paypal-button');
  </script>
</body>

我的代码有点不同,因为我的头部有一个不同的文件(称为 main.scala.html)。所以主要看起来是这样的:

@*
* This template is called from the `index` template. This template
* handles the rendering of the page header and body tags. It takes
* two arguments, a `String` for the title of the page and an `Html`
* object to insert into the body of the page.
*@
@(title: String)(content: Html)

<!DOCTYPE html>
<html lang="en">
    <head>
        <!-- These are the meta and scripts for paypal-->
        <meta http-equiv="X-UA-Compatible" content="IE=edge" />
        <meta name="viewport" content="width=device-width, initial-scale=1">
        <script src="https://www.paypalobjects.com/api/checkout.js" data-version-4></script>


        @* Here's where we render the page title `String`. *@
        <title>@title</title>

            <!-- Loading third party fonts -->
            <link href="@routes.Assets.versioned("fonts/another_font.css")" rel="stylesheet" type="text/css">

        <!-- Loading weather css file -->
        <link rel="stylesheet" href="@routes.Assets.versioned("stylesheets/bootstrap.css")">
        <link rel="stylesheet" href="@routes.Assets.versioned("stylesheets/weather.css")">

        <link rel="shortcut icon" type="image/png" href="@routes.Assets.versioned("images/favicon.png")">

        <script src="@routes.Assets.versioned("javascripts/jquery-3.2.1.min.js")" type="text/javascript"></script>
        <script src="@routes.Assets.versioned("javascripts/bootstrap.js")" type="text/javascript"></script>

    </head>
    <body>
        @* And here's where we render the `Html` object containing
        * the page content. *@
        @content
    </body>
</html>

在 Main 中为 body 调用的内容如下所示:

    @main("ReStart") 
    <body>
            <!-- Payment Methods -->
                        @*TODO*@
                        <div class="col-md-9">
                            <h2>payment methodes</h2>
                            <div id="paypal-button"></div>

                            <script>
                                    paypal.button.render(

                                        env: 'production', // Or 'sandbox',

                                        commit: true, // Show a 'Pay Now' button

                                        payment: function() 
                                            // Set up the payment here
                                        ,

                                        onAuthorize: function(data, actions) 
                                            // Execute the payment here
                                        

                                    , '#paypal-button');
                            </script>
                        </div>
        <!-- Required for the banner -->
        <script src="@routes.Assets.versioned("javascripts/jquery-1.11.1.min.js")"></script>

        <script src="@routes.Assets.versioned("javascripts/plugins.js")"></script>
        <script src="@routes.Assets.versioned("javascripts/app.js")"></script>

    </body>

在主文件中,我添加了元和脚本链接。在内容文件中有渲染按钮的调用,但由于某种原因我无法渲染它。

我尝试过的事情:

    下载 checkout.js 并使用以下脚本标签

     <script src="@route.Assets.Versioned("javascript/checkout.js")"></script>
    

    我在两个文件中都尝试了脚本标签(带有链接和下载的 js 文件)。在 Main 和内容文件中。

它看起来很简单,但由于某种原因我无法弄清楚。

【问题讨论】:

【参考方案1】:

在您的代码中,您已经给出了您编写的内容 -

paypal.button.render

而不是

paypal.Button.render

按钮中的“B”需要大写,而您使用的是小写。修复它,看看它是否有效。我希望我能有所帮助!

【讨论】:

【参考方案2】:
    确保从 Scala 代码中删除 HTML 样式 cmets。即&lt;! - - - - &gt;,因为它会干扰一些 scala 方法,而不是使用 scala cmets @* *@。 用大写 B 更改 paypal 按钮初始化脚本。 并检查您是否能够从公共目录访问 Paypal js 和 css 文件。您可以通过localhost:port/assets/rest_of_your_hierarchy 进行操作。

【讨论】:

以上是关于在 Play 框架 Java 2.6 中添加 Paypal 按钮的主要内容,如果未能解决你的问题,请参考以下文章

将 Play 框架中的 WebSockets 从 2.4 版转换为 2.6 版

播放框架 2.6:NoClassDefFoundError:播放/缓存/DefaultCacheApi

在 Scala Java Play 框架中格式化没有小数的双精度并为数千添加逗号

在Play 2.6的conf文件中Hikari,Quill和Postgres之间的冲突

为 play framework 2.6 配置的默认控制器包在哪里?

Java 与 play 框架崩溃