我无法弄清楚这一点.我检查了有关设置数据属性的其他问题,似乎是一件非常棘手的事情.
条纹按钮数量纯粹是为了美观,我每次用户更新数量选择框时都试图设置它('数据量').
每次我更改数量时选择一个警报给出正确的数量,如果我检查dom,'data-amount'属性似乎设置正确,但当我点击条纹按钮时,模态显示默认数据量,即没有.
有人知道怎么做吗?
视图(表单,选择输入未显示)
<div class="stripe-controls" align="center">
<script src="https://button.stripe.com/v1/button.js" class="stripe-button"
data-key="ENV['STRIPE_PUBLIC_KEY'] %>" data-amount="">
</script>
</div>
Run Code Online (Sandbox Code Playgroud)
CoffeeScript的
$ ->
$('#order_quantity').click(orderTotal)
orderTotal()
orderTotal = ->
quantity = $('#order_quantity').val()
price = $('#ticket-price').data('url')
total = quantity * price
$('.stripe-button').attr('data-amount', total)
alert total
Run Code Online (Sandbox Code Playgroud) 我看到的问题是,当您使用规范的"自定义"指南将Stripe Checkout加载到页面中,对其进行配置,然后打开和关闭它几次,浏览器内存使用量会不断跳跃.有时,sorta会稍微释放,但残留总是会增长.在一个长期存在的页面/ SPA上,最终会有东西爬行.
--enable-precise-memory-info标记启动Google Chrome (无论是否带有此标记,都会出现问题)stripeInstance.open(cfg)),摆弄弹出窗口,关闭.您可以使用memory-stats.js或仅在(Chrome)控制台中运行来观看内存:
performance.memory.usedJSHeapSize
Run Code Online (Sandbox Code Playgroud)
我确信这必须是"我"而不是条纹.他们不会泄漏如此糟糕的事件open和close事件吗?
编辑:这是一个JS小提琴,它可以复制他们的演示代码:https://jsfiddle.net/p1Lfuewt/
还有一个5秒间隔的内存屏幕截图,基本上只需点击"购买"即可打开和关闭它们的小部件(不知道那个承诺错误是什么,就是这些):
我已经将 Stripe 支付集成到我的一个网站中,并且一切正常(我正在为这个网站使用一个独特的 webhook)。
我刚刚通过我的另一个网站创建了一个完全不同的服务,并且正在将 Stripe 集成到该网站上。
但是我有一个问题,据我所知,我必须对我的两个服务使用相同的 webhook。这行不通!!我真的需要为每个服务使用单独的网络钩子……这可能吗?
PS:我在 Stripe 的文档中读到每个事件都将发送到列表中的每个 webhook ( https://dashboard.stripe.com/account/webhooks )。
请有人照亮!
我想在 Jest 中模拟节点 Stripe SDK,因为我不想从 Stripe 运行模拟 API 服务器,但我不知道如何去做。我正在创建一个__mocks__目录并添加,stripe.js但我无法导出任何可用的内容。
我通常TypeError: Cannot read property 'create' of undefined在调用strypegw.charges.create(). 我正在使用 ES6 模块语法,所以我import stripe from 'stripe'.
我是离子框架的新手,并试图在我的应用程序中集成条纹。我做了一些研究,发现只有这个https://ionicframework.com/docs/native/stripe。它解释得不够好。我如何在 .html 文件上实现这个概念,比如为用户提供一个按钮来触发付款?
我也试过这个https://fireship.io/lessons/stripe-elements-angular/但一路上迷路了。
import { Component, OnInit, Input, HostListener } from '@angular/core';
// import { Stripe } from '@ionic-native/stripe/ngx';
import { AuthService } from '../services/auth.service';
import { FirebaseService } from '../services/firebase.service';
import { AngularFireFunctions } from '@angular/fire/functions';
import { Router } from '@angular/router';
import { Observable, of } from 'rxjs';
declare var Stripe;
@Component({
selector: 'app-rentals',
templateUrl: './rentals.page.html',
styleUrls: ['./rentals.page.scss'],
})
export class RentalsPage implements OnInit {
user$: Observable<User>;
constructor(
private router: Router,
// …Run Code Online (Sandbox Code Playgroud) 我正在使用 Stripe 实现 Subscription*(已准备好 SCA)。我尝试处理https://stripe.com/docs/billing/subscriptions/payment#handling-action-required。在 Stripe 端创建订阅后,我得到了上面文档中的答案:
{
"id": "sub_XXXXXXXXXXXXXXXXXXX",
"object": "subscription",
"status": "incomplete",
...
"latest_invoice": {
...
"payment_intent": {
"status": "requires_action",
...
"next_action": {
"type": "use_stripe_sdk",
...
},
...
}
}
}
Run Code Online (Sandbox Code Playgroud)
根据文档https://stripe.com/docs/api/payment_intents/object#payment_intent_object-next_action-type
next_action.type可以有两个值redirect_to_url和use_stripe_sdk
所以我的问题是如何获取next_action.type = redirect_to_url(而不是use_stripe_sdk)以及如何强制填充条纹next_action.redirect_to_url(因为我想在我的 UI 中自己处理它)?
* SO 上已经有一个类似的问题:https : //stackoverflow.com/questions/56490033/how-to-handle-use-stripe-sdk-through-php 但我的情况是创建我没有的订阅控制 PaymentIntent
我想创建一个 Stripe PaymentIntent,直接向关联账户收费
这是我写的
stripe.paymentIntents.create(
{
amount: 2000,
currency: 'gbp',
payment_method: 'pm_xxxx',
}, {
stripe_account: 'acct_1F2xxxxxxxxxx'
},
function(err, paymentIntent) {
// asynchronously called
// do something here
}
);
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么??
以下代码(没有连接的帐户)工作正常
stripe.paymentIntents.create(
{
amount: 2000,
currency: 'gbp',
payment_method: 'pm_xxxx',
},
function(err, paymentIntent) {
// asynchronously called
// do something here
}
);
Run Code Online (Sandbox Code Playgroud)
我怀疑这是罪魁祸首,因为控制台错误说明了 PaymentMethod ....
编辑:代码是正确的,我发现问题出在 Stripe 上,因为它们需要某种进一步的身份验证。来自条纹文档
如果您选择直接收费,则需要确保已连接的帐户已启用您打算使用的付款方式。直接收费需要在连接的帐户上创建 PaymentMethods....
如果您从服务器创建 PaymentMethods,您可以使用 Stripe-Account 标头和我们支持的任何库来进行身份验证。
我会努力,看看怎么做
我正在使用 Stripe SDK 创建客户并使用 API 向客户收费,但出现“致命错误:未捕获(状态 400)(请求 req_ZyqUtykjUcOqrU)”的错误。根据印度法规,出口交易需要客户姓名和地址。更多此处的信息:https : //stripe.com/docs/india-exports 在第 38 行的 /opt/lampp/htdocs/stripe/lib/Exception/ApiErrorException.php 中抛出“
我的代码如下:
\Stripe\Stripe::setApiKey(STRIPE_API_KEY);
$customer = \Stripe\Customer::create(array(
'name' => 'test',
'description' => 'test description',
'email' => $email,
'source' => $token
));
$orderID = strtoupper(str_replace('.','',uniqid('', true)));
$charge = \Stripe\Charge::create(array(
'customer' => $customer->id,
//'source' => 'rtest',
'amount' => $itemPrice,
'currency' => $currency,
'description' => $itemName,
'metadata' => array(
'order_id' => $orderID
)
));
Run Code Online (Sandbox Code Playgroud) 客户付款是否有超时,可以更改吗?
让我解释一下我的情况:
我必须在 PHP 预订平台上添加付款。
为确保一个时段不会被多次预约,当用户点击预约按钮时,平台会阻止预约20分钟。如果在此时间之后他还没有完成他的信息填写,他必须重新开始,或者如果他没有完成,则保留被释放。
我应该能够确保付款最长为 5 分钟。这样,我在预订开始后最多 15 分钟后开始付款。
这是我发现不修改整个代码的最简单方法。不幸的是,我在 API 中找不到这个选项。
否则,如果我在付款过程之前永久阻止预订,如果用户没有通过关闭浏览器完成交易,我将无法取消阻止它。
我有点困惑。我在我的用户(实际上是“客户”)模型上有一个简单的方法来返回用户的订阅续订日期:
public function subscriptionRenewalDate() : string
{
$subscription = $this->subscriptions()->active()->first()->asStripeSubscription();
return Carbon::createFromTimeStamp($subscription->current_period_end)->format('F jS, Y');
}
Run Code Online (Sandbox Code Playgroud)
我从刀片模板 ( {{ auth()->user()->subscriptionRenewalDate() }})对经过身份验证的用户调用此方法,它在本地工作正常,但是一旦我将其上传到远程登台服务器,它就会失败并显示错误:
无法声明类 App\Models\Customer,因为该名称已被使用
它指向 Customer 模型中的这一行:
class Customer extends Authenticatable
{
Run Code Online (Sandbox Code Playgroud)
奇怪的是,它不仅仅是远程登台服务器,它也是 Travis CI 失败的地方(运行 PHPUnit 测试时——这些相同的测试在本地工作正常)。
显然,这似乎是某种缓存或配置问题,但我无法理解是什么导致了此错误。
它与数据库无关,因为测试使用RefreshDatabase. 如果我删除 ENV 变量 ( CASHIER_MODEL: App\Models\Customer),它会因预期的“找不到模型用户”错误而失败,因此它正确获取了 ENV 变量。我尝试清除我的 Laravel 缓存 ( php artisan optimize:clear) 和composer dump-autoload. 这很令人困惑。
我所知道的是该错误是由asStripeSubscription(). 如果我从方法中删除它,刀片模板加载正常(一切正常)。
需要明确的是,我可以成功(这是本地、远程和 Travis CI):
stripe-payments ×10
php ×3
javascript ×2
node.js ×2
angular7 ×1
coffeescript ×1
ionic4 ×1
jestjs ×1
jquery ×1
laravel ×1
memory-leaks ×1
webhooks ×1