标签: stripe-payments

条带卡验证在开发与生产中表现不同

我对Stripe有一个奇怪的问题(在Rails上,但Rails部分可能无关紧要).

当我在生产中使用语法上有效但非工作的卡号填写我的注册表单时(例如4242424242424242),当我尝试创建令牌时,我收到此响应:

sjsonp1389885476573({
  "error": {
    "message": "Your card was declined.",
    "type": "card_error",
    "code": "card_declined"
  }
}
, 402)
Run Code Online (Sandbox Code Playgroud)

开发中我使用"始终返回card_declined"卡号(4000000000000002),Stripe将其视为非常好:

sjsonp1389885473743({
  "id": "tok_3JvncLYlEZ5NMF",
  "livemode": false,
  "created": 1389885584,
  "used": false,
  "object": "token",
  "type": "card",
  "card": {
    "id": "card_3Jvnr4MtIxzzd5",
    "object": "card",
    "last4": "0002",
    "type": "Visa",
    "exp_month": 2,
    "exp_year": 2020,
    "fingerprint": "dWQBpXrSXnyqoOxe",
    "customer": null,
    "country": "US",
    "name": null,
    "address_line1": null,
    "address_line2": null,
    "address_city": null,
    "address_state": null,
    "address_zip": null,
    "address_country": null,
    "address_line1_check": null,
    "address_zip_check": null,
    "cvc_check": null
  }
} …
Run Code Online (Sandbox Code Playgroud)

credit-card stripe-payments

10
推荐指数
1
解决办法
2379
查看次数

成功支付条纹后,获取最后4位数的信用卡

我有以下代码使用Stripe处理用户信用卡上的费用.

// Create the charge on Stripe's servers - this will charge the user's card
    try {
        $charge = Stripe_Charge::create(array(
          "amount" => $grandTotal, // amount in cents, again
          "currency" => "usd",
          "card" => $token,
          "description" => "Candy Kingdom Order")
        );
    } catch(Stripe_CardError $e) {
      // The card has been declined
    }
Run Code Online (Sandbox Code Playgroud)

现在我希望能够显示订单确认页面上使用的卡的最后4位数字.但我想以一种不存储完整卡号的方式来做.只是最后的4.我不知道如何检索这些信息,如果它甚至可能的话.请帮忙吗?

php stripe-payments

10
推荐指数
1
解决办法
6534
查看次数

实现Stripe后端 - 在本地存储数据还是依赖API调用的最佳实践?

完全是服务器端编程的新手,我想知道有关从Stripe Payments等服务收集信息的最佳实践.

对于某些情况 - 条形客户可以拥有多张支付卡,其中一张被视为默认支付卡.

现在假设客户端点击我的服务器并希望客户XX的默认支付卡.我的问题是:我应该维护自己的条带数据库信息,还是应该直接将该请求转发到条带?

一方面,在本地存储该信息意味着我不必依赖第二个网络请求来收集该信息 - 我可以直接发回我数据库中的内容.

另一方面,在本地存储该信息意味着我需要维护更多的代码,现在我不得不担心它会反映条带上的真实数据.这个问题是可以解决的,但这样做的成本是否超过额外API调用的负面影响?

有什么想法吗?我很想听到一些意见,因为这对我来说很新鲜:)

谢谢!

rest stripe-payments

10
推荐指数
1
解决办法
2222
查看次数

条纹 - 定期付款中包含的附加发票项目

我在订阅时添加发票项目时遇到问题,目前正在敲打我的头.

我在条纹上创建了一个发票项目,我希望发票项目包含在定期付款中

这是我的代码,它在第一张发票上添加了发票项目,但在下一张发票上没有.

$new_customer = Stripe_Customer::create(array(
    'card' => $card,
    'email' => $email,)
);
Stripe_InvoiceItem::create(array(
    'customer' => $new_customer['id'],
    'amount' => $additiona_charges,
    'currency' => 'gbp',
    'description' => 'Addtional Cities'
));
$new_customer->updateSubscription(array('plan' => $selected_plan, 'prorate' => true));
Run Code Online (Sandbox Code Playgroud)

在我目前的设置.我根据订阅时的客户选择收取额外的自定义费用,这样我需要在定期付款时添加额外费用.

它是这样的

计划

1 Cookie - 99GBP  / Per month
2 Cookies - 199GBP / Per month
3 Cookies - 300GBP / Per month
Run Code Online (Sandbox Code Playgroud)

附加费用 - 发票项目

