支付宝获取 APPID
简介
APPID 相当于应用的身份证号,是支付宝分配给开发者的应用 ID,只有应用创建后才可以获取。
获取
请登录 支付宝开放平台 找到对应应用,名称下数字串即为 APPID,后续可用于 OpenAPI 调用等操作。

支付宝获取 APPID
APPID 相当于应用的身份证号,是支付宝分配给开发者的应用 ID,只有应用创建后才可以获取。
请登录 支付宝开放平台 找到对应应用,名称下数字串即为 APPID,后续可用于 OpenAPI 调用等操作。
支付宝获取 PID
PID(合作者身份 ID)是商家与支付宝签约后,商家获得的支付宝商家唯一识别码。
由于身份不同获取方式不同,以下分别介绍商家获取自己与服务商获取商家 PID 的方式。
服务商获取商家的 PID,需要使用 获取会员信息,调用 alipay.system.oauth.token(换取授权访问令牌) 接口。
支付宝pageExecute() 方法如何生成 url 链接?
网站类的接口(例如手机网站支付、电脑网站支付)接口的请求使用 pageExecute() 方式进行请求默认为 POST 方式请求,即生成 form 表单,GET 方式请求生成 url 链接。
注意:
不同语言请求方式不同,如下:
//post方式请求,生成form表单 response= alipayClient.pageExecute(alipayRequest).getBody(); //get方式请求,即生成url链接 response = alipayClient.pageExecute(alipayRequest,"GET").getBody();
//post方式请求,生成form表单 $result = $aop->pageExecute($reques); //get方式请求,即生成url链接 $result = $aop->pageExecute($request,"GET");
//post方式请求,生成form表单 response= client.pageExecute(request); //get方式请求,即生成url链接 response = client.pageExecute(request,"", "GET");
//post方式请求,生成form表单 response = client.page_execute(request) //get方式请求,即生成url链接 response = client.page_execute(request,http_method="GET")
//post方式请求,生成form表单(无需设置调用setMethod)
const formData = new AlipayFormData();
//get方式请求,即生成url链接(需调用setMethod并传入get)
const formData = new AlipayFormData();
formData.setMethod('get');
支付宝服务端如何接收通知及验签?
以支付接口接收通知并处理为例。
Java 异步验签示例
//获取支付宝POST过来反馈信息
Map< String , String > params = new HashMap < String , String > ();
Map requestParams = request.getParameterMap();
for(Iterator iter = requestParams.keySet().iterator();iter.hasNext();){
String name = (String)iter.next();
String[] values = (String [])requestParams.get(name);
String valueStr = "";
for(int i = 0;i < values.length;i ++ ){
valueStr = (i==values.length-1)?valueStr + values [i]:valueStr + values[i] + ",";
}
//乱码解决,这段代码在出现乱码时使用。
//valueStr = new String(valueStr.getBytes("ISO-8859-1"), "utf-8");
params.put (name,valueStr);
}
//切记alipaypublickey是支付宝的公钥,请去open.alipay.com对应应用下查看。
//boolean AlipaySignature.rsaCheckV1(Map<String, String> params, String publicKey, String charset, String sign_type)
boolean flag = AlipaySignature.rsaCheckV1 (params,alipaypublicKey, "UTF-8","RSA2");
Java异步验签示例(证书)
//获取支付宝POST过来反馈信息
Map<String,String> params = new HashMap<String,String>();
Map requestParams = request.getParameterMap();
for (Iterator iter = requestParams.keySet().iterator(); iter.hasNext ();) {
String name = ( String )iter.next();
String[] values = (String[])requestParams.get(name);
String valueStr="";
for(int i = 0;i < values.length; i++){
valueStr = (i== values.length-1)?valueStr+values[i]:valueStr+values[i] + ",";
}
//乱码解决,这段代码在出现乱码时使用。
//valueStr = new String(valueStr.getBytes("ISO-8859-1"), "utf-8");
params.put(name,valueStr);
}
//切记alipayPublicCertPath是支付宝公钥证书路径,请去open.alipay.com对应应用下载。
//boolean AlipaySignature.rsaCertCheckV1(Map<String, String> params, String publicKeyCertPath, String charset,String signType)
boolean flag = AlipaySignature.rsaCertCheckV1(params,alipayPublicCertPath,"UTF-8","RSA2");
PHP异步验签示例
php语言公钥与公钥证书验签方法相同。 $aop = new AopClient; $aop->alipayrsaPublicKey = '请填写支付宝公钥/支付宝公钥证书路径'; $flag = $aop->rsaCheckV1($_POST, NULL, "RSA2");
C#异步验签示例
验签方法中 keyFromFile 必传 false,否则验签失败。
// 获 取 支 付 宝 POST 过 来 通 知 消 息 , 并 以 “参 数 名 = 参 数 值 ” 的 形 式 组 成 数 组
// request 回 来 的 信 息 组 成 的 数 组
public Dictionary<string,string> GetRequestPost()
{
int i = 0 ;
IDictionary<string,string> sArray = new IDictionary<string,string>();
NameValueCollection coll;
// Load Form variables into NameValueCollection variable .
coll = Request.Form ;
//Get names of all forms into a string array .
String[] requestItem = coll.AllKeys;
for (i = 0;i < requestItem.Length ; i++)
{
sArray.Add( requestItem[i], Request.Form[requestItem[i]]);
}
return sArray ;
}
// 切 记 alipaypublickey 是 支 付 宝 的 公 钥 , 请 去 open .alipay .com 对 应 应 用 下 查 看 。
// bool RSACheckV1 ( IDictionary < string , string > parameters , string alipaypublicKey , string charset , string signType , bool keyFromFile )
bool flag = AlipaySignature.RSACheckV1(GetRequestPost(),alipaypublicKey,"UTF-8","RSA2",false);
C#异步验签示例(证书)
// 获 取 支 付 宝 POST 过 来 通 知 消 息 , 并 以 “参 数 名 = 参 数 值 ” 的 形 式 组 成 数 组
// request 回 来 的 信 息 组 成 的 数 组
public Dictionary<string,string> GetRequestPost()
{
int i = 0 ;
IDictionary<string,string> sArray = new IDictionary<string,string>();
NameValueCollection coll;
// Load Form variables into NameValueCollection variable .
coll = Request.Form ;
//Get names of all forms into a string array .
String[] requestItem = coll.AllKeys;
for (i = 0;i < requestItem.Length ; i++)
{
sArray.Add( requestItem[i], Request.Form[requestItem[i]]);
}
return sArray ;
}
// 切 记 alipayPublicCertPath 是 支付宝公钥证书路径 , 请 去 open .alipay .com 对 应 应 用 下 查 看 。
// bool RSACheckV1 ( IDictionary < string , string > parameters , string alipayPublicCertPath , string charset , string signType)
bool flag = AlipaySignature.RSACertCheckV1(dics, alipayPublicCertPath, "UTF-8", "RSA2");
支付宝当前开放平台支持哪些权威 CA 签发的证书?
当前开放平台支持根 CA 列表:
| 机构名称 | 电子认证服务机构简称 | 证书主题名称 | 密钥算法 | 证书生效时间(GMT) | 证书失效时间(GMT) |
| 浙江蚂蚁小微金融服务集团股份有限公司 | 蚂蚁CA | Ant Financial Certification Authority R1 | RSA4096 | 2018/3/21 13:48 | 2038/2/28 13:48 |
| 中金金融认证中心有限公司 | CFCA | CFCA ACS CA | RSA4096 | 2015/9/23 3:24 | 2035/9/28 3:24 |
| 北京天威诚信电子商务服务有限公司 | 天威诚信 | iTrusChina Class 3 Root CA – G3 | RSA2048 | 2013/4/18 9:36 | 2033/4/18 9:36 |
| 北京天威诚信电子商务服务有限公司 | 天威诚信 | iTrusChina Class 2 Root CA – G3 | RSA2048 | 2013/4/18 9:39 | 2033/4/18 9:39 |
| 国家根 | ROOTCA | ROOTCA | SM2 | 2012/7/14 3:11 | 2042/7/7 3:11 |
使用公钥证书签名方式下,为什么请求参数中必须设置支付宝根证书 SN(alipay_root_cert_sn)?
对动态下载的支付宝公钥证执行的证书校验过程中需要使用到支付宝根证书。但公钥证书的变更有可能是由于根证书的变更导致,若根证书未更新,则会引起公钥证书更新失败,导致商家验签失败。为降低该风险,支付宝开放平台强制要求证书签名模式的商家同时携带当前使用的支付宝根证书 SN,开放平台可基于该根证书 SN 统计未及时更新支付宝根证书的商家。
支付宝使用公钥证书签名方式下,为什么开放平台网关的响应报文需要携带支付宝公钥证书 SN(alipay_cert_sn)?
开发者上传自己的应用公钥证书后,开放平台会为开发者应用自动签发支付宝公钥证书供开发者下载,用来对开放平台网关响应报文做验签。
但是支付宝公钥证书可能因证书到期或者变更 CA 签发机构等原因,可能会重新签发证书。在重新签发前,开放平台会在门户上提前提醒开发者支付宝应用公钥证书变更时间。
但为避免开发者因未能及时感知支付宝公钥证书变更而导致验签失败,开放平台提供了一种支付宝公钥证书无感知升级机制,具体流程如下:
支付宝使用公钥证书签名方式下,为什么请求参数中必须应用公钥证书 SN(app_cert_sn)?
当前开放平台支持两种签名模式:公钥模式、公钥证书模式,开放平台网关会根据请求参数中是否存在应用公钥证书 SN(app_cert_sn)来判断当前请求是使用公钥模式还是公钥证书模式。
若开发者选择了公钥证书签名模式,上传了应用公钥证书,并使用该公钥对应的私钥加签,但请求参数中未携带应用公钥证书 SN。开放平台网关收到请求后,会认为该请求使用公钥签名模式,将导致网关验签失败。
另外,开发者也一定要确保自己用来加签的私钥、请求参数中应用公钥证书 SN 的值、上传到开放平台的应用公钥证书必须是匹配的,否则网关会验签失败。
使用公钥证书签名方式下, 请求参数中需要携带应用公钥证书 SN(app_cert_sn)、支付宝根证书 SN(alipay_root_cert_sn),这里的 SN 是指什么?
这里的 SN 是指基于开放平台提供的计算规则,动态计算出来的公钥证书序列号,与 X.509 证书中内置的序列号(serialNumber)不同。具体的计算规则如下:
/**
* 获取证书序列号
* @param certPath X.509证书文件路径
* @return 返回证书序列号
* @throws AlipayApiException
*/
public static String getCertSN ( String certPath )
说明:开放平台支持开发者上传自己找第三方权威 CA 签发的证书,而证书文件中内置序列号只能保证同一家签发机构签发的证书不重复。所以不支持直接使用证书文件中内置的序列号。
老应用公钥证书如何更换成新公钥证书?、
开发者登录开放平台,在应用 加签方式 设置页面,选择 公钥证书 方式,再在该页面中通过 上传 CSR 文件在线生成证书 或 上传已申请证书 两种方式设置应用新应用公钥证书。详情可查看 开放平台证书升级指南。
注意:
上传新应用公钥证书后,开放平台将为老应用公钥证书保留 7 天有效期(若在这 7 天内老证书到期,以老证书自身过期时间点为准),超过 7 天后老证书将不可用。开发者务必在更新证书后 7 天时间内,更换接入开放平台网关代码中的应用公钥证书,否则 7 天后开放平台网关将验签失败。
原使用公钥签名方式的应用如何升级公钥证书签名方式?
开发者登录开放平台,在应用 加签方式 设置页面,选择 公钥证书 方式,再在该页面中通过 上传 CSR 文件在线生成证书 或 上传已申请证书 两种方式设置应用的公钥证书。详情可查看 开放平台证书升级指南。
注意:对于从 公钥 变更到 公钥证书 签名方式的应用,在变更 7 日内允许开发者撤销证书回退到 公钥 模式;变更一周后不允许再回退到原模式。开发者调用支付宝网关的代码也需要升级,否则变更 7 日后原来的 公钥 模式接入会被支付宝网关拦截而无法成功调用。
开放平台支持的公钥、公钥证书两种签名方式有什么区别?
在报文签名场景下,报文接受方使用发送方的公钥进行报文验签,该功能两种签名方式都可以实现。而证书签名方式的优势在于引入了 CA 机构对公钥持有者进行身份识别,保证该证书所属实体的真实性,以实现报文的抗抵赖。
支付宝开放平台 OpenAPI 网关接口和支付宝 mapi 网关接口签名处理上有何区别?
开放平台接口网关地址是 open.alipay.com,mapi 网关地址是 mapi.alipay.com。
签名专区描述的内容是针对 OpenAPI 网关接口的签名和验签方法。如果是 mapi 网关接口,签名规则有所区别,详情可查看 签名与验签。
和支付宝交换公钥是什么意思?
开发者私钥由开发者自行保管,把对应公钥提供给支付宝。相应的,支付宝提供自己的公钥给开发者,这称为交换公钥。
开发者使用开发者私钥对请求内容签名,支付宝收到请求后,会使用开发者公钥进行验签,验签通过证明信息来源可靠并且未篡改。
支付宝发送给开发者的数据中,支付宝也会使用自己的私钥进行签名。商家收到后,使用支付宝公钥验签,验签通过证明是支付宝发送的消息,并且未篡改。
支付宝什么是 RSA 算法?
RSA 签名算法是一种非对称算法,RSA 密钥包括公钥和私钥两部分,公钥是公开信息,私钥是保密信息。在开放平台,开发者的私钥由开发者自己保存;开发者的公钥可对外公开。私钥用于签名,公钥用于验签。开发者保存自己的私钥,并对发给支付宝的信息进行签名,支付宝通过使用开发者的公钥进行验签;(支付宝端类似),通过这种方式保证信息传输的完整性以及发送者身份的真实性。
支付宝RSA 签名涉及到的商家角色有哪些?
RSA 签名涉及到的商家角色分为支付宝账号管理者和技术人员,分别执行如下操作:
什么是第三方应用?
第三方应用 并不是实体的应用形式,而是系统服务商(ISV)代替商家签约和调用接口的一个载体。
ISV 通过创建 第三方应用 来代替没有开发能力的商家接入支付宝开放平台的多种业务能力(包括但不仅限于小程序、支付花呗、会员营销、信用服务、行业解决方案等),整体关系如下图所示:
ISV 通过创建第三方应用来帮助商家更好地服务其 C 端用户的过程,在开放平台被称为 服务, ISV 可以将自己的服务发布至服务市场,以供商家订购;当然 ISV 也可以通过自有渠道来推广自己的服务。
什么是auth_code?
临时授权码,一次有效,auth_code 有效期为 3 分钟到 24 小时(开放平台规则会根据具体的业务场景动态调整 auth_code 的有效期,但是不会低于 3 分钟,同时也不会超过 24 小时),超过有效期的 auth_code 即使未使用也将无法使用。用户的每次授权动作都会生成一个新的 auth_code。
详情可查看 获取会员信息。
相关调用接口:
• 前端:my.getAuthCode,获取用户授权码。
• 后端:alipay.system.oauth.token,换取授权访问令牌。
开发APP从一门开始www.yimenapp.com
APP打包:https://www.yimenapp.com/more.html
EXE打包:https://www.yimenapp.com/exe.html
商城APP:https://www.yimenapp.com/shop.html
IOS免签打包:https://www.yimenapp.com/iosmianqian.html
APP上架:https://www.yimenapp.com/iosup.html
APP软著申请:https://www.yimenapp.com/softpage.html
SSL申请:https://www.yimenapp.com/ssl.html
Discuz APP:https://www.yimenapp.com/discuz.html
教程汇总:https://www.yimenapp.com/jiaocheng.html
什么是app_auth_token?
app_auth_token 是系统服务商的第三方应用代商家的应用或小程序模板调用支付宝 OpenAPI 时所传入的授权凭证。
商家的应用成功授权给第三方应用后生成 app_auth_token。在没有重新授权的场景中,app_auth_token 的有效期是永久,重新授权后,以前的 app_auth_token 会失效。在调用接口时,传入 app_auth_token 即代表是第三方代调用接口场景;不传 app_auth_token 即代表是应用自调用接口场景。
详情可查看 ISV 发起授权邀请。
有关 app_auth_token 的获取可查看 第三方应用授权-使用 app_auth_code 换取 app_auth_token。
若遗忘 app_auth_token, 系统服务商(ISV)可在 开放平台控制台 > 第三方应用详情页 > 商家授权应用 页面快速查看已授权给当前第三方应用的应用的 app_auth_token。
开发APP从一门开始www.yimenapp.com
APP打包:https://www.yimenapp.com/more.html
EXE打包:https://www.yimenapp.com/exe.html
商城APP:https://www.yimenapp.com/shop.html
IOS免签打包:https://www.yimenapp.com/iosmianqian.html
APP上架:https://www.yimenapp.com/iosup.html
APP软著申请:https://www.yimenapp.com/softpage.html
SSL申请:https://www.yimenapp.com/ssl.html
Discuz APP:https://www.yimenapp.com/discuz.html
教程汇总:https://www.yimenapp.com/jiaocheng.html
什么是app_auth_code?
app_auth_code 是第三方应用用于换取 app_auth_token(授权令牌)的授权码。
在线下授权的业务场景中,商家成功将自己的应用授权给系统服务商(ISV)的第三方应用后,商家的界面会跳转至第三方应用设置的授权回调地址,在回调页面请求中会带上当次授权的授权码 app_auth_code 和 app_id,示例如下:
http://example.com/doc/toAuthPage.html?app_id=2015101400446982&app_auth_code=ca34ea491e7146cc87d25fca24c4cD11
系统服务商(ISV)解析出 app_auth_code 后,调用 alipay.open.auth.token.app(换取授权访问令牌接口),并在接口代码中通过传入 app_auth_code 来换取 app_auth_token 的授权码,app_auth_code 单个授权的有效期为 1 天(从生成 app_auth_code 开始的 24 小时)未被使用自动过期;批量授权的有效期为 10 分钟。
详情可查看 ISV 发起授权邀请。
开发APP从一门开始www.yimenapp.com
APP打包:https://www.yimenapp.com/more.html
EXE打包:https://www.yimenapp.com/exe.html
商城APP:https://www.yimenapp.com/shop.html
IOS免签打包:https://www.yimenapp.com/iosmianqian.html
APP上架:https://www.yimenapp.com/iosup.html
APP软著申请:https://www.yimenapp.com/softpage.html
SSL申请:https://www.yimenapp.com/ssl.html
Discuz APP:https://www.yimenapp.com/discuz.html
教程汇总:https://www.yimenapp.com/jiaocheng.html