2 回答

TA貢獻(xiàn)2065條經(jīng)驗(yàn) 獲得超14個(gè)贊
我正在開發(fā)一個(gè)應(yīng)用程序,允許會員使用 Stripe 預(yù)訂/支付課程費(fèi)用。但是,我發(fā)現(xiàn)很難更新應(yīng)用程序來表明用戶是否已付款成功。
目的是當(dāng)用戶付款時(shí),付款將分配給他們,并且他們能夠在其帳戶中獲取付款列表。下面是我的控制器中的代碼:
[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 文件中的內(nèi)容:
<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>
我不確定我是否從條帶中傳遞了正確的數(shù)據(jù)來將付款分配給特定用戶,然后他們可以繼續(xù)查看交易列表。
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貢獻(xiàn)1788條經(jīng)驗(yàn) 獲得超4個(gè)贊
理想情況下,您不應(yīng)依賴 Stripe 客戶和系統(tǒng)中的用戶之間的 1-1 關(guān)聯(lián)。除非您有固定的付款來源,否則不需要 Stripe 客戶。即使您這樣做,也不一定要求每個(gè)用戶都有一個(gè) Stripe 客戶。
這里更好的方法是記錄您端的費(fèi)用 ID,并將其與用戶相關(guān)聯(lián)。然后,您應(yīng)該有一個(gè)用于 Stripe 的 Webhook 端點(diǎn),以便在收費(fèi)完成時(shí)發(fā)出通知。當(dāng) webhook 被命中時(shí),您可以查找您這邊的付款/用戶及其關(guān)聯(lián)的費(fèi)用 ID,并相應(yīng)地更新任何內(nèi)容。
- 2 回答
- 0 關(guān)注
- 186 瀏覽
添加回答
舉報(bào)