Sta*_*kes 10 html javascript php stripe-payments
目标:我有一个html页面,你可以购买两个不同的项目.一个是5美元,另一个是10美元.我正在使用条带来处理付款.当stripe创建一个支付令牌并将其提交给我的process_charge.php时,我想从POST提交的数据中提取费用.然后我可以用这个金额打电话Stripe_Charge::create().
问题:金额没有提交到我的PHP表单,我不知道如何获得它.
我的临时解决方案:我正在销售的每一件商品都有不同的php形式.然后为每个新项目提供一个新的PHP表单! 不理想
我目前正在使用此处列出的嵌入式表单方法:https://stripe.com/docs/tutorials/checkout
我的订单页面看起来像这样.
<div class="payment-options">
<form action="process_card.php" method="POST">
<script
src="https://checkout.stripe.com/checkout.js" class="stripe-button"
data-key="pk_test_PUBLIC_KEY_FOR_TESTING"
data-amount="1000"
data-name="Nice Lint"
data-description="High quality belly button lint."
data-image="images/nice-lint.svg"
data-panel-label="Checkout {{amount}}"
data-label="Pay with Credit Card"
data-billing-address="true"
data-shipping-address="true">
</script>
</form>
</div>
Run Code Online (Sandbox Code Playgroud)
所以这很有效.它接收客户的信息,他们的运输/账单地址和他们的信用卡详细信息.然后它生成一个充电令牌并将其提交给process_card.php.在那里,我可以获取令牌并执行以下操作:
if ($_POST) {
Stripe::setApiKey("sk_test_SECRET_KEY_FOR_TESTING");
try {
if (!isset($_POST['stripeToken']))
throw new Exception("The Stripe Token was not generated correctly");
Stripe_Charge::create(array("amount" => '1000'],
"currency" => "usd",
"card" => $_POST['stripeToken']));
}
catch (Exception $e) {
$error = $e->getMessage();
}
}
Run Code Online (Sandbox Code Playgroud)
在这里,我获取通过提交的令牌,并POST使用他们的API将其发送到条带.金额,货币和卡令牌是必填字段.您可以看到正在从POST数据中提取令牌,但我必须为该数量发送一个文字字符串.这一切都很好,花花公子,直到我有多个产品/服务,我有不同的形式,生成不同数量的令牌,并发送给我的process_card.php.那个文字字符串看起来不再幸福了.他愚蠢的假笑从他愚蠢的脸上消失了.
所以无论如何,我检查了所有POST数据,看看是否有任何提交的字段包含金额,所以我可以传递它.所以我只是做了一个循环来看看提交的内容:
foreach ($_POST as $key => $value) {
echo "key: " . $key . " - " . $value . "<br>";
}
Run Code Online (Sandbox Code Playgroud)
它给了我这个:
key: stripeToken - tok_youShouldDefinitelyPostThisTokenOnAPublicWebsite
key: stripeEmail - super.real.email@aol.com
key: stripeBillingName - asdf
key: stripeBillingAddressLine1 - asdf
key: stripeBillingAddressZip - 12345
key: stripeBillingAddressCity - Schenectady
key: stripeBillingAddressState - NY
key: stripeBillingAddressCountry - United States
key: stripeBillingAddressCountryCode - US
key: stripeShippingName - asdf
key: stripeShippingAddressLine1 - asdf
key: stripeShippingAddressZip - 12345
key: stripeShippingAddressCity - Schenectady
key: stripeShippingAddressState - NY
key: stripeShippingAddressCountry - United States
key: stripeShippingAddressCountryCode - US
Run Code Online (Sandbox Code Playgroud)
没有金额.哪里哪里.关闭API文档,看看我是否能找到解决方案.我能找到的最接近的Stripe_Charge::retrieve({CHARGE_ID});
是在这里找到的:https://stripe.com/docs/api/php#retrieve_charge.然而,这仅适用于成功处理的费用.
所以我被卡住了.无法弄清楚.我能想到的最好的解决方案是<input type="hidden" name="amt" value="1000" />在我提供的嵌入式表单中添加一行,这样我就可以通过它来获取金额$_POST['amt'].这个问题是我不知道它是否符合PCI标准.在条带网站/ api/docs上的许多地方,他们告诉你不要在表单中包含名称字段,这样你就不会在网站上的页面之间传递敏感信息,所以我认为"比抱歉更安全".有没有其他方法来处理这个或我不知道的最佳实践?
**对不起,这太久了.我尽可能多地努力尝试自己解决它,我想提供尽可能多的信息.
我没有看到任何关于PCI合规性的问题,只要将其价格放在表格中(只要您使用SSL).但是,这将允许他们在提交之前简单地编辑HTML输入,并使项目比您希望的更便宜.您可以通过使用带有products表的数据库并在隐藏的输入字段中引用产品ID来解决此问题.
| 归档时间: |
|
| 查看次数: |
3469 次 |
| 最近记录: |