【问题标题】:Perl: Server error at Net/Braintree HTTP module while integrationPerl:集成时 Net/Braintree HTTP 模块的服务器错误
【发布时间】:2014-09-02 01:56:19
【问题描述】:

我是 Perl 的新手。我正在将 Braintree 支付网关集成到现有项目中。我正在遵循 n Braintre 给出的指南,它非常清晰和简单,但我无法完成。我已经通过链接从 Github 下载了示例项目:https://github.com/braintree/braintree_perl_guide

执行 app.pl 文件时出现服务器错误,

后续步骤:

  1. 创建了一个沙盒帐户,获得了商户 ID、公钥、私钥和配置代码。

  2. 安装了运行 Perl 脚本所需的必要模块

  3. 编辑了 app.pl 文件,并给出了我的商家 ID 和相关键。

  4. 编辑了 form.tt 文件并给出了配置代码。

  5. 在终端执行命令 Perl app.pl,同时按回车我得到了,

    Dancer 1.3124 服务器 79859 监听 locahost:3000 == 进入开发舞池...

  6. 从浏览器连接到 localhost:3000/ 并获得 Braintree 信用卡交易表格。

  7. 输入详细信息并单击提交按钮,突然出现错误 500。“无法处理您的查询”。

  8. 如何解决此问题需要您的帮助。

我的 app.pl 文件

use strict;
use warnings;
use Dancer;
use Template;
use Net::Braintree;

my $config = Net::Braintree->configuration;

$config->environment("sandbox");
$config->merchant_id("wbjnmbzfnvs6zt56");
$config->public_key("smbbnwfhybb3h5ty");
$config->private_key("****");

get '/' => sub {
  template 'form'
};

post '/create_transaction' => sub {
  my $result = Net::Braintree::Transaction->sale({
    amount => "1000.00",
    credit_card => {
      number => param("number"),
      expiration_month => param("month"),
      expiration_year => param("year"),
      cvv => param("cvv")
    },
    options => {
      submit_for_settlement => 1
    }
  });

  my $success = $result->is_success ? "true" : "false";

  if ($result->is_success) {
    return "<h1>Success! Transaction ID: " . $result->transaction->id . "</h1>"
  } else {
    return "<h1>Error: " . $result->message . "</h1>"
  }
};

Dancer->dance;

还有我的 Form.tt 文件

<html>
  <head>
  </head>
  <body>
    <h1>Braintree Credit Card Transaction Form</h1>
    <div>
      <form action="/create_transaction" method="POST" id="braintree-payment-form">
        <p>
          <label>Card Number</label>
          <input type="text" size="20" autocomplete="off" data-encrypted-name="number" />
        </p>
        <p>
          <label>CVV</label>
          <input type="text" size="4" autocomplete="off" data-encrypted-name="cvv" />
        </p>
        <p>
          <label>Expiration (MM/YYYY)</label>
          <input type="text" size="2" data-encrypted-name="month" /> / <input type="text" size="4" data-encrypted-name="year" />
        </p>
        <input type="submit" id="submit" />
      </form>
    </div>
    <script type="text/javascript" src="https://js.braintreegateway.com/v1/braintree.js"></script>
    <script type="text/javascript">
      var braintree = Braintree.create('MIIBCgKCAQEA1E9xWJbLZeJVM9VuITkFTLbYhbxERQ64hKqDL495BTwJBJaTz+Y29U555ekRaAGeOzuRAP7wgsOhyKsvKn3w7i3JVakdPYJSLMKgjqrQOTxSxUaUn+qpb+etJiALC3lsckmh04Io/x8B16hZAKhjQTB1XUZtuEcT8Pe0ObPlnZpWPXayMGElyBQnS/AaLWE7VZiq7ezqiRl5atp7RatAUACvfTkpRdlBAw9XuaEpgKPLPWtj8CQCJk3LDYWjrLvwGKQ/LW/uPoBpfVmqbbSVe1sAaZcdMcPyqL0viYn3QSIkiLhz8SvCJExo4XaMBSGOENg2bCbBWNHSNiJzrdZA4wIDAQAB');
      braintree.onSubmitEncryptForm('braintree-payment-form');
    </script>
  </body>
</html>

【问题讨论】:

  • 500 通常意味着服务器端发生了可怕的事情。 Braintree 从他们的开发控制台有什么样的日志记录?我注意到您在将数据传递给braintree 之前没有验证任何数据。这可能会影响您的结果。
  • 我在布伦特里工作。我建议你get in touch with out support team。运行脚本时,您在控制台/日志文件中看到了什么?当您向它提交表单时,听起来您的服务器正在抛出错误。
  • @agf,当然,我与 Braintree 支持团队进行了互动。他们回答说:“我实际上在日志中没有看到您对我们的网关发出的任何请求。如果可以的话,请将生成错误的代码的 sn-p 发送给我,以便我可以在这方面对其进行测试,看看会发生什么正在进行中”。
  • @agf,在控制台日志中,我收到以下错误日志,ServerError at /Library/Perl/5.12/Net/Braintree/HTTP.pm 第 62 行 Net::Braintree::HTTP::check_response_code( 'Net::Braintree::HTTP=HASH(0x7fcb151186f8)', 500) 在 /Library/Perl/5.12/Net/Braintree/HTTP.pm 第 48 行调用 Net::Braintree::HTTP::make_request('Net:: Braintree::HTTP=HASH(0x7fcb151186f8)', '/customers/', 'HASH(0x7fcb1512d398)', 'POST') 在 /Library/Perl/5.12/Net/Braintree/HTTP.pm 第 13 行调用
  • 谢谢各位,这是一个代理问题,通过代理服务器后,它对我有用。 API IP 地址已解锁。

标签: perl paypal payment-gateway perl-module braintree


【解决方案1】:

根据 cmets,错误实际上是由代理问题引起的。绕过代理解决了这个问题。

【讨论】:

    猜你喜欢
    • 2013-06-19
    • 2017-05-24
    • 2020-08-07
    • 1970-01-01
    • 2013-02-14
    • 2020-04-21
    • 1970-01-01
    • 2012-08-02
    • 2020-03-10
    相关资源
    最近更新 更多