支付宝-支付圈签名
流程:
1.支付圈签名
商户根据自己跟支付宝协议的partner(合作者身份ID)和支付宝提供的私钥来根据加密形成一个支付宝链接
该链接提供给分销商,分销商在该链接下登录到自己的账户,授予商户自动扣款,自动退款的权限。
注:MD5签名
在MD5签名时,需要私钥参与签名。MD5的私钥是以英文字母和数字组成的32位字符串。商户可登录到商户服务中心(https://b.alipay.com),安装数字证书,在“技术服务”栏目中点击“交易安全校验码”,即可查看。
当拿到请求时的待签名字符串后,需要把私钥直接拼接到待签名字符串后面,形成新的字符串,利用MD5的签名函数对这个新的字符串进行签名运算,从而得到32位签名结果字符串(该字符串赋值于参数sign)。
支付宝链接生产代码:
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.UI; using System.Text; using System.Text.RegularExpressions; using System.Web.UI.WebControls; using System.Security.Cryptography; using System.Web.Security; namespace Test { public partial class WebForm1 : System.Web.UI.Page { private const string service = "sign_protocol_with_partner";//支付圈签约接口名称 private const string _input_charset = "utf-8";//参数编码字符集 private const string sign_type = "MD5";//签名方式 private const string sign = "p03xcy9nlivneft9sl4lhd8y35pinaaw";//私钥 private const string partner = "2088611192328117";//合作身份者ID protected void Page_Load(object sender, EventArgs e) { string url = GetAlipayLink(); Response.Write(url); } public string GetAlipayLink() { //拼写签名字符串 StringBuilder strBuilder = new StringBuilder(); strBuilder.Append("_input_charset=" + _input_charset); strBuilder.Append("&partner=" + partner); strBuilder.Append("&service=" + service); //最后加上私钥 strBuilder.Append(sign); //签名 string sign2 = Sign(strBuilder.ToString(), sign_type, _input_charset); //支付宝链接 string url = "https://mapi.alipay.com/gateway.do?service=" + service + "&partner=" + partner + "&_input_charset=" + _input_charset + "&sign_type=" + sign_type + "&sign=" + sign2; return url; } /// <summary> /// 签名字符串 /// </summary> /// <param name="prestr">需要签名的字符串</param> /// <param name="sign_type">签名类型</param> /// <param name="_input_charset">编码格式</param> /// <returns>签名结果</returns> public static string Sign(string prestr, string sign_type, string _input_charset) { StringBuilder sb = new StringBuilder(32); if (sign_type.ToUpper() == "MD5") { MD5 md5 = new MD5CryptoServiceProvider(); byte[] t = md5.ComputeHash(Encoding.GetEncoding(_input_charset).GetBytes(prestr)); for (int i = 0; i < t.Length; i++) { sb.Append(t[i].ToString("x").PadLeft(2, '0')); } } return sb.ToString(); } } }
链接例子:
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)
2012-12-04 sql行列转换,字符串相加