最近做微信押金支付对接,很多坑,心累!这里提醒一下各位:
首先,确保自己商户号进了白名单,没有需要联系客服,否则接口是调不通的,会一直提示参数错误
其次,确保接口文档是最新的,最好去官网去看,否则可能会有问题,我就是被这个坑了好久,以为拿到的接口文档是对的,结果参数一直有问题
,最后发现是文档有问题,而且官网上文档也有问题,我已经发现好几个了,比如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 :