2 回答

TA貢獻2065條經驗 獲得超14個贊
我正在開發一個應用程序,允許會員使用 Stripe 預訂/支付課程費用。但是,我發現很難更新應用程序來表明用戶是否已付款成功。
目的是當用戶付款時,付款將分配給他們,并且他們能夠在其帳戶中獲取付款列表。下面是我的控制器中的代碼:
[HttpPost]
public IActionResult PaymentSuccess(Event obj, int memberId, int eventId)
{
// add member to event attendees? if so just call BookEvent above
var eventBook = BookEvent(memberId, eventId);
var result = new { eventBook }; //service.UpdateEventAfterPayment(obj);
return Json(result);
}
public IActionResult Charge(string stripeEmail, string stripeToken, Event obj)
{
//var json = await new StreamReader(HttpContext.Request.Body).ReadToEndAsync();
var customers = new Stripe.CustomerService();
var charges = new Stripe.ChargeService();
var customer = customers.Create(new Stripe.CustomerCreateOptions
{
Email = stripeEmail,
Source = stripeToken
}) ;
var charge = charges.Create(new Stripe.ChargeCreateOptions
{
Amount = 300,
Description = "Class Payment",
Currency="gbp",
Customer= customer.Id,
ReceiptEmail= stripeEmail,
Metadata = new Dictionary<string, string>()
{
{"OrderId", "123" },
{"PostCode", "BT480GY" }
}
});
if(charge.Status == "succeeded")
{
string BalanceTransactionId = charge.BalanceTransactionId;
var email = User.FindFirst("sub")?.Value;
var customerPaid = charge.Paid;
customerPaid = true;
return RedirectToAction(nameof(Index));
}
return RedirectToAction(nameof(Index));
}
}
以下是我的 chtml 文件中的內容:
<div id="eventBook" class="text-center">
<form asp-action="Charge" asp-controller="Timetable" method="post">
<article>
<label>Amount: £3.00</label>
</article>
<script src="//checkout.stripe.com/v2/checkout.js"
class="stripe-button"
data-key="@Stripe.Value.PublishableKey"
data.locale="auto"
data-description="Class Charge">
</script>
</form>
</div>
我不確定我是否從條帶中傳遞了正確的數據來將付款分配給特定用戶,然后他們可以繼續查看交易列表。
var customerID = "cus_1234xxx..."; // Retrieved from session or DBvar options = new ChargeListOptions { Limit = 3, Customer = customerID };var service = new ChargeService(); StripeList<Charge> charges = service.List( options );
希望這能說明問題!

TA貢獻1788條經驗 獲得超4個贊
理想情況下,您不應依賴 Stripe 客戶和系統中的用戶之間的 1-1 關聯。除非您有固定的付款來源,否則不需要 Stripe 客戶。即使您這樣做,也不一定要求每個用戶都有一個 Stripe 客戶。
這里更好的方法是記錄您端的費用 ID,并將其與用戶相關聯。然后,您應該有一個用于 Stripe 的 Webhook 端點,以便在收費完成時發出通知。當 webhook 被命中時,您可以查找您這邊的付款/用戶及其關聯的費用 ID,并相應地更新任何內容。
- 2 回答
- 0 關注
- 193 瀏覽
添加回答
舉報