【发布时间】:2014-09-02 01:56:19
【问题描述】:
我是 Perl 的新手。我正在将 Braintree 支付网关集成到现有项目中。我正在遵循 n Braintre 给出的指南,它非常清晰和简单,但我无法完成。我已经通过链接从 Github 下载了示例项目:https://github.com/braintree/braintree_perl_guide
执行 app.pl 文件时出现服务器错误,
后续步骤:
创建了一个沙盒帐户,获得了商户 ID、公钥、私钥和配置代码。
安装了运行 Perl 脚本所需的必要模块
编辑了 app.pl 文件,并给出了我的商家 ID 和相关键。
编辑了 form.tt 文件并给出了配置代码。
-
在终端执行命令 Perl app.pl,同时按回车我得到了,
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;
还有我的 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