gpt4 book ai didi

c# - 我如何编码这个查询字符串?

转载 作者:行者123 更新时间:2023-11-30 17:17:43 25 4
gpt4 key购买 nike

我正在尝试实现支付处理器。为了验证响应是否合法,我必须获取查询字符串并附加验证 key ,然后执行 MD5 哈希并将我的哈希值与他们的匹配。

支付处理商正在根据如下查询字符串生成哈希:

trnId=10000041
&messageText=Duplicate+Transaction+%2D+This+transaction+has+already+been+approved
&trnAmount=11.20
&trnDate=6%2F8%2F2011+12%3A32%3A20+PM
&trnEmailAddress=john%2Edoe%40gmail%2Ecom
&avsMessage=Address+Verification+not+performed+for+this+transaction%2E
&ref1=aab02ccd%2D7d17%2D4d09%2Da30c%2Dad6324fe33f1

现在,如果我调用 QueryString["messageText"],我将得到 “重复交易 - 此交易已被批准”。我不能使用它,因为我需要 +%2D

所以为了生成我的字符串,我做了这样的事情:

NameValueCollection queryString = new NameValueCollection(QueryString);
queryString.Remove("hashValue");

List<string> parameters = new List<string>();
foreach(string qs in queryString.Keys)
parameters.Add(qs + "=" + HttpUtility.UrlEncode(QueryString[qs]));

string value = string.Join("&", parameters.ToArray());

我的结果字符串:

trnId=10000041
&messageText=Duplicate+Transaction+-+This+transaction+has+already+been+approved
&trnAmount=11.20
&trnDate=6%2f8%2f2011+1%3a05%3a09+PM
&trnEmailAddress=john.doe%40gmail.com
&avsMessage=Address+Verification+not+performed+for+this+transaction.
&ref1=aab02ccd-7d17-4d09-a30c-ad6324fe33f1

这有点接近,但有 2 个问题,破折号和句点没有编码,编码生成的是小写字母而不是大写字母。 %2f 而不是 %2F

有没有什么方法可以在不执行 string.replace 的情况下解决这个问题?我可以调用一种不同的方法来提供我想要的结果吗?

最佳答案

使用QueryString.ToString()获取完整的查询字符串作为一个大编码字符串,包括所有&+等。如果这仍然与您的预期不同,您可以更深入地获取 Request.RawUrl.Split('?')[1]

关于c# - 我如何编码这个查询字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6284916/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com