Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Perl:Net/Braintree HTTP模块集成时出现服务器错误_Perl_Paypal_Payment Gateway_Perl Module_Braintree - Fatal编程技术网

Perl:Net/Braintree HTTP模块集成时出现服务器错误

Perl:Net/Braintree HTTP模块集成时出现服务器错误,perl,paypal,payment-gateway,perl-module,braintree,Perl,Paypal,Payment Gateway,Perl Module,Braintree,我是Perl的新手。我正在将Braintree支付网关集成到现有项目中。我在遵循n Braintre提供的指南,它是如此清晰和简单,但我无法完成它。我已经通过链接从Github下载了示例项目:https://github.com/braintree/braintree_perl_guide 我在执行app.pl文件时遇到服务器错误 以下步骤: 创建了一个沙箱帐户,获得了商户id、公钥、私钥和配置代码 安装了运行Perl脚本所需的必要模块 编辑app.pl文件给定和给定我的商户id和相关密钥 编辑

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

我在执行app.pl文件时遇到服务器错误

以下步骤:

  • 创建了一个沙箱帐户,获得了商户id、公钥、私钥和配置代码

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

  • 编辑app.pl文件给定和给定我的商户id和相关密钥

  • 编辑form.tt文件并给出配置代码

  • 在终端中,执行命令Perl app.pl,同时按enter键

    Dancer 1.3124服务器79859正在收听locahost:3000 ==进入开发舞池

  • 从浏览器连接到localhost:3000/并已获得Braintree信用卡交易表单

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

  • 如何解决此问题,请您提供帮助

  • 我的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;
    
    使用严格;
    使用警告;
    使用舞蹈演员;
    使用模板;
    使用Net::Braintree;
    我的$config=Net::Braintree->configuration;
    $config->environment(“沙盒”);
    $config->merchant_id(“wbjnmbzfnvs6zt56”);
    $config->public_key(“smbbnwfhybb3h5ty”);
    $config->private_key(*****);
    获取“/”=>sub{
    模板“表单”
    };
    post'/create_transaction'=>sub{
    my$result=Net::Braintree::Transaction->sale({
    金额=>“1000.00”,
    信用卡=>{
    数字=>参数(“数字”),
    到期月份=>参数(“月份”),
    到期年=>参数(“年”),
    cvv=>参数(“cvv”)
    },
    选项=>{
    提交以进行结算=>1
    }
    });
    my$success=$result->is_success?“true”:“false”;
    如果($result->is\u success){
    返回“成功!事务ID:”.$result->Transaction->ID。“”
    }否则{
    返回“错误:.”$result->message。“”
    }
    };
    舞者->舞蹈;
    
    还有我的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>
    
    
    Braintree信用卡交易表
    
    卡号
    

    CVV

    有效期(年月日) /

    var braintree=braintree.create4.QQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBJEXO4XABSGOENG2BCBWNHSNIJzrdZA4wIDAQAB'); braintree.onSubmitEncryptForm(“braintree-payment-form”);
    根据注释,错误实际上是由代理问题引起的。绕过代理解决了问题。

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