亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

更新用戶以顯示他們已付款 - Stripe .Net Core

更新用戶以顯示他們已付款 - Stripe .Net Core

BIG陽 2024-01-22 15:56:30
我正在開發一個應用程序,允許會員使用 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));        }    }我不確定我是否從條帶中傳遞了正確的數據來將付款分配給特定用戶,然后他們可以繼續查看交易列表。
查看完整描述

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
);

希望這能說明問題!



查看完整回答
反對 回復 2024-01-22
?
尚方寶劍之說

TA貢獻1788條經驗 獲得超4個贊

理想情況下,您不應依賴 Stripe 客戶和系統中的用戶之間的 1-1 關聯。除非您有固定的付款來源,否則不需要 Stripe 客戶。即使您這樣做,也不一定要求每個用戶都有一個 Stripe 客戶。

這里更好的方法是記錄您端的費用 ID,并將與用戶相關聯。然后,您應該有一個用于 Stripe 的 Webhook 端點,以便在收費完成時發出通知。當 webhook 被命中時,您可以查找您這邊的付款/用戶及其關聯的費用 ID,并相應地更新任何內容。


查看完整回答
反對 回復 2024-01-22
  • 2 回答
  • 0 關注
  • 193 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號