签名规则
- 对所有API请求参数(包括公共参数和请求参数,但除去sign参数),根据参数名称的ASCII码表的顺序排序。如:
foo=1, bar=2, foo_bar=3, foobar=4
- 排序后的顺序是:
bar=2, foo=1, foo_bar=3, foobar=4
- 将排序好的参数名和参数值拼装在一起,用&符号连接,根据上面的示例得到的结果为:
bar=2&foo=1&foo_bar=3&foobar=4
- 在拼接好的字符串后面无缝添加商户密钥(商户平台Secret),如app_secret=1e8k51b7c8acb5d5a0a30e72s3c23de6,拼接后得到的字符串为:
bar=2&foo=1&foo_bar=3&foobar=41e8k51b7c8acb5d5a0a30e72s3c23de6
- 把拼装好的字符串采用utf-8编码,使用MD5算法,将字符串进行32位大写加密:
sign =315536C1BBE819E77671A5C4FE0B94E7
生成签名字符串示例:
app_id=20161219113441561987&biz_content={"store_id":25249,"cashier_id":151156,"merchant_order_sn":"201704191492587335309","total_fee":0.01,"type":1,"auth_code":"130784921069830971"}&format=json&method=openapi.payment.order.swipe&nonce=sdsjio9kjdskkld23&sign_method=md5158d51c7c3acb5d7a5a30e78e3c29de6