螞蟻金服支付寶開發(fā)文檔——第三方應(yīng)用授權(quán)

2018-01-06 19:29 更新

概述

  1. 商戶對開發(fā)者進(jìn)行應(yīng)用授權(quán)后,開發(fā)者可以幫助商戶完成相應(yīng)的業(yè)務(wù)邏輯,例如代替商戶發(fā)起當(dāng)面付的收單請求。

  1. 授權(quán)采用標(biāo)準(zhǔn)的OAuth 2.0流程。

  1. 要進(jìn)行第三方調(diào)用,開發(fā)者需要在應(yīng)用中添加對應(yīng)功能并獲得商戶授權(quán),商戶需要申請開通相應(yīng)的權(quán)限(例如對于當(dāng)面付,開發(fā)者只需在應(yīng)用中添加“當(dāng)面付”功能并獲得商戶授權(quán),商戶則需要開通“當(dāng)面付”產(chǎn)品,之后開發(fā)者就可以幫助商戶發(fā)起當(dāng)面付的收單請求)。

TIPS:針對使用條件是“無”的功能(使用條件可在應(yīng)用詳情頁的功能信息頁查看),只需要開發(fā)者在應(yīng)用中添加對應(yīng)功能,并獲得商戶授權(quán)即可(例如“支付寶卡券”)

授權(quán)流程

螞蟻金服支付寶開發(fā)文檔

快速接入

第一步:創(chuàng)建應(yīng)用

要在您的應(yīng)用中使用支付寶開放產(chǎn)品的接口能力,您需要先去螞蟻金服開放平臺(open.alipay.com ),在開發(fā)者中心中創(chuàng)建登記您的應(yīng)用,并提交審核,審核通過后會為您生成應(yīng)用唯一標(biāo)識(APPID),并且可以申請開通開放產(chǎn)品使用權(quán)限,通過APPID您的應(yīng)用才能調(diào)用開放產(chǎn)品的接口能力。需要詳細(xì)了解開放平臺創(chuàng)建應(yīng)用步驟請參考《開放平臺應(yīng)用創(chuàng)建指南 》。

第二步:配置密鑰

開發(fā)者調(diào)用接口前需要先生成RSA密鑰,RSA密鑰包含應(yīng)用私鑰(APP_PRIVATE_KEY)、應(yīng)用公鑰(APP_PUBLIC_KEY)。生成密鑰后在開放平臺開發(fā)者中心進(jìn)行密鑰配置,配置完成后可以獲取支付寶公鑰(ALIPAY_PUBLIC_KEY)。詳情請參考《配置應(yīng)用環(huán)境 》。

第三步:應(yīng)用授權(quán)URL拼裝

拼接規(guī)則:

https://openauth.alipay.com/oauth2/appToAppAuth.htm?app_id=2015101400446982&redirect_uri=http%3A%2F%2Fexample.com

TIPS:沙箱拼接規(guī)則詳見關(guān)于沙箱

參數(shù)說明

參數(shù) 參數(shù)名稱 類型 必填 描述 范例
app_id 開發(fā)者應(yīng)用的AppId String 開發(fā)者應(yīng)用的AppId 2015101400446982
redirect_uri 回調(diào)頁面 String 參數(shù)需要UrlEncode http%3A%2F%2Fexample.com

TIPS:授權(quán)鏈接中配置的redirect_uri內(nèi)容需要與應(yīng)用中配置的授權(quán)回調(diào)地址完全一樣,否則無法正常授權(quán)。

使用場景舉例

商戶使用開發(fā)者提供的應(yīng)用授權(quán)鏈接在PC端進(jìn)行應(yīng)用授權(quán)

螞蟻金服支付寶開發(fā)文檔

商戶使用開發(fā)者提供的應(yīng)用授權(quán)鏈接在手機(jī)端進(jìn)行應(yīng)用授權(quán)

螞蟻金服支付寶開發(fā)文檔

:H5授權(quán)頁只能在支付寶錢包里使用,否則會報(bào)錯,如下:

