W3Cschool
恭喜您成為首批注冊(cè)用戶
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
插件不能獨(dú)立運(yùn)行,必須依附在其他的主體小程序上。目前插件背后對(duì)應(yīng)一個(gè)三方應(yīng)用,當(dāng)插件需要獲取商戶擁有的支付寶能力的時(shí)候,必須代商戶調(diào)用支付寶接口,所以插件服務(wù)端最重要的概念就是 代調(diào)用。
插件服務(wù)端開(kāi)發(fā)需要下載支付寶服務(wù)端SDK。
app_auth_token:第三方應(yīng)用授權(quán)獲取的 token,用于 ISV 代商戶發(fā)起請(qǐng)求。
當(dāng)商家訂購(gòu)插件時(shí),會(huì)授權(quán)三方應(yīng)用行使代調(diào)用權(quán)限,app_auth_token 回調(diào)發(fā)送給插件所屬三方應(yīng)用的網(wǎng)關(guān)。在聯(lián)調(diào)獲取 app_auth_token 前,必須配置完成 應(yīng)用網(wǎng)關(guān)、授權(quán)回調(diào)地址。
app_auth_token 回調(diào)以下信息發(fā)送網(wǎng)關(guān):
在配置完成 應(yīng)用網(wǎng)關(guān)、授權(quán)回調(diào)地址 后,增加或刪除應(yīng)用功能包,都會(huì)推送最新的 app_auth_token 給插件服務(wù)端,采用這種方式可以驗(yàn)證模擬商戶訂購(gòu)插件回調(diào) app_auth_token 的過(guò)程。
方法一:商家訂購(gòu)插件,app_auth_token 回調(diào)發(fā)送給插件所屬三方應(yīng)用的應(yīng)用網(wǎng)關(guān)。
方法二:在第三方應(yīng)用的 商家授權(quán)應(yīng)用 > 插件授權(quán)應(yīng)用 中查找對(duì)應(yīng)的 app_auth_token。
auth_token:用戶信息授權(quán)獲取的token,用于獲取用戶信息。
使用插件用戶授權(quán),獲取用戶的 auth_code,再換取 auth_token。
獲取 auth_code 詳情請(qǐng)參考 用戶授權(quán)。
//三方應(yīng)用開(kāi)發(fā)者私鑰,由開(kāi)發(fā)者自己生成 參考 https://docs.open.alipay.com/200/105310#s2
String appPrivateKey = "MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCKnImlg1tZYi4UBFwk3A4L3LjuAy";
//支付寶公鑰,由支付寶生成
String alipayPublicKey = "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA4r6vW";
String format = "json";
String charset = "UTF-8";
String signType = "RSA2"; //商戶生成簽名字符串所使用的簽名算法類型,目前支持RSA2和RSA,推薦使用RSA2
String serverUrl = "https://openapi.alipay.com/gateway.do";
String appId = "2018071660683196"; //三方應(yīng)用id 保證應(yīng)用已經(jīng)上線了
String appAuthToken = "1cc19911172e4f8aaa509c8fb5d12F56"; //商戶授權(quán)token https://docs.open.alipay.com/20160728150111277227/intro
String authCode = "bc95009acbe1401cabec35cece99SC12"; // 用戶授權(quán)碼
AlipayClient alipayClient = new DefaultAlipayClient(serverUrl, appId, appPrivateKey, format, charset, alipayPublicKey, signType);
try {
AlipaySystemOauthTokenRequest request = new AlipaySystemOauthTokenRequest();
request.setGrantType("authorization_code");
request.setCode(authCode);
AlipaySystemOauthTokenResponse response = alipayClient.execute(request, null, appAuthToken);
System.out.println(response.getAccessToken());
} catch (AlipayApiException e) {
e.printStackTrace();
}
簡(jiǎn)單說(shuō)代調(diào)用獲取用戶信息,是利用 app_id(三方應(yīng)用id) + app_auth_token+access_token 調(diào)用接口獲取用戶信息。
//三方應(yīng)用開(kāi)發(fā)者私鑰,由開(kāi)發(fā)者自己生成 參考 https://docs.open.alipay.com/200/105310#s2
String appPrivateKey = "MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCKnImlg1tZYi4UBFwk3A4L3LjuAy";
//支付寶公鑰,由支付寶生成
String alipayPublicKey = "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA4r6vW";
String format = "json";
String charset = "UTF-8";
String signType = "RSA2"; //商戶生成簽名字符串所使用的簽名算法類型,目前支持RSA2和RSA,推薦使用RSA2
String serverUrl = "https://openapi.alipay.com/gateway.do";
String appId = "2018071660683196"; //三方應(yīng)用id 保證應(yīng)用已經(jīng)上線了
String appAuthToken = "1cc19911172e4f8aaa509c8fb5d12F56"; //商戶授權(quán)token https://docs.open.alipay.com/20160728150111277227/intro
String accessToken = "22c19911172e4f8aaa509c8fb5d12F56"; //用戶授權(quán)token
AlipayClient alipayClient = new DefaultAlipayClient(serverUrl, appId, appPrivateKey, format, charset, alipayPublicKey, signType);
try {
AlipayUserInfoShareRequest request = new AlipayUserInfoShareRequest();
AlipayUserInfoShareResponse response = alipayClient.execute(request, accessToken, appAuthToken);
response.getUserId();
response.getUserName();
} catch (AlipayApiException e) {
e.printStackTrace();
}
Copyright©2021 w3cschool編程獅|閩ICP備15016281號(hào)-3|閩公網(wǎng)安備35020302033924號(hào)
違法和不良信息舉報(bào)電話:173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號(hào)
聯(lián)系方式:
更多建議: