diff --git a/src/SKIT.FlurlHttpClient.Wechat.TenpayV2/Extensions/WechatTenpayClientParameterExtensions.cs b/src/SKIT.FlurlHttpClient.Wechat.TenpayV2/Extensions/WechatTenpayClientParameterExtensions.cs
index 1de0e2b9..4d24d32e 100644
--- a/src/SKIT.FlurlHttpClient.Wechat.TenpayV2/Extensions/WechatTenpayClientParameterExtensions.cs
+++ b/src/SKIT.FlurlHttpClient.Wechat.TenpayV2/Extensions/WechatTenpayClientParameterExtensions.cs
@@ -1,4 +1,4 @@
-using System;
+using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Web;
@@ -19,9 +19,10 @@ namespace SKIT.FlurlHttpClient.Wechat.TenpayV2
/// REF: https://pay.weixin.qq.com/wiki/doc/api/tools/cash_coupon_sl.php?chapter=18_3&index=4
///
///
+ ///
///
///
- public static IDictionary GenerateParametersForJsapiSendBusinessRedPack(this WechatTenpayClient client, string packageString)
+ public static IDictionary GenerateParametersForJsapiSendBusinessRedPack(this WechatTenpayClient client, string appId, string packageString)
{
if (client is null) throw new ArgumentNullException(nameof(client));
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 nonce = Guid.NewGuid().ToString("N");
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);
return new ReadOnlyDictionary(new Dictionary()
@@ -63,7 +64,7 @@ namespace SKIT.FlurlHttpClient.Wechat.TenpayV2
string timestamp = DateTimeOffset.Now.ToLocalTime().ToUnixTimeSeconds().ToString();
string nonce = Guid.NewGuid().ToString("N");
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);
return new ReadOnlyDictionary(new Dictionary()
@@ -99,7 +100,7 @@ namespace SKIT.FlurlHttpClient.Wechat.TenpayV2
string nonce = Guid.NewGuid().ToString("N");
string partnerId = merchantId;
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);
return new ReadOnlyDictionary(new Dictionary()
@@ -150,7 +151,7 @@ namespace SKIT.FlurlHttpClient.Wechat.TenpayV2
string timestamp = DateTimeOffset.Now.ToLocalTime().ToUnixTimeSeconds().ToString();
string nonce = Guid.NewGuid().ToString("N");
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);
return new ReadOnlyDictionary(new Dictionary()