如果小程序模板或者商家小程序已经设置了 aes 密钥,服务商可通过调用 授权应用 aes 密钥查询接口来查询应用的 aes 密钥。
示例代码如下(以 java 语言为例):
公钥方式:
//encryptkey填入当前第三方应用的aes密钥,encrypttype为"aes" alipayclient alipayclient = new defaultalipayclient("https://openapi.alipay.com/gateway.do","第三方应用appid","your private_key","json","gbk","alipay_public_key","rsa2","encryptkey","encrypttype"); alipayopenauthappaesgetrequest request = new alipayopenauthappaesgetrequest(); request.setbizcontent ("{" "\"merchant_app_id\":\"20191223601234500\"" //填写需查询密钥的应用appid "}" ); alipayopenauthappaesgetresponse response = alipayclient.execute(request); if (response.issuccess ()){ system.out.println(response.getaeskey()); system.out.println( "调用成功" ); } else { system.out.println( "调用失败" ); }
公钥证书方式:
map = new hashmap<>();\n map.put(\"merchant_app_id\", \"2021002114641105\");// 查询模板aes密钥就填写小程序模板appid,为商家小程序填写商家小程序appid\n\n request.setbizcontent(json.tojsonstring(map));\n request.setneedencrypt(true);\n\n alipayopenauthappaesgetresponse response = alipayclient.certificateexecute(request);\n if (response.issuccess ()){\n system.out.println(string.format(\"调用成功,aeskey=%s\", response.getaeskey()));\n } else {\n system.out.println( \"调用失败\" );\n }","heightlimit":true,"id":"2poos"}" id="2poos" class="lake-card-margin">
alipayconfig alipayconfig = new alipayconfig(); alipayconfig.setserverurl(alipayserviceenvconstants.alipay_gateway); alipayconfig.setappid(alipayserviceenvconstants.app_id); alipayconfig.setprivatekey(alipayserviceenvconstants.private_key); alipayconfig.setappcertpath(alipayserviceenvconstants.app_cert_path); alipayconfig.setalipaypubliccertpath(alipayserviceenvconstants.alipay_cert_path); alipayconfig.setrootcertpath(alipayserviceenvconstants.alipay_root_cert_path); alipayconfig.setformat("json"); alipayconfig.setcharset(alipayserviceenvconstants.charset); alipayconfig.setsigntype(alipayserviceenvconstants.sign_type); alipayconfig.setencrypttype(alipayserviceenvconstants.encrypttype); alipayconfig.setencryptkey(alipayserviceenvconstants.encryptkey); alipayclient alipayclient = new defaultalipayclient(alipayconfig); alipayopenauthappaesgetrequest request = new alipayopenauthappaesgetrequest(); map<string, string> map = new hashmap<>(); map.put("merchant_app_id", "2021002114641105");// 查询模板aes密钥就填写小程序模板appid,为商家小程序填写商家小程序appid request.setbizcontent(json.tojsonstring(map)); request.setneedencrypt(true); alipayopenauthappaesgetresponse response = alipayclient.certificateexecute(request); if (response.issuccess ()){ system.out.println(string.format("调用成功,aeskey=%s", response.getaeskey())); } else { system.out.println( "调用失败" ); }
注意:
- 服务商在构造 alipayclient 时,构造方法中需传入 encryptkey 和 encrypttype,encryptkey 为当前三方应用的 aes 密钥,encrypttype 为固定值 aes。
- 服务商在调用接口前,必须先设置第三方应用的 aes 密钥,否则无法调用接口。
如果小程序模板或者商家应用没有设置 aes 密钥,或者 aes 密钥需要更新,服务商可以通过调用 alipay.open.auth.app.aes.set 授权应用 aes 密钥设置接口,来替小程序模板或者商家应用设置或者更新 aes 密钥。示例代码如下(以 java 语言为例):
注意:服务商请谨慎设置或更新商家应用密钥;若商家应用已上线,更新商家应用的密钥可能会影响商家的线上业务。服务商应该在商家应用没有密钥或者必须更换密钥时才去设置,若商家应用已有密钥,则调用上文中的密钥查询接口即可。
公钥方式:
//encryptkey填入当前第三方应用的aes密钥,encrypttype为"aes" alipayclient alipayclient = new defaultalipayclient("https://openapi.alipay.com/gateway.do","第三方应用appid","your private_key","json","gbk","alipay_public_key","rsa2","encryptkey","encrypttype"); alipayopenauthappaessetrequest request = new alipayopenauthappaessetrequest(); request.setbizcontent ("{" //为模板设置就填写小程序模板appid,为商家设置就填写商家小程序appid "\"merchant_app_id\":\"20191223601234500\"" "}"); alipayopenauthappaessetresponse response = alipayclient.execute(request); if (response.issuccess ()){ system.out.println ( response.getaeskey()); system.out.println ("调用成功"); } else { system.out.println ("调用失败"); }
公钥证书方式:
map = new hashmap<>();\n map.put(\"merchant_app_id\", \"2021002114641105\");// 为模板设置就填写小程序模板appid,为商家设置就填写商家小程序appid\n\n request.setbizcontent(json.tojsonstring(map));\n request.setneedencrypt(true);\n\n alipayopenauthappaessetresponse response = alipayclient.certificateexecute(request);\n if (response.issuccess()) {\n system.out.println(string.format(\"调用成功,aeskey=%s\", response.getaeskey()));\n } else {\n system.out.println(\"调用失败\");\n }","heightlimit":true,"id":"h5rpx"}" id="h5rpx" class="lake-card-margin">
alipayconfig alipayconfig = new alipayconfig(); alipayconfig.setserverurl(alipayserviceenvconstants.alipay_gateway); alipayconfig.setappid(alipayserviceenvconstants.app_id);//第三方应用appid alipayconfig.setprivatekey(alipayserviceenvconstants.private_key);//第三方应用私钥 alipayconfig.setappcertpath(alipayserviceenvconstants.app_cert_path);//第三方应用公钥证书绝对路径 alipayconfig.setalipaypubliccertpath(alipayserviceenvconstants.alipay_cert_path);//支付宝公钥证书绝对路径 alipayconfig.setrootcertpath(alipayserviceenvconstants.alipay_root_cert_path);//支付宝 ca 根证书文件路径 alipayconfig.setformat("json"); alipayconfig.setcharset(alipayserviceenvconstants.charset); alipayconfig.setsigntype(alipayserviceenvconstants.sign_type); alipayconfig.setencrypttype(alipayserviceenvconstants.encrypttype); alipayconfig.setencryptkey(alipayserviceenvconstants.encryptkey); alipayclient alipayclient = new defaultalipayclient(alipayconfig); alipayopenauthappaessetrequest request = new alipayopenauthappaessetrequest(); map<string, string> map = new hashmap<>(); map.put("merchant_app_id", "2021002114641105");// 为模板设置就填写小程序模板appid,为商家设置就填写商家小程序appid request.setbizcontent(json.tojsonstring(map)); request.setneedencrypt(true); alipayopenauthappaessetresponse response = alipayclient.certificateexecute(request); if (response.issuccess()) { system.out.println(string.format("调用成功,aeskey=%s", response.getaeskey())); } else { system.out.println("调用失败"); }
注意:
- 服务商在构造 alipayclient 时,构造方法中需传入 encryptkey 和 encrypttype,encryptkey 为当前第三方应用的 aes 密钥,encrypttype 为固定值 aes。
- 服务商在调用接口前,必须先设置第三方应用的 aes 密钥,否则无法调用接口。