-With Candle - +20GBP // must be included on recurring payment.
-With Icecream - +26GBP // must be included …
Run Code Online (Sandbox Code Playgroud)

webhooks stripe-payments

10
推荐指数
1
解决办法
5142
查看次数

如何使用通过AJAX发送到php的结账标记创建条带费用

我正在尝试使用Stripe的新结帐功能和自定义按钮,通过AJAX POST将令牌发送到php文件,然后执行收费.不幸的是,我在从POST变量中检索令牌时遇到了一些麻烦.我希望这里的某个人能告诉我我过度复杂的事情,以及是否有更简单的方法可以做到这一点.

在客户端,我有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) …
Run Code Online (Sandbox Code Playgroud)

javascript php ajax jquery stripe-payments

10
推荐指数
1
解决办法
1万
查看次数

使用条带API从条带令牌获取费用金额

目标:我有一个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)

html javascript php stripe-payments

10
推荐指数
1
解决办法
3469
查看次数

如何在测试环境中删除Stripe上的日志

我正在使用Stripe从CodeIgniter应用程序对假定的客户执行一些测试事务.出于某种原因,要在线重新创建具有相同旧ID和名称的Stripe> Plan,或者 通过API 将Stripe客户重新输入Stripe> Customers,我必须清除测试数据.当我清除测试数据时,它会清除除日志之外的测试数据.

现在当我重新创建Stripe> Plan时会发生什么,它会自动从日志中获取已删除的客户.由于我可能已更改其凭据,因此我不需要计划中的旧客户.

那么如何在测试环境中删除/清除条带上的日志?

stripe-payments

10
推荐指数
6
解决办法
4362
查看次数

如何在React组件中添加Stripe.js脚本

我想使用Stripe作为支付提供商创建付款表单.

Stripe.js参考中,使用jQuery(包括页面中的外部脚本)描述了创建表单组件的过程.如何将它包含在我的React组件中?什么是最好的方法?到目前为止,我有以下内容:

import React, { Component } from 'react';

class PaymentForm extends Component {
 constructor(props) {
  super(props);
 }

 componentDidMount() {
   Stripe.setPublishableKey('THE-PUBLIC-KEY');
 }

 handleSubmit(e) {
   e.preventDefault();
   Stripe.card.createToken(e.currentTarget, (status, response) => {
    console.log( status, response );
   });
 }

 render() {
   //THE PAYMENT FORM
 }
}
Run Code Online (Sandbox Code Playgroud)

注1:我不想使用ReactScriptLoader,因为它没有主动更新.

注2:还看到危险的SetInnerHTML解决方案,我不认为这是一个好习惯.

stripe-payments reactjs

10
推荐指数
1
解决办法
5327
查看次数

条纹结帐PAY按钮更改文本

如何将条带检出模式框中的文本从PAY更改为其他内容.

我知道我可以在弹出模态的按钮上做自定义文本.

description: 'ADD CARD',
label:'ADD CARD',
Run Code Online (Sandbox Code Playgroud)

但在实际的模态窗口.它仍然只是按下PAY.我想要它说ADD CARD.

javascript stripe-payments

10
推荐指数
2
解决办法
1万
查看次数

条纹:必须提供来源或客户

我正在尝试将Stripe集成到我的购物车项目中.我无法提交结帐表单.我不断收到此错误消息:"必须提供来源或客户." 要么我没有正确设置我的Stripe帐户,要么我在我的javascript中缺少一些参数.我花了好几个小时才解决这个问题,但仍然无法理解.

这是来自Stripe的日志:
Parsed Request POST Body

{
  "amount": "21000",
  "currency": "usd",
  "description": "Test Charge"
}
Run Code Online (Sandbox Code Playgroud)

响应机构

{
  "error": {
    "type": "invalid_request_error",
    "message": "Must provide source or customer."
  }
} 
Run Code Online (Sandbox Code Playgroud)

这是我的app.js.

var express = require('express');
var path = require('path');
var favicon = require('serve-favicon');
var logger = require('morgan');
var cookieParser = require('cookie-parser');
var bodyParser = require('body-parser');
var expressHbs = require('express-handlebars');
var mongoose = require('mongoose');
var session = require('express-session');
var passport = require('passport');
var flash = require('connect-flash');
var validator = require('express-validator');
var …
Run Code Online (Sandbox Code Playgroud)

javascript mongodb node.js stripe-payments

10
推荐指数
2
解决办法
1万
查看次数