在 VB.net 中使用 stripe.net

Using stripe.net in VB.net

我有一个较旧的应用程序,它是 Visual Studio 2013 使用 VB.net、框架 4.5

编写的

我必须更新 stripe.net NuGet 包,API 必须不同。我曾经使用以下脚本对卡(由用户在一个简单的表格中填充)收费:

Dim myCharge = New StripeChargeCreateOptions()

myCharge.Amount = lblPrice.Text * 100  'put into cents for Stripe
myCharge.Currency = "usd"

myCharge.Description = "sample test charge"

myCharge.CardNumber = txtCardNumber.Text
myCharge.CardExpirationYear = txtExpiresYear.Text
myCharge.CardExpirationMonth = txtExpiresMonth.Text

myCharge.CardCvc = txtCVC.Text

myCharge.Capture = True

Dim chargeService = New StripeChargeService
Dim StripeCharge = New StripeCharge
StripeCharge = chargeService.Create(myCharge)

它不再有效,因为我认为逻辑改变了!

我似乎无法弄清楚如何使用该软件包从卡中收取一定的金额。

包裹详情为:

Created by: Stripe, Jayme Davis

Id: Stripe.net

Version: 13.1.0

Dependency: Newtonsoft.Json (>= 9.0.1)

我想我需要像这样创建一个收费对象:

Dim charge = New StripeCharge
charge.Amount = lblPrice.Text
charge.Description = "test"
charge.Currency = "USD"

StripeCharge 对象中不再有信用卡号或卡详细信息的选项。我似乎无法理解为了收取简单交易费用我需要做的逻辑。

在 VB.net 中有人对此有任何经验吗?

在我开始编写基于评论的代码后添加了以下内容:

根据建议,我 "think" 我需要创建一个卡片令牌,然后将其分配给收费选项。这是我目前正在做的事情:

        Dim tokenOptions = New StripeTokenCreateOptions
        tokenOptions.Card.Number = txtCardNumber.Text
        tokenOptions.Card.ExpirationMonth = txtExpiresMonth.Text
        tokenOptions.Card.ExpirationYear = txtExpiresYear.Text
        tokenOptions.Card.Cvc = txtCVC.Text

        Dim tokenService = New StripeTokenService
        Dim token = tokenService.Create(tokenOptions)

        Dim charge = New StripeCharge
        charge.Amount = lblPrice.Text
        charge.Description = "test"
        charge.Currency = "USD"
        charge.Source.Card.Id = token.Id

        Dim chargeService = New StripeChargeService
        Dim StripeCharge = chargeService.Create(charge)

我希望我能用我的代码正确创建令牌。我遇到的下一个问题(如果令牌是正确的)是 chargeService.Create(charge) 是错误的。我收到以下 'charge' 部分的消息:

'Stripe.StripeCharge' 类型的值无法转换为 'Stripe.StripeChargeCreateOptions'

所以,如果我改变

Dim charge = New StripeCharge 

Dim charge = New StripeChargeCreateOptions

... 然后突然之间.Amount、.Description、.Currency、.Source.Card.Id 不再是该对象的元素。

我(在朋友的帮助下)解决了这个问题,希望它能对其他人有所帮助。

我需要使用 API 在客户端创建信用卡令牌。从那里我将生成的令牌 ID 附加到收费选项,然后对卡收费!

这是有效的代码:

        Stripe.StripeConfiguration.SetApiKey("sk_test_your_key_here")

        Dim tokenOptions = New Stripe.StripeTokenCreateOptions()
        tokenOptions.Card = New Stripe.StripeCreditCardOptions()

        tokenOptions.Card.Number = txtCardNumber.Text
        tokenOptions.Card.ExpirationMonth = Convert.ToInt32(txtExpiresMonth.Text)
        tokenOptions.Card.ExpirationYear = Convert.ToInt32(txtExpiresYear.Text)
        tokenOptions.Card.Cvc = txtCVC.Text

        Dim tokenService = New Stripe.StripeTokenService()
        Dim token = tokenService.Create(tokenOptions)

        Dim charge = New Stripe.StripeChargeCreateOptions()
        charge.Amount = Convert.ToInt32(lblPrice.Text) * 100
        charge.Description = "test"
        charge.Currency = "USD"
        charge.SourceTokenOrExistingSourceId = token.Id

        Dim chargeService = New Stripe.StripeChargeService
        Dim StripeCharge = chargeService.Create(charge)

谢谢大家的评论。我很高兴将此搁置。

感谢您的宝贵意见,对我帮助很大。我为此花了 3 天时间,但仍然无法正常工作。第4天,它起作用了。 除了你发现的这个很棒的代码之外,我还必须做一些额外的工作。 我将以下 2 个 dll 文件添加到远程服务器上的 Bin 文件夹中。 C:\github\mywebsite\packages\Stripe.net.17.3.1\lib\net45\Stripe.net.dll 和 C:\github\mywebsite\packages\Newtonsoft.Json.9.0.1\lib\net45\Newtonsoft.Json.dll

这 2 个文件(Stripe.net.dll 和 Newtonsoft.Json.dll 没有路径名)应该在本地站点的 Bin 文件夹中。只需将它们复制到远程服务器上的 Bin 文件夹即可。这对我有用。希望它能帮助别人。我不得不使用 "Tools" 下 visual studio 的 NuGet 将 Stripe 更新到 17.3.1 并将 Json 更新到 9.0.1。谢谢

'Stripe.StripeConfiguration.SetApiKey("sk_test_C........SqQM555EezmpE....") 测试 api 键 Stripe.StripeConfiguration.SetApiKey("sk_live_....24V777ack7m......") 直播 api 关键

    Dim tokenOptions As New Stripe.StripeTokenCreateOptions()
    tokenOptions.Card = New Stripe.StripeCreditCardOptions()
    tokenOptions.Card.Number = TextBox2.Text
    tokenOptions.Card.Name = TextBox3.Text
    tokenOptions.Card.ExpirationMonth = TextBox4.Text
    tokenOptions.Card.ExpirationYear = TextBox5.Text
    tokenOptions.Card.Cvc = TextBox6.Text

    Try
        Dim tokenService As New Stripe.StripeTokenService()
        Dim token = tokenService.Create(tokenOptions)
        Dim charge As New Stripe.StripeChargeCreateOptions()
        charge.Amount = 200         ' .00
        charge.Description = "live"
        charge.Currency = "USD"
        charge.SourceTokenOrExistingSourceId = token.Id
        Dim chargeService As New Stripe.StripeChargeService
        Dim StripeCharge = chargeService.Create(charge)

        'Dim StripePublishableKey As String = "pk_test_....vtfVe666xwLpjuy....."        'test key
        Dim StripePublishableKey As String = "pk_live_.....yntM7888f09iuj7....."         'live key

    Catch ex As Exception
        ' Response.Write(ex)
        warning.Visible = True
        warning.Focus()
        warning.Text = "Error  - Credit or Debit card failed  -  Error"
        Exit Sub
    End Try