首页 > 其他分享 >支付宝支付

支付宝支付

时间:2024-02-19 11:35:43浏览次数:15  
标签:支付宝 parameters trade LogInformation notify 支付 logger id

环境:.NetCore、AlipaySDKNet.Standard

  //支付宝支付
  "AliPay": {
    "AliAppId": "",
    "GateWay": "https://openapi-sandbox.dl.alipaydev.com/gateway.do",
    //私钥
    "RSAPrivateKey": "",
    //支付公钥
    "AliPayRSAPublicKey": "",
    //异步通知地址,用于接收支付宝推送给商户的支付/退款成功的消息,仅支持http/https,公网可访问
    "NotifyUrl": "/api/order/main/ali-pay-notify",
    //支付成功后点击完成会自动跳转回商家页面地址,仅支持http/https,公网可访问
    "ReturnUrl": "/#/paymentSuccess"
  },
 1  /// <summary>
 2  /// 支付
 3  /// </summary>
 4  /// <returns></returns>
 5  [AllowAnonymous]
 6  [HttpPost]
 7  [Route("pay")]
 8  public async Task<string> PayOrderAsync(CreateOrderDto input)
 9  {
10      //订单是否超时、是否超出报名人数验证
11      bool overtime = await _orderAppService.CheckOrderOvertime(input.OrderNo, input.ProductId);
12 
13      var config = _aliPayConfigOptions.Value;
14      var client = new DefaultAopClient(config);
15 
16      AlipayTradeWapPayRequest request = new AlipayTradeWapPayRequest();
17      var domain = _configuration.GetSection("Domain").Value;
18      request.SetNotifyUrl(domain + _configuration.GetSection("AliPay:NotifyUrl").Value);
19      request.SetReturnUrl(domain + _configuration.GetSection("AliPay:ReturnUrl").Value);
20 
21      AlipayTradeWapPayModel model = new AlipayTradeWapPayModel();
22      model.OutTradeNo = input.OrderNo;
23      model.TotalAmount = input.PayAmount.ToString();
24      model.Subject = input.ProductName;
25      request.SetBizModel(model);
26      _logger.LogInformation("支付宝支付请求参数:" + JsonConvert.SerializeObject(request));
27      AlipayTradeWapPayResponse response = client.pageExecute(request);
28      _logger.LogInformation("支付宝支付返回参数:" + JsonConvert.SerializeObject(response));
29      return response.Body;
30  }
31 
32  [AllowAnonymous]
33  [ApiExplorerSettings(IgnoreApi = true)]
34  [HttpPost]
35  [Route("ali-pay-notify")]
36  public async Task<IActionResult> AliPayNotify()
37  {
38      _logger.LogInformation("----------支付完成开始回调----------");
39      // 获取待签名字符串
40      var parameters = GetSignContent();
41      string alipayPublicKey = _configuration.GetSection("AliPay:AliPayRSAPublicKey").Value;
42      bool is_sign = AlipaySignature.RSACheckV1(parameters, alipayPublicKey, "utf-8", "RSA2", false);
43 
44      if (is_sign)
45      {
46          string trade_status = Request.Form["trade_status"];
47          if (trade_status == "TRADE_FINISHED" || trade_status == "TRADE_SUCCESS")
48          {
49              #region 回调
50              var response = new OrderPaymentResponseDto()
51              {
52                  out_trade_no = parameters["out_trade_no"],
53                  trade_no = parameters["trade_no"],
54                  gmt_create = parameters["gmt_create"] == null ? null : DateTime.Parse(parameters["gmt_create"]),
55                  gmt_payment = parameters["gmt_payment"] == null ? null : DateTime.Parse(parameters["gmt_payment"]),
56                  notify_time = DateTime.Parse(parameters["notify_time"]),
57                  notify_id = parameters["notify_id"],
58                  notify_type = parameters["notify_type"],
59                  app_id = parameters["app_id"],
60                  seller_id = parameters["seller_id"],
61                  //buyer_id = parameters["buyer_id"],
62                  receipt_amount = parameters["receipt_amount"] == null ? null : decimal.Parse(parameters["receipt_amount"]),
63                  trade_status = trade_status
64              };
65 
66              _logger.LogInformation($"支付完成回调:{JsonConvert.SerializeObject(response)}");
67              //更新订单状态
68              await _orderAppService.UpdateOrderAsync(response);
69              #endregion
70          }
71 
72          return Content("success");
73      }
74      else
75      {
76          //验签失败
77          _logger.LogInformation("验签失败:" + JsonConvert.SerializeObject(parameters));
78          return Content("fail");
79      }
80  }
81 
82  /// <summary>
83  /// 待签名字符串
84  /// </summary>
85  /// <returns></returns>
86  private Dictionary<string, string> GetSignContent()
87  {
88      // 获取支付宝异步通知返回参数
89      IEnumerable<string> parameterKeys = HttpContext.Request.Form.Keys;
90      _logger.LogInformation("异步通知返回参数:" + JsonConvert.SerializeObject(parameterKeys));
91      Dictionary<string, string> parameters = new Dictionary<string, string>();
92      foreach (string key in parameterKeys)
93      {
94          parameters.Add(key, HttpContext.Request.Form[key]);
95      }
96 
97      _logger.LogInformation("异步通知返回Key+Value:" + JsonConvert.SerializeObject(parameters));
98      return parameters;
99  }
View Code

 

