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" />

 

欢迎加入群聊,期待更多的小伙伴加入,本群刚创立初期。 

posted @ 2020-01-08 16:02  颖子的踏坑路线  阅读(2780)  评论(1编辑  收藏  举报