螞蟻金服支付寶開發(fā)文檔

第四步:獲取app_auth_code

商戶授權(quán)成功后,pc或者錢包客戶端會跳轉(zhuǎn)至開發(fā)者定義的回調(diào)頁面(即redirect_uri參數(shù)對應(yīng)的url),在回調(diào)頁面請求中會帶上當(dāng)次授權(quán)的授權(quán)碼app_auth_code和開發(fā)者的app_id,示例如下:

http://example.com/doc/toAuthPage.html?app_id=2015101400446982&app_auth_code=ca34ea491e7146cc87d25fca24c4cD11

第五步:使用app_auth_code換取app_auth_token

接口名稱:alipay.open.auth.token.app

開發(fā)者通過app_auth_code可以換取app_auth_token、授權(quán)商戶的userId以及授權(quán)商戶AppId。

注意:應(yīng)用授權(quán)的app_auth_code唯一的;app_auth_code使用一次后失效,一天(從生成app_auth_code開始的24小時(shí))未被使用自動過期; app_auth_token有效期為365天,刷新后重新計(jì)時(shí)。

請求參數(shù)說明

參數(shù) 參數(shù)名稱 類型 必填 描述 范例
grant_type 授權(quán)類型 String 如果使用app_auth_code換取token,則為authorization_code,如果使用refresh_token換取新的token,則為refresh_token authorization_code
code 授權(quán)碼 String 與refresh_token二選一,用戶對應(yīng)用授權(quán)后得到,即第一步中開發(fā)者獲取到的app_auth_code值 bf67d8d5ed754af297f72cc482287X62
refresh_token 刷新令牌 String 與code二選一,可為空,刷新令牌時(shí)使用 201510BB0c409dd5758b4d939d4008a525463X62

接口請求示例: 請先閱讀SDK接入說明

AlipayClient alipayClient = new DefaultAlipayClient("https://openapi.alipay.com/gateway.do", APP_ID, APP_PRIVATE_KEY, "json", CHARSET, ALIPAY_PUBLIC_KEY, "RSA2");
AlipayOpenAuthTokenAppRequest request = new AlipayOpenAuthTokenAppRequest();
request.setBizContent("{" +
"    \"grant_type\":\"authorization_code\"," +
"    \"code\":\"1cc19911172e4f8aaa509c8fb5d12F56\"" +
"  }");
AlipayOpenAuthTokenAppResponse response = alipayClient.execute(request);

同步響應(yīng)參數(shù)說明

參數(shù) 參數(shù)名稱 類型 必填 描述 范例
app_auth_token 商戶授權(quán)令牌 String 通過該令牌來幫助商戶發(fā)起請求,完成業(yè)務(wù) 201510BBaabdb44d8fd04607abf8d5931ec75D84
user_id 授權(quán)商戶的ID String 授權(quán)者的PID 2088011177545623
auth_app_id 授權(quán)商戶的AppId String 授權(quán)商戶的AppId(如果有服務(wù)窗,則為服務(wù)窗的AppId) 2013111800001989
expires_in 令牌有效期 Number 交換令牌的有效期,單位秒,換算成天的話為365天 31536000
re_expires_in 刷新令牌有效期 Number 刷新令牌有效期,單位秒,換算成天的話為372天 32140800
app_refresh_token 刷新令牌時(shí)使用 String 刷新令牌后,我們會保證老的app_auth_token從刷新開始10分鐘內(nèi)可繼續(xù)使用,請及時(shí)替換為最新token 201510BB09dece3ea7654531b66bf9f97cdceE67

同步響應(yīng)結(jié)果示例

