条纹:获取信用卡的最后4位数字

时间:2018-11-02 02:41:25

标签: stripe-payments

我已经将Stripe.net升级到了最新版本20.3.0,现在我似乎找不到信用卡的.Last4。我有以下方法:

    public void CreateLocalCustomer(Stripe.Customer stipeCustomer)
    {
        var newCustomer = new Data.Models.Customer
        {
            Email = stipeCustomer.Email,
            StripeCustomerId = stipeCustomer.Id,
            CardLast4 = stipeCustomer.Sources.Data[0].Card.Last4
        };

        _dbService.Add(newCustomer);

        _dbService.Save();
    }

但是现在stipeCustomer.Sources.Data[0].Card.Last4'IPaymentSource' does not contain a definition for 'Card'。有人知道我现在如何获得卡的详细信息吗?流程是,我通过将Stripe令牌传递给Stripe来创建客户,然后得到上面的stripeCustomer。因此,我希望它位于该对象的某个位置。但是我找不到。可以在here中找到发行说明。 谢谢。

3 个答案:

答案 0 :(得分:4)

在Stripe的旧世界中,您过去只能将一种付款方式附加给客户;具体来说,Card-objects。您可以通过使用Card-objectStripe.js/v2先创建Create Token API Endpoint来创建Token-object,然后创建Customer-object然后 Create Card API Endpoint指向Source-objects的令牌。

尽管Stripe扩展为支持许多其他付款方式,但Stripe支持新的对象类型,该对象类型封装了称为Source-object的许多付款方式(包括信用卡)。通过使用Stripe.js/v3Create Source API Endpoint创建Customer-object。除了它们保留其对象类型之外,还可以通过与上述Card-objects几乎相同的方式将其附加到Attach Source API Endpoint。他们仍然是Source。您使用Create Card API Endpoint进行此操作(这与上述Card-object完全相同)。

我要说的是,现在有两种不同的对象类型(或更多),您可以期望它们在sources数组(或.NET中的Sources)中返回。尽管所有这些方法都是从IPaymentSource接口继承的。因此,如果您知道返回了Card-class,则只需将返回的对象强制转换为https://github.com/stripe/stripe-dotnet/blob/master/src/Stripe.net/Entities/Cards/Card.cs#L7

类似的事情应该可以帮助您:

CardLast4 = ((Card) stipeCustomer.Sources.Data[0]).Last4

通过查看Card类文件中的这一行,您可以了解继承的含义:

https://www.db-fiddle.com/f/u3JHfUJAZMuRWsudyLpUaS/0

祝你好运!

答案 1 :(得分:1)

Stripe.net.21.4.1开始,这是有效的方法:

var chargeService = new ChargeService();
var charge = chargeService.Get(id);    
CardLast4 = ((Card)charge.Source).Last4;

由于Stripe进行的所有微更改,在代码中断时不惊慌变得越来越困难。

答案 2 :(得分:0)

因此,在调试之后,似乎需要将Data [0]强制转换为Card才能获得Card。 因此它将是CardLast4 = ((Card)stipeCustomer.Sources.Data[0]).Last4