栏目:专业的网络股票配资平台  作者:股票怎么玩  更新:2026-01-02  阅读:50

<股票怎么玩>Asp.net使用微信支付,附完整代码及操作文档(图)

最近一个国外的电商项目,需要对接支付功能,国内的支付一般使用微信支付、支付宝、银联等等,但国际上一般使用、、、等,经过内部综合考量所以最后选择使用 支付。

的对接相对还是比较简单的,只是相关的文档是英文的,且国内和国外的思想不一样,看文档不是很方便。

做为技术人员这里我将对接中所遇到的问题和解决方法汇总,希望能对开发人员有所帮助。

一:支付介绍

支付国际支付还是非常有名气的,具体的介绍下面的一些说明:

中文官网:国际支付简介:点击打开支付对接还是非常方便的。支付功能也还是很强大的包括支付、账单、订阅等等。二:技术对接对接前的准备工作其它的一些使用文档:点击查看支付对接方式说明:共有2中方式。方式二:自己做支付页面,通过接口的方式进行支付。不管是使用方式一和方式二ios支付宝支付成功后回调,我们都无法获取用户输入的信用卡等信息。推荐使用方式一对接Asp.net使用微信支付,附完整代码及操作文档(图),有以下几点:下面所有的流程主要是使用跳转到支付页面支付。简单的流程说明下面我们根据上面简单的流程进行一步步详细的说明。下面的演示代码是:.NET Core三:发起支付官网有个快速开始支付的说明文档,点击查看做一个HTML页面,页面上需要引用的js文件和点击跳转到支付按钮。当然支付的页面上还有很多其他的一些东西Asp.net使用微信支付,附完整代码及操作文档(图),比如收货地址、商品信息等等。




    
    
    
    


    
    
    


上面的页面中需要一个后台调用来产生。后端代码Asp.net使用微信支付,附完整代码及操作文档(图),VS上先在NuGet上引用第三方的包,名称:。后端提供的代码如下

       ///         /// 调用stripe创建支付的会话,成功则返回会话的Id,用于页面跳转        ///         ///         [HttpPost("create-checkout-session")]        public ActionResult CreateCheckoutSession()        {            try            {                // Stripe的私钥,在 Stripe后台能看到 sk开头的,_test则表示是用于测试环境的。                StripeConfiguration.ApiKey = "sk_test_xxx";                //封装支付请求的数据,                //字段说明详见官网:https://stripe.com/docs/api/checkout/sessions/object                var options = new SessionCreateOptions                {                    PaymentMethodTypes = new List                    {                      "card" ,"alipay"   //支持的付款方式                    },                    BillingAddressCollection= "required",//是否要收集帐单地址信息                    LineItems = new List                    {                      new SessionLineItemOptions                      {                        PriceData = new SessionLineItemPriceDataOptions                        {                          UnitAmount = 2000, //需要支付的金额                          Currency = "usd",//支持的货币简写,具体见官网                          ProductData = new SessionLineItemPriceDataProductDataOptions                          {                            Name = "支付的显示名称,或者是商品名称",                            Images= new List(){"https://www.baidu.com/img/PCtm_d9c8750bed0b3c7d089fa7d55720d6cf.png" },                             Description="支付的描述信息,可以是商品的描述等信息"                          },                        },                        Quantity = 1,                      },                    },                                      Mode = "payment",                    SuccessUrl = "https://example.com/success", //支付成功以后跳转的URL地址                    CancelUrl = "https://example.com/cancel",//用户取消支付以后跳转的URL地址                };                options.PaymentIntentData = new SessionPaymentIntentDataOptions();                options.PaymentIntentData.Metadata = new Dictionary                {                      { "sn", "6735" }, { "attachmentValue", "6735" },  //传递的自定义参数,回调通知的时候会原样返回                };                var service = new SessionService();                Session session = service.Create(options);                return Json(new { id = session.Id });            }            catch (Exception ex)            {                throw ex;            }        }

上面前端HTML和后端的接口都处理好以后,点击页面上的那个去付款的按钮ios支付宝支付成功后回调,则会跳转到的收银台页面(下图)。

Stripe支付介绍和开发对接,图文加代码

的测试也非常方便,官方提供了很多测试的卡号ios支付宝支付成功后回调,下面表格是我收集整理的一些。

任意3位数字

大于当前时间的年月

5556

Visa (debit)

任意3位数字

大于当前时间的年月

任意3位数字

大于当前时间的年月

22232

(2-)

任意3位数字

大于当前时间的年月

52210

