一、由於文檔丟失原因,我就直接上代碼了。
這個Stripe支付可以支持多個幣種,我下面就采用"HDK"來參照支付先上一個支付效果圖
本文用到的框架是Stripe.net 22.8.0 我嘗試了下升級NUGET,但是后台的C#代碼的方法就更新掉了,所以我采用的這個版本。
提示:先上代碼,在說明博主自己理解的流程。
一、前端代碼如下:請求的是ashx后台一般處理程序(C# asp.net)
myStripe.pay({ title: 'Soonnet Web Site', currency: 'HKD', amount: <%= Money.Text %> * 100,//這里為什么要 * 100 呢 因為這個錢默認他們打了1折扣,具體忘記為什么了,好像只有港幣這樣。 callback: function (p) { var dt = { TokenID: this.tokenId, //這個是必須的,下面的四個參數根據自身業務確認 //Amount:6300, Email: this.email, "MasterGroupType": getQueryString("GT"), "Mmail": getQueryString("E"), "RunId": getQueryString("R") } $.ajax({ url: "/ReasontoRun/Running.ashx?method=paypal&PayType=1",//支付類型 method: "post", data: dt, async: false, success: function (data) { if (data.success) { location.href = "/ReasontoRun/success.html?W=IsSUC"; } else { layer.msg(data.msg); } }, error: function () { } }) } });
var myStripe = { testKey: '<%=ConfigurationManager.AppSettings["pk_liveConfig"] %>', <!--配置文件中的key 這個從Stripe中取,我就不截圖展示了--> logoImg: "https://stripe.com/img/documentation/checkout/marketplace.png", <!--抬頭的Logo--> //換卡 changeHandler: function (f) { return StripeButton.configure({ key: this.testKey, image: f.logoImg || this.logoImg, name: f.title || 'Update Card Detail', panelLabel: f.button || 'Submit', allowRememberMe: false, locale: 'auto', dataKey: this.testKey, token: function (token) { f.email = token.email; f.tokenId = token.id; f.callback(f); } }); }, payHandler: function (f) { layer.closeAll(0); return StripeCheckout.configure({ key: this.testKey, name: f.title || 'REASON TO RUN 2.0 報名費用', email: f.Email || '', currency: f.currency || 'twd', amount: f.amount || 0, allowRememberMe: false, image: f.logoImg || this.logoImg, locale: 'auto', token: function (token) { f.tokenId = token.id; f.email = token.email; f.callback(f); } }); }, changeCard: function (f) { this.changeHandler(f).open(); }, pay: function (f) { this.payHandler(f).open(); }, SendMsg: function (uid) { var message = {}; message.action = "noticeMember"; message.code = 1; message.uid = uid; message.msg = "<div>已有用戶購買你的相片!</div>"; socketApi.sendMessage(message); } }
注:如有遺漏評論區誒特,或者加群聯系。
二、上后台代碼,這里只上部分代碼。(用到的,避免混淆)
非常的簡單
Stripe.StripeConfiguration.SetApiKey(ConfigurationManager.AppSettings["pk_liveSecretKey"]); var options = new Stripe.ChargeCreateOptions { Amount = Convert.ToInt64(GetMoney(codeModel, money, thisCart)) * 100, Currency = CurrencyCode.HKD.ToString().ToLower(), SourceId = Paymodel.stripeToken, Description = "支付尋寶網-網站-" + Paymodel.Description, ReceiptEmail = Paymodel.stripeEmail, }; var service = new Stripe.ChargeService(); Stripe.Charge charge = service.Create(options); //var options2 = new PayoutCreateOptions //{ // Amount = Convert.ToInt64(model.PayAmount), // Currency = "usd", //}; //var service2 = new PayoutService(); //Payout payout = service2.Create(options2); return new ChargeModel { SourceId = charge.Source?.Id, Status = charge.Status, payEmail = charge.ReceiptEmail, Id = charge.Id, tranPayId = charge.BalanceTransactionId };
結果得到的是 success 就是支付成功了,這里只做了對接支付,沒對接根據流水去查詢。
三、支付流程就是點擊按鈕就調用myStripe.pay函數去生成token,然后會調用里面的callback方法進行回調在進入到你的后台代碼(此處自身理解,有錯請指點)
配置文件代碼。Web.config
<add key="pk_liveConfig" value="pk_test_knG4yR1351351234reeYTnQVHS" /> <add key="pk_liveSecretKey" value="sk_test_UTasdasasgascH26dERrCqyfI" />
歡迎加入群聊,期待更多的小伙伴加入,本群剛創立初期。人少,樓主想結合一下所有人的力量做一個1.0版本的快速開發框架, 比如ABP類似的。