【发布时间】:2018-08-05 05:32:54
【问题描述】:
我有一个使用 VB.net 框架 4.5 使用 Visual Studio 2013 编写的旧应用程序
我必须更新 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)
它不再起作用,因为我认为逻辑改变了!
我似乎不知道如何使用该套餐从卡中收取一定的费用。
包裹详情如下:
创建者:Stripe, Jayme Davis
ID:Stripe.net
版本:13.1.0
依赖:Newtonsoft.Json (>= 9.0.1)
我想我需要像这样创建一个收费对象:
Dim charge = New StripeCharge
charge.Amount = lblPrice.Text
charge.Description = "test"
charge.Currency = "USD"
StripeCharge 对象中不再有信用卡号或卡详细信息的选项。我似乎无法理解收取简单交易费用所需执行的逻辑。
有人在 VB.net 中有这方面的经验吗?
以下是我根据评论开始处理代码后添加的:
根据一个建议,我“认为”我需要创建一个卡片令牌,然后将其分配给收费选项。以下是我目前正在做的事情:
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) 是错误的。对于其中的“收费”部分,我收到以下消息:
“Stripe.StripeCharge”类型的值无法转换为“Stripe.StripeChargeCreateOptions”
所以,如果我改变了
Dim charge = New StripeCharge
到
Dim charge = New StripeChargeCreateOptions
...然后突然之间.Amount、.Description、.Currency、.Source.Card.Id 不再是该对象的元素。
【问题讨论】:
-
当您查看 Stripe 仪表板日志时,您是否看到请求和相关错误?我很好奇您发送的内容是否到达 Stripe!此外,出于 PCI 合规性原因,您通常希望使用令牌而不是原始卡详细信息,我认为这可能是这里的问题。 stripe.com/docs/api/dotnet#create_charge
-
嗨鸭。我无法使用我最初拥有的代码构建项目,因此无法使用新 API 发送任何内容。在 VB.net 中,myCharge 似乎没有我可以使用的任何对象元素。所以我想我需要重新创建整个过程。正如您所指出的,我一直在阅读文档,但我认为它们是用 C# 编写的,而且我在理解如何将其转换为 VB.net 时遇到了问题。所以,我需要先根据用户输入的卡信息创建一个令牌,对吗?那么我需要将令牌附加到费用中,对吗?
-
我根据首先为卡创建令牌的新逻辑,在原始问题中添加了一些新代码。可能是在做某事?希望我越来越接近解决这个问题。
标签: vb.net stripe-payments nuget-package stripe.net