自己代码签名后,base64编码后的结果如下:
HZcEQFWXZGZN1gfLW6yflO/waSfAccLNzgVeS8lr9EED7tz+u6/OjmjELoXakrfR84hKMdJOutGmBtC/l5SA4g1KF+dis760Rh5fokrlggq2bTYPrXscV54JzeEoCEqqbThLJMCNhL18Iy5n1WnljY3SDAF9jqHGRVzKj3MKjst4322S0LOuUSlhExIrfb89/Qciky3+Yr2Hv/fsVegXLzkMQbk1SIHbCI6tm5idfbdZ/KfyPbcsUwMHXQoWPLQOz86qC/ZP7QyQqqkIkJKBf9wAf1boDaQgwv2kvT44nQXYM00EyFT25Mqwf+O3jchUyj/IIRe5WYqxXG9wwUmU5w==
Request-ID: 08FCA4A0840610AD01188EAEC05520BD312881FE02-269546525
我的c++签名代码如图:
base64代码如图:
问题:我不知道那里导致的结果不一致,是算法类型写错了?
从你截屏的部分代码来看,可能的原因是timestamp的问题,你的是1554208460开头的,现在的epoch timestamp在 161开头,微信支付服务端一个有一个正负300秒的偏移量,超过这个偏移量就会被拒绝(即401),你可以试试把时间戳调整一下再看看。
heades[Accept] = 'application/json';
headers[Content-type] = 'application/json';
测试用的消息摘要如下:
GET\n/v3/certificates\n1554208460\n593BEC0C930BF1AFEB40B4A08C8FB242\n\n