我使用Stripe Checkout在我的网站上创建一个付款表单,该付款表单需要使用3个单独的Stripe帐户,基于单个表单中的下拉列表选择。
在HTML / JS方面,我已成功动态设置Stripe付款的公钥。
在PHP方面,我想根据提交的公钥设置密钥。
除了明显的问题是这样做是否安全之后,PHP代码会是什么样子?
这是我目前的参考:https://stripe.com/docs/checkout/php
以下是我对PHP代码的想法。如果我的直觉不对,也要欣赏更好的解决方案。
<?php
require_once('vendor/autoload.php');
$stripeStore1 = array(
"secret_key" => "...",
"publishable_key" => "..."
);
$stripeStore2 = array(
"secret_key" => "...",
"publishable_key" => "..."
);
$stripeStore3 = array(
"secret_key" => "...",
"publishable_key" => "..."
);
// if form name='key' == a
\Stripe\Stripe::setApiKey($stripeStore1['secret_key']);
// if form name='key' == b
\Stripe\Stripe::setApiKey($stripeStore2['secret_key']);
// if form name='key' == c
\Stripe\Stripe::setApiKey($stripeStore3['secret_key']);
?>
以下是我的JS代码的外观。
$('#customButton').on('click', function(e) {
// Open Checkout with further options
if (validateForm()) {
var store = selectStore();
var handler = StripeCheckout.configure({
key: store.testKey, // toggle Stripe mode here
name: store.name,
panelLabel: 'Pay {{amount}}',
token: function(token) {
// Use the token to create the charge with a server-side script.
// You can access the token ID with `token.id`
}
});
handler.open({
zipCode: true,
amount: 1500
});
}
e.preventDefault();
});
答案 0 :(得分:1)
你的直觉对我来说非常合适。
由于看起来您正在使用Checkout(它负责使用stripe.js在客户端提交卡号,然后在代码中为您提供令牌),您的Javascript需要将公钥更改为与相应帐户对应的公钥。生成令牌(并从stripe.js返回到您的代码)之后,将其传递给PHP脚本,同时识别您使用的Stripe帐户,然后PHP脚本使用适当的秘密执行实际收费关键在后端。
我会在那里添加一些东西来处理来自你的Javascript的无效标识符,但最终(根据我对stripe.js的理解),令牌只能对应一个帐户。如果a = ["the red fox", "the blue fox", "the green fox",
"the yellow fox", "the red rabbit", "the yellow rabbit"]
b = ["fox", "rabbit"]
c = ["red", "blue"]
d = set([e for e in a for f in b if f in e]) - set([e for e in a for f in c if f in e])
for d in d:
print d
= $_POST['key']
并且您无法使用&#34; a&#34;的密钥找到令牌。帐户,请确保您妥善处理。