php微信支付hmac-sha256加密,对接微信支付使用HMAC-SHA256使用签名算法实现方式

最近做微信押金支付对接,很多坑,心累!这里提醒一下各位:

首先,确保自己商户号进了白名单,没有需要联系客服,否则接口是调不通的,会一直提示参数错误

其次,确保接口文档是最新的,最好去官网去看,否则可能会有问题,我就是被这个坑了好久,以为拿到的接口文档是对的,结果参数一直有问题

,最后发现是文档有问题,而且官网上文档也有问题,我已经发现好几个了,比如fee_type这个参数,明明写着不是必填,但是一定要填,否则会报签名错误之类的返回码

所以文档也有可能不及时,所以最好就是自己再三确认之后,多与客服沟通,可以节省很多时间!!

还有一点就是签名问题了,因为押金支付这部分接口只支持HMAC-SHA256算法,所以要单独实现,这里还有个坑,就是中文问题

实际中服务器上使用中文加密,会不一致,但是本地是好的,所以统一使用utf-8就可以了,随后严格按照签名生成要求即可!

下面是代码:

/**

* HmacSHA256类型签名

* @param map

* @return

* @throws UnsupportedEncodingException

* @throws NoSuchAlgorithmException

* @throws InvalidKeyException

*/

public static String paySignDesposit(Map map, String key) throws UnsupportedEncodingException, NoSuchAlgorithmException, InvalidKeyException{

Map params = new HashMap();

Set set = map.keySet();

for (String string :

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,下面是一个 Java 实现的示例,可以用于在 HTTP 请求头部中使用 HMAC-SHA256 加密: ```java import javax.crypto.Mac; import javax.crypto.spec.SecretKeySpec; import java.nio.charset.StandardCharsets; import java.security.InvalidKeyException; import java.security.NoSuchAlgorithmException; import java.util.Base64; public class HmacSha256Example { public static void main(String[] args) throws NoSuchAlgorithmException, InvalidKeyException { String secretKey = "your_secret_key"; // 你的密钥 String message = "your_message_to_sign"; // 要签名的消息 String signature = generateHmacSha256Signature(secretKey, message); System.out.println("HMAC-SHA256 signature: " + signature); } private static String generateHmacSha256Signature(String secretKey, String message) throws NoSuchAlgorithmException, InvalidKeyException { String algorithm = "HmacSHA256"; Mac mac = Mac.getInstance(algorithm); SecretKeySpec signingKey = new SecretKeySpec(secretKey.getBytes(StandardCharsets.UTF_8), algorithm); mac.init(signingKey); byte[] signatureBytes = mac.doFinal(message.getBytes(StandardCharsets.UTF_8)); return Base64.getEncoder().encodeToString(signatureBytes); } } ``` 在上述示例中,我们首先定义了一个 `secretKey` 和一个 `message`。然后通过 `generateHmacSha256Signature` 方法,使用 `Mac` 类来实现 HMAC-SHA256 加密。最终,我们通过 Base64 编码将签名结果转换成字符串并返回。 注意,这里的 `secretKey` 和 `message` 都是示例数据,你需要将其替换成你自己的数据。另外,这里使用的是 Java 标准库中的 `javax.crypto` 包,你需要确保你的代码中已经引入了这个包。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值