(debit)

任意3位数字

大于当前时间的年月

55100

()

任意3位数字

大于当前时间的年月

任意4位数字

大于当前时间的年月

3731

任意4位数字

大于当前时间的年月

61117

任意3位数字

大于当前时间的年月

69424

任意3位数字

大于当前时间的年月

30004

Club

任意3位数字

大于当前时间的年月

Stripe支付测试卡号_Stripe支付对接_ios支付宝支付成功后回调

Club (14 digit card)

任意3位数字

大于当前时间的年月

35665

任意3位数字

大于当前时间的年月

62005

任意3位数字

大于当前时间的年月

信用卡的年月,填写大于当前时间的年月即可。

在的支付页面填写好相关信息以后点击支付,如果没有问题的话就会支付成功。支付成功以后可在的后台看到付款的金额和一些日志,日志包括事件、接口请求日志、订单数据等等。因为是测试的数据所以要先开启可查看测试数据,不然是看不到的,如何开启看下图。

Stripe支付介绍和开发对接,图文加代码

完成上面的步骤以后,则发起支付收款简单的流程没有问题下,下面说下如何接受异步通知。四:接受异步通知支持很多事件的通知,例如创建完成、订单付款完成、退款等等,详见官网说明。事件类型说明需要一个HTTPS的接口,如果没有证书可去阿里云等申请免费的证书。如何安装HTTPS证书?在后台添加一个端点(接受通知的配置)见下图

Stripe支付介绍和开发对接,图文加代码

Stripe支付介绍和开发对接,图文加代码

事件类型非常多,目前我们是做跳转支付,支付成功了通知我们,则选择:.  事件拿到验证端点的密钥,每个端点有独立的密钥,见下图

Stripe支付介绍和开发对接,图文加代码

编写接受通知的接口代码,官网有英文的说明代码,下面我把代码整理了贴出来。

        ///         /// 支付成功的异步通知接口        ///         ///         [HttpPost]        public async Task Notify()        {            var json = new StreamReader(HttpContext.Request.Body).ReadToEndAsync().Result;            try            {                //验证数据的来源                string endpointSecret = "whsec_XXXXX";//后台创建的端点签名密钥                var stripeEvent = EventUtility.ConstructEvent(json, Request.Headers["Stripe-Signature"], endpointSecret);                //stripeEvent.Type  则是不同的事件,具体则看你配置端点的时候,这个接口设置了那些事件                if (stripeEvent.Type == Events.PaymentIntentSucceeded)                {                    //支付成功的业务处理                    var payModel = stripeEvent.Data.Object as PaymentIntent;                    decimal payAmount = payModel.Amount / 100M;  //支付的金额                    string payPaySN = payModel.Id;//支付方的唯一订单号                    string payCurrency = payModel.Currency;//支付的货币                    //账单信息,如果创建Session的时候设置收集账单信息,则这里可以获取到                    var billing = payModel.Charges.Data[0].BillingDetails;                    string billingName = billing.Name;                    string billingEmail = billing.Email;                    string billingPhone = billing.Phone;                    string billingCity = billing.Address.City;                    string billingCountry = billing.Address.Country;                    string billingLine1 = billing.Address.Line1;                    string billingLine2 = billing.Address.Line2;                    string billingPostalCode = billing.Address.PostalCode;                    string billingState = billing.Address.State;                    //发起支付创建的自定义参数,这里具体根据自己的业务来                    string orderSN = payModel.Metadata["sn"];                    string attachmentValue = payModel.Metadata["attachmentValue"];                    //其它的一些业务处理,比如更新订单状态等等                }                else if (stripeEvent.Type == Events.PaymentMethodAttached)                {                    var paymentMethod = stripeEvent.Data.Object as PaymentMethod;                    Console.WriteLine("PaymentMethod was attached to a Customer!");                }                else                {                    Console.WriteLine("Unhandled event type: {0}", stripeEvent.Type);                }                return Ok();            }            catch (StripeException)            {                return BadRequest();            }        }

完成上面的步骤,就可以测试发起支付了和接受支付结果了。后台可以看到请求的日志记录,可以针对端点发送测试数据,这些对于调试程序还是很方便的,具体如何使用我就不多说了,都是中文的大家用心看下就懂了。上线的时候需要将相关配置参数换成正式环境的。

以上只是我们在研究支付的一点简单的总结,时间仓促很多细节还未深入说明。以上如有不正之处还望见谅,可给我留言讨论,谢谢!

发布者:IT柚子,转转请注明出处:

Tags: