我是 Perl 的新手。我正在致力于将 Braintree 支付网关集成到现有项目中。我正在遵循 n Braintre 提供的指南,它是如此清晰和简单,但我无法完成。我已经通过以下链接从 Github 下载示例项目:https://github.com/braintree/braintree_perl_guide
我在执行 app.pl 文件时遇到服务器错误,
遵循的步骤:
创建了一个 Sandbox 帐户,获得了商户 ID、公钥、私钥和配置代码。
安装运行 Perl 脚本所需的必要模块
编辑给定的 app.pl 文件并给定我的商家 ID 和关联的 key 。
编辑 form.tt 文件并给出配置代码。
在终端中执行命令 Perl app.pl,同时按 enter 我得到了,
Dancer 1.3124 server 79859 listening on locahost:3000 == Entering the development dance floor ...
从浏览器连接到 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;
和我的 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>
最佳答案
根据评论,该错误实际上是由代理问题引起的。绕过代理解决了这个问题。
关于Perl:集成时 Net/Braintree HTTP 模块的服务器错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24697759/