mirror of
https://gitee.com/fudiwei/DotNetCore.SKIT.FlurlHttpClient.Wechat.git
synced 2026-03-10 00:13:36 +08:00
fix(tenpayv2): 修复生成客户端调起支付二次签名时的参数排序错误
This commit is contained in:
@@ -1,4 +1,4 @@
|
|||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Collections.ObjectModel;
|
using System.Collections.ObjectModel;
|
||||||
using System.Web;
|
using System.Web;
|
||||||
@@ -19,9 +19,10 @@ namespace SKIT.FlurlHttpClient.Wechat.TenpayV2
|
|||||||
/// <para>REF: https://pay.weixin.qq.com/wiki/doc/api/tools/cash_coupon_sl.php?chapter=18_3&index=4 </para>
|
/// <para>REF: https://pay.weixin.qq.com/wiki/doc/api/tools/cash_coupon_sl.php?chapter=18_3&index=4 </para>
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="client"></param>
|
/// <param name="client"></param>
|
||||||
|
/// <param name="appId"></param>
|
||||||
/// <param name="packageString"></param>
|
/// <param name="packageString"></param>
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
public static IDictionary<string, string> GenerateParametersForJsapiSendBusinessRedPack(this WechatTenpayClient client, string packageString)
|
public static IDictionary<string, string> GenerateParametersForJsapiSendBusinessRedPack(this WechatTenpayClient client, string appId, string packageString)
|
||||||
{
|
{
|
||||||
if (client is null) throw new ArgumentNullException(nameof(client));
|
if (client is null) throw new ArgumentNullException(nameof(client));
|
||||||
if (packageString is null) throw new ArgumentNullException(nameof(packageString));
|
if (packageString is null) throw new ArgumentNullException(nameof(packageString));
|
||||||
@@ -29,7 +30,7 @@ namespace SKIT.FlurlHttpClient.Wechat.TenpayV2
|
|||||||
string timestamp = DateTimeOffset.Now.ToLocalTime().ToUnixTimeSeconds().ToString();
|
string timestamp = DateTimeOffset.Now.ToLocalTime().ToUnixTimeSeconds().ToString();
|
||||||
string nonce = Guid.NewGuid().ToString("N");
|
string nonce = Guid.NewGuid().ToString("N");
|
||||||
string signType = Constants.SignTypes.MD5;
|
string signType = Constants.SignTypes.MD5;
|
||||||
string signData = $"timeStamp={timestamp}&nonceStr={nonce}&package={packageString}&signType={signType}";
|
string signData = $"appId={appId}&nonceStr={nonce}&package={packageString}&timeStamp={timestamp}";
|
||||||
string sign = Utilities.RequestSigner.SignFromSortedQueryString(signData, client.Credentials.MerchantSecret, signType);
|
string sign = Utilities.RequestSigner.SignFromSortedQueryString(signData, client.Credentials.MerchantSecret, signType);
|
||||||
|
|
||||||
return new ReadOnlyDictionary<string, string>(new Dictionary<string, string>()
|
return new ReadOnlyDictionary<string, string>(new Dictionary<string, string>()
|
||||||
@@ -63,7 +64,7 @@ namespace SKIT.FlurlHttpClient.Wechat.TenpayV2
|
|||||||
string timestamp = DateTimeOffset.Now.ToLocalTime().ToUnixTimeSeconds().ToString();
|
string timestamp = DateTimeOffset.Now.ToLocalTime().ToUnixTimeSeconds().ToString();
|
||||||
string nonce = Guid.NewGuid().ToString("N");
|
string nonce = Guid.NewGuid().ToString("N");
|
||||||
string package = $"prepay_id={prepayId}";
|
string package = $"prepay_id={prepayId}";
|
||||||
string signData = $"appId={appId}&timeStamp={timestamp}&nonceStr={nonce}&package={package}&signType={signType}";
|
string signData = $"appId={appId}&nonceStr={nonce}&package={package}&signType={signType}&timeStamp={timestamp}";
|
||||||
string sign = Utilities.RequestSigner.SignFromSortedQueryString(signData, client.Credentials.MerchantSecret, signType);
|
string sign = Utilities.RequestSigner.SignFromSortedQueryString(signData, client.Credentials.MerchantSecret, signType);
|
||||||
|
|
||||||
return new ReadOnlyDictionary<string, string>(new Dictionary<string, string>()
|
return new ReadOnlyDictionary<string, string>(new Dictionary<string, string>()
|
||||||
@@ -99,7 +100,7 @@ namespace SKIT.FlurlHttpClient.Wechat.TenpayV2
|
|||||||
string nonce = Guid.NewGuid().ToString("N");
|
string nonce = Guid.NewGuid().ToString("N");
|
||||||
string partnerId = merchantId;
|
string partnerId = merchantId;
|
||||||
string package = "Sign=WXPay";
|
string package = "Sign=WXPay";
|
||||||
string signData = $"appid={appId}×tamp={timestamp}&noncestr={nonce}&package={package}&partnerid={partnerId}&prepayid={prepayId}&signType={signType}";
|
string signData = $"appid={appId}&noncestr={nonce}&package={package}&partnerid={partnerId}&prepayid={prepayId}×tamp={timestamp}";
|
||||||
string sign = Utilities.RequestSigner.SignFromSortedQueryString(signData, client.Credentials.MerchantSecret, signType);
|
string sign = Utilities.RequestSigner.SignFromSortedQueryString(signData, client.Credentials.MerchantSecret, signType);
|
||||||
|
|
||||||
return new ReadOnlyDictionary<string, string>(new Dictionary<string, string>()
|
return new ReadOnlyDictionary<string, string>(new Dictionary<string, string>()
|
||||||
@@ -150,7 +151,7 @@ namespace SKIT.FlurlHttpClient.Wechat.TenpayV2
|
|||||||
string timestamp = DateTimeOffset.Now.ToLocalTime().ToUnixTimeSeconds().ToString();
|
string timestamp = DateTimeOffset.Now.ToLocalTime().ToUnixTimeSeconds().ToString();
|
||||||
string nonce = Guid.NewGuid().ToString("N");
|
string nonce = Guid.NewGuid().ToString("N");
|
||||||
string package = $"prepay_id={prepayId}";
|
string package = $"prepay_id={prepayId}";
|
||||||
string signData = $"appId={appId}&timeStamp={timestamp}&nonceStr={nonce}&package={package}&signType={signType}";
|
string signData = $"appId={appId}&nonceStr={nonce}&package={package}&signType={signType}&timeStamp={timestamp}";
|
||||||
string sign = Utilities.RequestSigner.SignFromSortedQueryString(signData, client.Credentials.MerchantSecret, signType);
|
string sign = Utilities.RequestSigner.SignFromSortedQueryString(signData, client.Credentials.MerchantSecret, signType);
|
||||||
|
|
||||||
return new ReadOnlyDictionary<string, string>(new Dictionary<string, string>()
|
return new ReadOnlyDictionary<string, string>(new Dictionary<string, string>()
|
||||||
|
|||||||
Reference in New Issue
Block a user