1.打開(kāi)支付寶開(kāi)放平臺(tái),網(wǎng)址 https://open.alipay.com/platform/home.htm
直接用手機(jī)上的支付寶APP掃碼就可以登錄鳖藕,由于支付寶上已經(jīng)有個(gè)人信息,
所以完善信息時(shí)怨绣,非常方便牡肉。
登錄成功之后 點(diǎn)擊進(jìn)入我的平臺(tái)睬愤,點(diǎn)擊頂部的菜單欄里面有一個(gè)開(kāi)發(fā)者中心,
進(jìn)入開(kāi)發(fā)者中心之后劲蜻,在開(kāi)發(fā)服務(wù)里面有一個(gè)研發(fā)服務(wù)陆淀,點(diǎn)擊研發(fā)服務(wù),就可以進(jìn)入到
沙箱環(huán)境先嬉。如圖
2.看到上面界面之后轧苫,接下來(lái)只需要配置密鑰即可。官方推薦使用RSA2,我這里也是使用這種方式疫蔓。將鼠標(biāo)放在RSA2(SHA256)密鑰(推薦)旁邊的那個(gè)不知道什么顏色的小圓圈上含懊,會(huì)出現(xiàn)下面的場(chǎng)景
點(diǎn)擊生成方法,就跳轉(zhuǎn)到了密鑰生成的教程中鳄袍。我這里也把這個(gè)網(wǎng)址發(fā)給大家绢要,也可以用我這個(gè)網(wǎng)址,也能進(jìn)入密鑰生成教程中https://opendocs.alipay.com/open/291/105971
支付寶是提供了一個(gè)工具拗小,幫我們來(lái)生成密鑰重罪,里面也有在線(xiàn)調(diào)試API接口等功能,相當(dāng)好用哀九,根據(jù)自己的系統(tǒng)剿配,下載這個(gè)工具,安裝即可阅束。傻瓜式安裝呼胚。
接下來(lái)按照里面普通公鑰方式蝇更,生成應(yīng)用公鑰、私鑰即可呼盆。生成之后年扩,將公鑰,私鑰隨便保存在一個(gè)地方就行访圃。如果將來(lái)忘記了厨幻,可以重新生成。每次生成的公鑰和私鑰都是一對(duì),后續(xù)代碼中搭配使用即可(這里對(duì)單身狗造成一萬(wàn)點(diǎn)暴擊)况脆。
3.設(shè)置沙箱的密鑰饭宾。點(diǎn)擊RSA2(SHA256)密鑰(推薦) 哪一行里面的設(shè)置,會(huì)看到如下界面格了,選擇公鑰看铆,然后將上一步生成的復(fù)制粘貼到里面。點(diǎn)擊保存設(shè)置笆搓。
4.通過(guò)上一步性湿,根據(jù)應(yīng)用公鑰會(huì)生成一個(gè)支付寶公鑰,支付寶公鑰在代碼中要用满败,如圖
5.好了肤频,接下來(lái)我們就可以根據(jù)文檔,來(lái)寫(xiě)代碼了算墨。在沙箱應(yīng)用的那個(gè)界面宵荒,你往底下拉,就能看到一個(gè)表格净嘀,里面提供了沙箱可以調(diào)試的所有的功能报咳,我這里是選擇了電腦網(wǎng)站支付。如果找不到挖藏,我這里直接將該功能的入門(mén)文檔的網(wǎng)址發(fā)出來(lái)https://opendocs.alipay.com/open/270暑刃。我這里就不帶著大家看這個(gè)文檔了,直接上代碼了膜眠。
6.搭建一個(gè)SSM或者springBoot的項(xiàng)目岩臣,這個(gè)過(guò)程我就不寫(xiě)了,相信大家比我熟練宵膨。
我這里就只貼出支付部分的代碼了架谎。在pom文件中添加該依賴(lài)即可,也可以直接去maven依賴(lài)查詢(xún)里面辟躏,選擇自己想要的版本谷扣,我這是目前最新的版本
<dependency>
<groupId>com.alipay.sdk</groupId>
<artifactId>alipay-sdk-java</artifactId>
<version>4.9.124.ALL</version>
</dependency>
@RequestMapping("/test")
public void test(HttpServletResponse httpResponse) throws IOException {
/**
創(chuàng)建client對(duì)象 支付寶支付的工具對(duì)象
第一個(gè)參數(shù):支付寶網(wǎng)關(guān)URL,咱們是沙箱環(huán)境捎琐,所以在沙箱應(yīng)用那個(gè)界面里
有支付寶網(wǎng)關(guān)会涎,你把那個(gè)url復(fù)制過(guò)來(lái)
第二個(gè)參數(shù):APPID,在沙箱應(yīng)用那個(gè)界面里面也有瑞凑,復(fù)制過(guò)來(lái)
第三個(gè)參數(shù):私鑰末秃,把剛才生成的私鑰復(fù)制過(guò)來(lái)
第四個(gè)參數(shù):參數(shù)返回格式,這個(gè)參數(shù)目前只支持json
第五個(gè)參數(shù):編碼集拨黔,支持GBK或者UTF-8,這里根據(jù)你的實(shí)際編碼方式給蛔溃。
前后端要統(tǒng)一,要不然會(huì)簽名無(wú)效.
第六個(gè)參數(shù):支付寶公鑰篱蝇,從沙箱應(yīng)用界面里面贺待,
將剛才生成的支付寶公鑰復(fù)制過(guò)來(lái),別給錯(cuò)了零截,
是支付寶公鑰麸塞,不是應(yīng)用公鑰!!!!!!!
第七個(gè)參數(shù):簽名生成的算法類(lèi)型,我們剛才公鑰私鑰是通過(guò)RSA2涧衙,
所以這里寫(xiě)RSA2哪工,目前該參數(shù)只支持RSA和RSA2
*/
AlipayClient client = new DefaultAlipayClient(URL,
APPID,
APP_PRIVATE_KEY,
FORMAT,
CHARSET,
ALIPAY_PUBLIC_KEY,
SIGN_TYPE);
/*創(chuàng)建請(qǐng)求對(duì)象,使用的支付方式為 alipay.trade.page.pay弧哎,
所以類(lèi)型為AlipayTradePagePayRequest
*/
AlipayTradePagePayRequest request = new AlipayTradePagePayRequest();
/**
請(qǐng)求參數(shù)雁比,我這里只是寫(xiě)了必須的參數(shù),還有很多可選參數(shù)撤嫩,
可以從API列表中自己去看偎捎,這是網(wǎng)址
https://opendocs.alipay.com/apis/api_1/alipay.trade.page.pay/
*/
HashMap<String,String> reqParams = new HashMap<>();
//訂單號(hào)
reqParams.put("out_trade_no","1588067952561");
//訂單標(biāo)題
reqParams.put("subject","mjj");
//訂單價(jià)格
reqParams.put("total_amount","80");
//銷(xiāo)售產(chǎn)品碼,目前只支持FAST_INSTANT_TRADE_PAY
reqParams.put("product_code","FAST_INSTANT_TRADE_PAY");
//將map轉(zhuǎn)換為json字符串
String json = JSON.toJSONString(reqParams);
// System.out.println(json);
//將以上參數(shù)序攘,添加到request對(duì)象中
request.setBizContent(json);
//接收請(qǐng)求成功后的form表單茴她,字符串類(lèi)型
String form = "";
try {
//發(fā)送請(qǐng)求
AlipayTradePagePayResponse response = client.pageExecute(request);
//isSuccess方法用來(lái)判斷請(qǐng)求是否成功
//System.out.println(response.isSuccess());
//獲取到返回的form表單
form = response.getBody();
}catch (Exception e){
e.printStackTrace();
// return "error";
}
// System.out.println("aaaaaa:" + form);
//設(shè)置響應(yīng)字符集,一定要和client中保持一致
httpResponse.setCharacterEncoding(AliPayClientParams.CHARSET);
httpResponse.setContentType("text/html;charset=" + AliPayClientParams.CHARSET);
//將form返回前端程奠,支付寶那邊會(huì)自動(dòng)提交該表單丈牢,我們就能看到一個(gè)支付界面
httpResponse.getWriter().write(form); //直接將完整的表單html輸出到頁(yè)面
httpResponse.getWriter().flush();
httpResponse.getWriter().close();
}
在谷歌瀏覽器下,我這里是返回如下界面換成IE就好了瞄沙。
好了己沛,功能不難,就是得細(xì)心一點(diǎn)帕识。祝大家敲碼愉快泛粹。