Stripe支付对接
一、由于文档丢失原因,我就直接上代码了。
这个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" />
欢迎加入群聊,期待更多的小伙伴加入,本群刚创立初期。