为什么Stripe API无法在实时网站上运行?

时间:2018-03-03 10:26:15

标签: php stripe-payments

我试图使用Stripe在一个小网站上处理一些付款。

在当地,一切都很好:我所有的测试都很好。 问题在于实时网站:我可以获得一个令牌(来自javascript)但是php端的\Stripe\Charge::create是错误的,我无法弄清楚原因。

这里有一些信息:

# Making Stripe works
require_once(dirname(__FILE__).'/stripe/init.php');

# Set API Key (Both Live and Test keys don't work)
\Stripe\Stripe::setApiKey("sk_test_****");

# Trying to charge
# $token is defined from the $_POST and works great ($amount and $metas are fine too)

try {
    $charge = \Stripe\Charge::create(
        array(
            'amount' => $amount,
            'currency' => 'eur',
            'source' => $token,
            'metadata' => $metas
        )
    );

    // Blabla
} catch(\Stripe\Error\Card $e) {
    // Catching card error
} catch (\Stripe\Error\RateLimit $e) {
    // Catching RateLimit API error
} catch (\Stripe\Error\InvalidRequest $e) {
    // Catching invalid request (missing param or else)
} catch (\Stripe\Error\Authentication $e) {
    // Catching fail authentification from API KEY for example
} catch (\Stripe\Error\ApiConnection $e) {
    // Catching fail APIConnection
    // The error seems related to this because the catch is done here !
} catch (\Stripe\Error\Base $e) {
    // Catching base error
} catch (Exception $e) {
    // Catching other errors
}

在本地它工作得很好,但在实时服务器上它会在\Stripe\Error\ApiConnection上捕获一个错误(一段时间后)而没有真正的信息。

#$e contains :
"httpStatus":null,
"httpBody":null,
"jsonBody":null,
"httpHeaders":null,
"requestId":null,
"stripeCode":null

这不是一个好兆头。

除了gettin'令牌部分(效果很好)我的Stripe的仪表板上没有任何关于此充电试用的日志。看起来Stripe从未收到请求。

我试图从我的服务器ping api.stripe.com,效果很好。

本地站点和实时站点上的代码是相同的,条带键可以很好地复制/粘贴(它适用于本地,所以...)。

My Stripe的帐户已经过验证,因此我可以使用Live Keys(但实时和测试密钥都不像我说的那样工作)。

API是最新的。

我不知道在哪里搜索:​​我联系了Stripe的支持,我还在等待答案。

感谢您的兴趣...

1 个答案:

答案 0 :(得分:1)

所以,在与@YvesLeBorg(感谢man)和大量研究进行了一次谈话之后,我终于能够通过将其添加到我的iptables'规则文件中来完成所有这些工作:

iptables -I OUTPUT -o eth0 -d 0.0.0.0/0 -j ACCEPT
iptables -I INPUT -i eth0 -m state --state ESTABLISHED,RELATED -j ACCEPT

根据我的理解,它允许任何本地发起的流量。正如你所看到的那样,我对这些事情并不是很专业,所以如果有人认为这是错误的(即使它是使所有这些工作成功的唯一因素),请告诉我。