如何解决 Laravel sslcommerze 集成错误?

Posted

技术标签:

【中文标题】如何解决 Laravel sslcommerze 集成错误?【英文标题】:How to solve Laravel sslcommerze integration error? 【发布时间】:2020-11-29 23:41:02 【问题描述】:

我已经按照以下链接使用 sslcommerze 完成了演示支付网关的所有设置。 https://www.youtube.com/watch?v=cdGZLO0-76E https://github.com/sslcommerz/SSLCommerz-Laravel

但我在按下“立即付款”按钮后出现错误。 “沟通错误” https://prnt.sc/tx321e

弹出窗口出现但不显示选择银行选项。我可以解决这个问题吗?

【问题讨论】:

【参考方案1】:

    从以下位置创建沙盒帐户: [[https://developer.sslcommerz.com/registration/]] 您可以放置​​任何虚拟数据进行注册,除了您的电子邮件地址。 [注意:电子邮件地址应有效。您将通过电子邮件收到电子邮件验证码。输入你会记住的信息]。

    点击此处登录商户面板: [[https://sandbox.sslcommerz.com/manage/]] 登录 ID:“您在注册时提供的” 密码:“您在注册时提供的” [注意:现在您将收到一封包含 STORE_ID 和 STORE_PASSWORD 的电子邮件,可能需要几秒钟时间]

    从你的 laravel 项目转到 .env 文件: 在文件末尾添加以下行: STORE_ID = 您从邮件中收到的 STORE_PASSWORD = 您从邮件中收到的 同时设置数据库名称、用户名和密码。

    下载 SslCommerz zip 文件或克隆到任何文件夹: [[https://github.com/sslcommerz/SSLCommerz-Laravel]] 文件夹结构如下所示, |-- 配置/ |-- sslcommerz.php |-- 应用程序/库/SslCommerz |-- AbstractSslCommerz.php(核心文件) |-- SslCommerzInterface.php(核心文件) |-- SslCommerzNotification.php(核心文件) |-- README.md |-- orders.sql(示例)

    现在按照步骤将支付网关集成到您的贝宝项目中: 第一步:解压文件 第二步:复制Library文件夹,放到laravel项目的app/目录下。如果需要,然后运行 ​​composer dump -o。 第 3 步:将 config/sslcommerz.php 文件复制到您的 laravel 项目的 config/ 文件夹中。 第 4 步:将 SslCommerzPaymentController 复制到 laravel 项目的 Controllers 文件夹中 第 5 步:将定义的路由从 routes/web.php 复制到您的 laravel 项目的路由文件中。 第 6 步:将以下路由添加到 VerifyCsrfToken 中间件的 $excepts 数组中。

    protected $except = [
                             '/pay-via-ajax', '/success','/cancel','/fail','/ipn'
                     ];
    

    步骤 7:复制资源文件夹下的所有视图文件并粘贴到你的 laravel 项目的资源/视图/文件夹中。 第 8 步:要集成弹出式结帐,请在正文标记结束之前使用以下脚本。将其添加到您想要添加按钮的任何刀片模板中。 例如:welcome.blade.php-> 在body标签结束之前粘贴下面的代码。

    对于沙盒:

             <script>
                  (function (window, document) 
                         var loader = function () 
                             var script = document.createElement("script"), tag = document.getElementsByTagName("script")[0];
                         script.src = "https://sandbox.sslcommerz.com/embed.min.js?" + Math.random().toString(36).substring(7);
                             tag.parentNode.insertBefore(script, tag);
                     ;
    
                         window.addEventListener ? window.addEventListener("load", loader, false) : window.attachEvent("onload", loader);
                     )(window, document);
             </script>
    

    直播:

             <script>
                     (function (window, document) 
                         var loader = function () 
                         var script = document.createElement("script"), tag = document.getElementsByTagName("script")[0];
                             script.src = "https://seamless-epay.sslcommerz.com/embed.min.js?" + Math.random().toString(36).substring(7);
                             tag.parentNode.insertBefore(script, tag);
                     ;
    
                         window.addEventListener ? window.addEventListener("load", loader, false) : window.attachEvent("onload", loader);
                     )(window, document);
             </script>
     Step 9: Use the below button where you want to show the "Pay Now" button:
         Should be in the same place where step 8 was implemented. 
    

    立即付款

    SslCommerz 文件夹中有一个 orders.sql 文件。您可以直接从 phpmyadmin 导入它。或者您手动进行迁移和建模。并根据 oraders.sql 文件列创建新表。

    你已经完成了!

您可能会遇到的一些问题。 可能的解决方案:- -> 检查 SslCommerzPaymentController 中的 DB 类并将使用 DB 更改为 Illuminate\Support\Facades\DB; -> 从 web.php 导入 SslCommerzPaymentController。 -> 迁移表。 -> 如果要从表单中动态检索数据,则将这行代码添加到 SslCommerzPaymentController 中的 payViaAjax 方法中

    public function payViaAjax(Request $request, $id)
             
                <<$requestData = (array)json_decode($request->cart_json);>>

【讨论】:

以上是关于如何解决 Laravel sslcommerze 集成错误?的主要内容,如果未能解决你的问题,请参考以下文章

如何解决 laravel 中“找不到驱动程序”?

Laravel 模型关系错误如何解决?

laravel安装ui时出现问题如何解决?

如何解决 Lumen/Laravel 中的单例?

如何解决 Laravel 需要 php mcrypt 扩展?

如何解决 Laravel 安装时 MAC OS 上的 curl 证书问题?