.Net微信电脑网站支付(api v2)

本文介绍了如何在.Net环境下实现微信电脑网站支付,包括支付流程、协议规则、签名算法、异步通知的处理以及如何集成SDK。重点讨论了签名算法,强调了在处理异步通知时的并发控制和成功状态判断的重要性。
摘要由CSDN通过智能技术生成

商户或企业前往微信开放平台申请开通微信支付,需要注意的是微信支付功能不对个人用户开放。开通支付功能后,会获取到以下微信支付相关的配置信息:

  • appid:是微信公众账号或开放平台APP的唯一标识,在公众平台申请公众账号或者在开放平台申请APP账号后,微信会自动分配对应的appid,用于标识该应用。
  • mch_id:商户申请微信支付后,由微信支付分配的商户收款账号。
  • key:交易过程用于生成签名的密钥,可以前往:微信商户平台(pay.weixin.qq.com)–>账户中心–>账户设置–>API安全–>密钥设置
  • appsecret:AppSecret是APPID对应的接口密码,用于获取接口调用凭证access_token时使用,不参与微信支付过程。

一、支付流程

支付流程.png

二、协议规则

使用微信API接口时,必须遵循以下规则:

  • 传输方式:为保证交易安全性,采用HTTPS传输
  • 提交方式:采用POST方法提交
  • 数据格式:提交和返回数据都为XML格式,根节点名为xml
  • 字符编码:微信支付API v2仅支持UTF-8字符编码。
  • 签名算法:MD5/HMAC-SHA256

三、签名算法

微信支付使用的是MD5/HMAC-SHA256对数据进行签名和验证。
首先将所有发送或接受的非空数据按URL键值对(key1=value1&key2=value2)的形式,按参数名ASCII码从小到大排序(字典序)拼接成字符串,然后将用于微信签名的key拼接在最后,最后使用MD5/HMAC-SHA256对字符串签名得到sign值。需要注意的是:

  • 参数必须按ASCII码从小到大排序。
  • 为空参数不参与签名。
  • 参数名区分大小写。
  • 验证调签名时,sign参数不参与签名。将生成的签名与该sign值作校验。

四、异步通知

微信后台支付成功后,会调用商户后台的异步通知接口,将支付结果发送给商户后台。商户后台根据获取到的支付结果,处理业务平台逻辑。在处理时需要注意一下几点:

  • 同样的异步通知微信可能发送多次,必须采用数据锁进行并发控制,避免数据混乱。
  • 商户后台在处理通知时,需要先判断该通知是否已经处理成功。如果处理成功,直接返回成功信息。
  • 微信后台没有接受到通知接口返回的成功信息,会按照一定的频率重新发送通知,知道成功为止(通知频率为15s/15s/30s/3m/10m/20m/30m/30m/30m/60m/3h/3h/3h/6h/6h - 总计 24h4m)。

五、集成SDK

前往微信开放平台下载 SDK与DEMO ,将Demo中的business、lib放入项目中使用。

using Microsoft.AspNetCore.Mvc;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using QRCoder;
using System.Drawing;
using System.IO;
using System.Drawing.Imaging;
using WxPayAPI;
using Microsoft.Extensions.Logging;
using System.Text;

namespace WxPay.Demo.Controllers
{
   
    public class PayController : Controller
    {
   
        private readonly ILogger<HomeController> _logger;

        public PayController(ILogger<HomeController> logger)
        {
   
            _logger = logger;
        }

        /// <summary>
        /// 生成直接支付url,支付url有效期为2小时。
        /// </summary>
        <
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值