{
    "alipay_open_auth_token_app_response": {
        "code": "10000",
        "msg": "Success",
        "app_auth_token": "201510BBb507dc9f5efe41a0b98ae22f01519X62",
        "app_refresh_token": "201510BB0c409dd5758b4d939d4008a525463X62",
        "auth_app_id": "2013111800001989",
        "expires_in": 31536000,
        "re_expires_in": 32140800,
        "user_id": "2088011177545623"
    },
    "sign": "TR5xJkWX65vRjwnNNic5n228DFuXGFOCW4isWxx5iLN8EuHoU2OTOeh1SOzRredhnJ6G9eOXFMxHWl7066KQqtyxVq2PvW9jm94QOuvx3TZu7yFcEhiGvAuDSZXcZ0sw4TyQU9+/cvo0JKt4m1M91/Quq+QLOf+NSwJWaiJFZ9k="
}

注意:

  1. 在授權(quán)過程中,建議在拼接授權(quán)url的時(shí)候,開發(fā)者可增加自己的一個自定義信息,便于知道是哪個商戶授權(quán)。
  2. 開發(fā)者代替商戶發(fā)起請求時(shí)請務(wù)必帶上app_auth_token,否則支付寶將認(rèn)為是本應(yīng)用替自己發(fā)起的請求。請注意app_auth_tokenPOST請求參數(shù),不是biz_content的子參數(shù);在SDK中帶上app_auth_token代碼示例
    request.putOtherTextParam("app_auth_token", "201611BB888ae9acd6e44fec9940d09201abfE16");
  3. 開發(fā)者代替商戶發(fā)起請求時(shí),POST公共請求參數(shù)中的app_id應(yīng)填寫開發(fā)者的app_id;如果業(yè)務(wù)參數(shù)biz_content中需要AppId,則應(yīng)填寫商戶的AppId。

查詢授權(quán)信息

接口名稱:alipay.open.auth.token.app.query

當(dāng)商戶把服務(wù)窗、店鋪等接口的權(quán)限授權(quán)給ISV之后,支付寶會給ISV頒發(fā)一個app_auth_token。如若授權(quán)成功之后,ISV想知道用戶的授權(quán)信息,如授權(quán)者、授權(quán)接口列表等信息,可以調(diào)用本接口查詢某個app_auth_token對應(yīng)的授權(quán)信息。

請求參數(shù)說明

參數(shù) 參數(shù)名稱 類型 必填 描述 范例
app_auth_token 商戶授權(quán)令牌 String 通過該令牌來幫助商戶發(fā)起請求,完成業(yè)務(wù) 201510BBaabdb44d8fd04607abf8d5931ec75D84

接口請求示例: 請先閱讀SDK接入說明

AlipayClient alipayClient = new DefaultAlipayClient("https://openapi.alipay.com/gateway.do", APP_ID, APP_PRIVATE_KEY, "json", CHARSET, ALIPAY_PUBLIC_KEY, "RSA2");
AlipayOpenAuthTokenAppQueryRequest request = new AlipayOpenAuthTokenAppQueryRequest();
request.setBizContent("{" +
"    \"app_auth_token\":\"201509BBeff9351ad1874306903e96b91d248A36\"" +
"  }");
AlipayOpenAuthTokenAppQueryResponse response = alipayClient.execute(request);

同步響應(yīng)參數(shù)說明

參數(shù) 參數(shù)名稱 類型 必填 描述 范例
user_id 授權(quán)商戶的ID String 授權(quán)者的PID 2088011177545623
auth_app_id 授權(quán)商戶的AppId String 授權(quán)商戶的AppId(如果有服務(wù)窗,則為服務(wù)窗的AppId) 2013111800001989
expires_in 令牌有效期 Number 交換令牌的有效期,單位秒,換算成天的話為365天 31536000
auth_methods 授權(quán)接口列表 String 當(dāng)前app_auth_token的授權(quán)接口列表 "alipay.open.auth.token.app.query","alipay.system.oauth.token","alipay.open.auth.token.app"
auth_start 授權(quán)生效時(shí)間 Date 當(dāng)前app_auth_token的授權(quán)生效時(shí)間 2015-11-03 01:59:57
auth_end 授權(quán)失效時(shí)間 Date 當(dāng)前app_auth_token的授權(quán)失效時(shí)間 2016-11-03 01:59:57
status 狀態(tài) String valid:有效狀態(tài);invalid:無效狀態(tài) valid

