- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我正在尝试通过自定义按钮使用 Stripe 的新结帐功能,通过 AJAX POST 将 token 发送到 php 文件,然后该文件将执行收费。不幸的是,我在从 POST 变量中检索 token 时遇到了一些问题。我希望这里有人可以告诉我我过于复杂的地方,以及是否有更简单的方法来做到这一点。
在客户端,我有 5 个带有不同可能“捐赠”的按钮。到目前为止,这是为此编写的 js(不包括 html):
$(function() {
var donationAmt = '';
var handler = StripeCheckout.configure({
key: 'pk_test_3plF76arhkygGMgwCEerThpa',
image: '/square-image.png',
token: function(token, args) {
// Use the token to create the charge with a server-side script.
// You can access the token ID with `token.id`
console.log(token)
var chargeData = {
donationAmt: donationAmt,
token: token
}
$.ajax({
url: '/link/to/php/stripeDonate.php',
type: 'post',
data: {chargeData: chargeData},
success: function(data) {
if (data == 'success') {
console.log("Card successfully charged!")
}
else {
console.log("Success Error!")
}
},
error: function(data) {
console.log("Ajax Error!");
console.log(data);
}
}); // end ajax call
}
});
$('.donate-button').bind('click', function(e) {
donationAmt = $(this).html().substring(1) + '00';
donationAmt = parseInt(donationAmt); // Grabs the donation amount in the html of the button and store it in a variable
// Open Checkout with further options
handler.open({
name: 'Company Name',
description: 'A donation',
amount: donationAmt
});
e.preventDefault();
});
});
这是我正在处理 AJAX POST 调用的 php:
<?php
require_once('Stripe.php');
// Set your secret key: remember to change this to your live secret key in production
// See your keys here https://manage.stripe.com/account
Stripe::setApiKey("sk_test_APIKEYREDACTED");
// Get the credit card details submitted by the form
$token = json_decode($_POST['chargeData']);
$tokenid = $token['id'];
// Create the charge on Stripe's servers - this will charge the user's card
try {
$charge = Stripe_Charge::create(array(
"amount" => 2000, // amount in cents, again
"currency" => "usd",
"card" => $tokenid,
"description" => "payinguser@example.com")
);
echo 'success';
} catch(Stripe_CardError $e) {
// The card has been declined
echo $tokenid;
}
?>
如 php 错误日志中所述,此代码的直接结果是无法“读取” token 的 POST 变量。 token 创建正常(我看到它登录在控制台上)但是当我通过 AJAX 发送它时它消失了。
每个人都说 Stripe 非常容易实现,所以我真的觉得我在这里遗漏了一些东西。有人能阐明一下吗?
谢谢!
最佳答案
因此,在小睡了 10 个小时并且头脑更加清醒之后,我决定以一种稍微不同的方式来解决这个问题。这是为遇到与我相同的问题的任何其他人准备的,希望能像 stripe/ajax/php 教程一样工作得很好。原来我一直在想 POST 数据都是错误的。即使使用 AJAX,您也需要键值对来发送任何类型的 POST 数据。我为此重新编码了我的 js 的这一部分:
var handler = StripeCheckout.configure({
key: 'PUBLISHABLEKEY',
image: '/square-image.png',
token: function(token, args) {
// Use the token to create the charge with a server-side script.
// You can access the token ID with `token.id`
console.log(token)
$.ajax({
url: 'link/to/php/stripeDonate.php',
type: 'post',
data: {tokenid: token.id, email: token.email, donationAmt: donationAmt},
success: function(data) {
if (data == 'success') {
console.log("Card successfully charged!");
}
else {
console.log("Success Error!");
}
},
error: function(data) {
console.log("Ajax Error!");
console.log(data);
}
}); // end ajax call
}
});
请注意,一个主要的变化是 ajax 方法的数据属性。记录 token 对象的控制台显示了整个 JSON token 对象,您可以使用它来提取 ID(您的服务器需要发送到 stripe 以收取费用的内容)以及电子邮件(用于您的日志记录目的)。由于我的捐赠金额是可变的,因此我也将其作为第三个 key 。
现在在你的 php 中,为了获取这些 POST 变量并将它们放入 php 变量中,你可以使用它们各自的键来获取它们:
$tokenid = $_POST['tokenid'];
$donation = $_POST['donationAmt'];
$email = $_POST['email'];
然后其他一切都应该是不言自明的(遵循与 stripe php 教程几乎完全相同的示例)。
无论如何,希望这对那里的人有所帮助。祝你好运!
关于javascript - 如何使用通过 AJAX 发送到 php 的结帐 token 创建 Stripe 收费,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22445078/
我可以在不使用收款人信用卡号的情况下将资金从我的 Stripe 账户发送到另一个 Stripe 账户吗?在我的网站中,我希望管理员将资金从他的帐户转移到用户的条纹帐户(而不是用户的银行帐户)。用户的
我曾经有 Angular Stripe Checkout 表单,我正在尝试将表单更新为新的 Stripe Card Elements这是最近推出的。 删除表单输入字段并将其替换为条纹卡片元素后,我的表
我的目标是为产品创建一个简单的支付页面。 在官方文档中,它说在服务器端需要生成 token 才能创建交易,使用: stripe.paymentIntents.create({ amount: re
我是 strip 的新手,打算使用 strip token /收费 api,但 strip 文档说 paymentIntent api 是新的方法。我可以使用任何人吗或 PaymentIntent 是
我正在开发一个项目,我们正在为 Node 使用 Stripe 库。我们还想在这个项目上使用 TypeScript。 我发现 Stripe 没有提供官方 TypeScript 定义,但我找到了一些社区定
通常在使用 stripe 时我可以创建产品并添加税率、运费。付款后我可以创建发票。我想在使用连接帐户时做同样的事情。在我的应用程序中,我希望用户创建商店,并且该商店的产品将保存到他们连接的 Strip
假设我们已经设置了一个 Stripe 订阅计划。即 30 美元/月。 (注意:账单/账户信息存储在 Stripe 上。) 假设我们想为客户提供提前购买一年服务的选项,如果他们这样做,他们只需支付 25
我们知道 Stripe 支持多张信用卡。一个是 default_card。关于这张 Stripe 多张卡片,我需要知道一些答案。 假设我想向我的客户收费,他的 Stripe 个人资料中有 3 张信用卡
有没有办法根据为特定客户生成的最后一张发票过滤发票结果? 穿过 Stripe documentation我可以看到有可能获得即将到来的发票,但我找不到获得最后生成的发票的方法。 最佳答案 如果您使用
我正在使用 Stripe 为客户订阅月度计划。中途客户可能会减少计划数量。所以,在即将开出的发票有时会是负数。 带有负金额的发票行是否意味着客户将这些金额退还到他们的卡中? 谢谢 最佳答案 是的,负发
我正在使用定期计划和电子邮件地址在 Stripe(使用测试模式)中创建客户。到目前为止,一切都按我的预期工作:当客户创建并注册到定期计划时,他们会自动在计划的第一期收费。我所拥有的几乎是逐字逐句wha
我正在尝试使用 Stripe checkout.js 订阅,然后使用 PHP 订阅客户。我的问题是获取他们的电子邮件地址。在文档中找不到任何有用的东西。 文档在这里:https://stripe.co
我在两部分付款过程中使用 Stripe。 IE。 使用 capture = false 对调用 Charge 对象的卡进行预授权 做一些数据库工作 使用电荷捕获为卡充电 如果第 2 步失败(即数据库工
我们使用 Stripe 作为支付网关,我们有一个年度计划,即该计划的计费周期为 1 年。 在计费周期内,用户可以更新选择更多席位,这将导致增加订阅计划的数量。 Subscription subscri
我正在使用 PHP Stripe Payment 表单来收款。付款似乎通过 OK 并在成功完成后将用户带到确认页面。我处于测试模式,能够看到显示在仪表板“付款”部分的付款。但是,当我单击仪表板的“主页
我正在构建一个市场应用程序。我正在使用 Stripe 接受买家付款并将百分比转移给卖家。但是,stripe 只能让您从 Stripe 余额中转移。因此,如果我接受需要 2 个工作日才能显示在我的 st
正如我们所知,Stripe 每张信用卡收费 2.9% + 30 美分。因此,对于每 1 美元的交易,Stripe 大约需要 33 美分。有没有办法批量处理多个 1 美元的交易(由同一客户)并完全收费?
我有一个关于 Stripe 的订阅计划,并将其用于按座位定价。 具体用例是: 客户之前已付款,因此数据库中的客户 ID 和订阅 ID 他们在一个月内删除了所有用户 下个月他们又添加了一个用户 我希望结
在Stripe API文档中,它们显示您可以在客户上应用优惠券。 cust = Stripe::Customer.retrieve("cus_asdasdad") cust.coupon = "COU
我在订阅中添加发票项目时遇到问题,目前无法正常工作。 我已经在 strip 上创建了一个发票项目,并且希望该发票项目包含在定期付款中 这是我的代码,它在第一个发票上添加了一个发票项目,但在下一个发票上
我是一名优秀的程序员,十分优秀!