标签:支付宝,parameters,trade,LogInformation,notify,支付,logger,id
From: https://www.cnblogs.com/zhaoyl9/p/18020717

相关文章

  • 支付宝手机网站支付与微信支付对比的优缺点
    介绍:支付宝手机网站支付是指商户在移动端网页展示商品或服务,用户在商户页面确认使用支付宝支付后,浏览器自动跳转支付宝APP或支付宝网页完成付款的支付产品。通常手机支付分为三步:1.创建支付订单2.将支付订单信息给到用户完成支付3.支付渠道回调支付结果/主动查询支付渠道支......
  • 支付宝花呗分期如何接入
    马上过年了,经过一波年货大采购,花呗都要见底了~不慌,今天跟大家聊一聊如何接入支付宝的花呗分期。 什么是花呗分期花呗分期是蚂蚁集团推出的消费金融产品,用户在商家端网站或线下门店购物时使用花呗分期支付,订单全额实时支付到商家支付宝账户中,用户分期偿还资金。分期产生的手......
  • 大厂聚合支付系统架构演进(上)
    0前言聚合支付主要是就是一个将所有的第三方支付,通过借助形式融合在一起,相当于对接一个支付接口,就可以使用各种支付的场景。如便利店购物,贴个码,上有微信支付,支付宝等各种支付。它主要是针对一个微小商户进行一个收款工具,让商家他那边会有一个收钱吧商户通,第一个可以实时的收听语音......
  • 微信支付服务商,商户快速进件,减少工作量
    大家好,我是小悟服务商拓展特约商户,人工录入大量商户资料,耗时耗力。商户对标准费率不满意,无法说服商户先签约再帮其调整费率。为了减少服务商工作量,服务商快速进件工具来了,分为移动端和管理端。用好技术,让经营更高效。移动端包括四大模块,主体资料、经营资料、法人资料和银行账户。点......
  • 金融行业多端支付系统强一致性架构设计(下)
    2支付能力的快速接入支付快速接入:设计流程主要目标:屏蔽接入第三方支付平台的复杂度,为业务提供便捷接入的支付的能力。整体交互逻辑:用户下单后,业务线生成生订单的同时请求支付系统,返回携带加密后的收银台链接,业务前端渲染收银台H5链接,之后用户操作都直接与支付系统直接交互,不再经过......
  • 金融行业多端支付系统强一致性架构设计(上)
    到家业务。负责交易系统(提单、支付)以及基础系统(Api网关、定位、地址)等开发工作,通过深入到业务,搭建合理的业务架构。目前主攻降低软件复杂性设计、构建高可用系统方向。0前言线下现金交易,可能抹个零头、少几毛几块都问题不大,但平台上的准确性、一致性,是支付系统的首要指标。互联网......
  • 微信支付普通商户与AppID账号关联管理-授权
     微信支付普通商户与AppID账号关联管理二、名词解释名词释义微信支付普通商户公司企业、政府机关、事业单位、社会组织、个体工商户、个人卖家、小微商户。(微信支付商户接入指引)AppID已通过微信认证的服务号,订阅号*[1],小程序,企业微信*[2],移动应用*[3]......
  • 全球最大的在线支付企业PayPal开始裁员,补偿N+6,被誉为PayPal黑帮天团,是诸多世界顶尖公
    今天听到消息说被贝宝支付开始裁员了。PayPal(贝宝)将在今年全球裁员9%,约2500人。据行业相关的人士称,前几天ebay裁员,群里进了好多PayPal贝宝的人。可见消息己经走漏了。一般的外企会严格执行赔偿策略,甚至有很多公司的期权都会提前归属,这次据相关人士称,贝宝的裁员补偿是n+6,PayPal贝宝......
  • 支付宝直连商户处理支付交易投诉管理,支持多商户
    大家好,我是小悟1、问题背景玩过支付宝生态的,或许就有这种感受,如果收到投诉单,不会通知到手机端,只会在支付宝商家后台-账号中心-安全中心-消费者投诉-支付交易投诉那里显示。那你能一直盯着电脑看吗?可能当你有空打开电脑登录查看的时候,已经积累了好多超时未处理的投诉单。一旦处理不......
  • 【Java】SpringBoot集成微信V3支付
    前言这篇文章主要实现一下通过IJPay来实现微信v3支付案例,本篇文章使用的是JSAPI即小程序支付准备工作导入依赖<dependency><groupId>com.github.javen205</groupId><artifactId>IJPay-WxPay</artifactId><version>2.9.6</versio......