同步響應(yīng)結(jié)果示例

{
"alipay_open_auth_token_app_query_response":{
"auth_app_id":"2013121100055554",
"auth_end":"2016-11-03 01:59:57",
"auth_methods":[
"\"alipay.open.auth.token.app.query\"",
"\"alipay.system.oauth.token\"",
"\"alipay.open.auth.token.app\""
],
"auth_start":"2015-11-03 01:59:57",
"code":"10000",
"expires_in":31536000,
"msg":"Success",
"status":"valid",
"user_id":"2088102150527498"
}
}

SDK接入說明

1、下載服務(wù)端SDK 為了幫助開發(fā)者調(diào)用開放接口,我們提供了開放平臺服務(wù)端SDK ,包含JAVA、PHP和.NET三個語言版本,封裝了簽名&驗(yàn)簽、HTTP接口請求等基礎(chǔ)功能。請先下載對應(yīng)語言版本的SDK并引入您的開發(fā)工程。

各語言版本服務(wù)端SDK詳細(xì)使用說明,請參考《服務(wù)端SDK說明 》。

2、接口調(diào)用配置

AlipayClient alipayClient = new DefaultAlipayClient(URL, APP_ID, APP_PRIVATE_KEY, FORMAT, CHARSET, ALIPAY_PUBLIC_KEY, SIGN_TYPE);

關(guān)鍵參數(shù)說明:

配置參數(shù) 示例值解釋 獲取方式/示例值
URL 支付寶網(wǎng)關(guān)(固定) https://openapi.alipay.com/gateway.do
APPID APPID 即創(chuàng)建應(yīng)用后生成 獲取見上面創(chuàng)建應(yīng)用并獲取APPID 
APP_PRIVATE_KEY 開發(fā)者私鑰,由開發(fā)者自己生成 獲取詳見上面配置密鑰 
FORMAT 參數(shù)返回格式,只支持json json(固定)
CHARSET 編碼集,支持GBK/UTF-8 開發(fā)者根據(jù)實(shí)際工程編碼配置
ALIPAY_PUBLIC_KEY 支付寶公鑰,由支付寶生成 獲取詳見上面配置密鑰 
SIGN_TYPE 商戶生成簽名字符串所使用的簽名算法類型,目前支持RSA2和RSA,推薦使用RSA2 RSA2

3.接口調(diào)用

接口調(diào)用示例大致分為3步:

  1. 拼裝業(yè)務(wù)參數(shù)
  2. 將參數(shù)發(fā)送給開放平臺服務(wù)端
  3. 獲取開放平臺服務(wù)端返回值,并進(jìn)行具體業(yè)務(wù)處理

關(guān)于沙箱

如何接入沙箱

沙箱是開放平臺提供給開發(fā)者用戶調(diào)試接口的環(huán)境,具體操作步驟見沙箱接入指南 。

第三方應(yīng)用授權(quán)沙箱接入注意點(diǎn)

1、第三方應(yīng)用授權(quán)支持沙箱接入;在沙箱調(diào)通接口后,必須在線上進(jìn)行測試與驗(yàn)收,所有返回碼及業(yè)務(wù)邏輯以線上為準(zhǔn);

2、第三方應(yīng)用授權(quán)的拼接規(guī)則為:https://openauth.alipaydev.com/oauth2/appToAppAuth.htm?app_id=APPID&redirect_uri=REDIRECT_URI

3、授權(quán)時(shí)使用商戶賬號進(jìn)行授權(quán),不要使用買家賬號授權(quán);

授權(quán)API列表

序號 接口英文名 接口中文名 API文檔
1 alipay.open.auth.token.app 換取應(yīng)用授權(quán)令牌接口 查看文檔 
2 alipay.open.auth.token.app.query 查詢某個應(yīng)用授權(quán)AppAuthToken的授權(quán)信息接口 查看文檔 

本接口及文檔資料由開放平臺提供。您使用本接口,需要遵守開放平臺相關(guān)協(xié)議及開放平臺要求。

以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號