最近在做個(gè)車輛認(rèn)證app,需要用到支付寶付款.前端使用H5,框架是react,后臺(tái)是java彻桃。app支付與普通網(wǎng)頁支付差別還是很大,我這里主要對于app支付做說明
1.讓財(cái)務(wù)開通支付寶賬號(hào)(需要企業(yè)稅號(hào),營業(yè)執(zhí)照,財(cái)務(wù)身份證,等信息)
2.開通之后由于一直麻煩財(cái)務(wù)操作不方便,讓財(cái)務(wù)登錄支付寶賬號(hào)后,將企業(yè)賬號(hào)設(shè)置成主賬號(hào),將自己的支付寶賬號(hào)設(shè)置為綁定企業(yè)的子賬號(hào)的開發(fā)管理員,方便后續(xù)操作
3.創(chuàng)建app應(yīng)用沪铭,該過程需要阿里審核,說是3天炕矮,我當(dāng)時(shí)2小時(shí)就通過了取董。
4.通過軟件生成公鑰,私鑰,創(chuàng)建app應(yīng)用的時(shí)候會(huì)有appid
5.導(dǎo)入支付寶jar,編寫后臺(tái)代碼,將加密后的一大串字符串返回給前端,前端用codva的支付寶插件,直接拼接這個(gè)字符串就可以調(diào)用支付寶了
6.支付寶上配置回調(diào)接口.
大致這么操作下面具體說明
1.申請支付寶賬號(hào)后登陸
2.如何設(shè)置開發(fā)者管理員
3.然后點(diǎn)擊頁面上的開發(fā)者中心,選中自己的
4.進(jìn)入之后查看app支付是否開通
如果要開通app應(yīng)用支付請點(diǎn)擊支付接入
支付寶網(wǎng)關(guān)是固定的,如果是沙箱環(huán)境就改成https://openapidev.alipay.com/gateway.do
如何生成私鑰公鑰,請點(diǎn)擊
5.java后端代碼編寫,當(dāng)前端調(diào)用后端接口后將后臺(tái)的訂單以及支付寶生成的url傳到前端俊庇,前端需要這個(gè)url調(diào)用支付寶接口
我遇到的坑
我按照上面3步,自己解析了一下午,終于完成了,然后無意中發(fā)現(xiàn)支付寶一個(gè)sdk一句話就完成了,不過這個(gè)過程中把md5加密,URLEncode編碼,java基礎(chǔ)練了下- -
public static void main(String[] args) {
//簽名方式
String sign_type="RSA2";
//編碼格式
String CHARSET="utf-8";
//正式環(huán)境支付寶網(wǎng)關(guān)狮暑,如果是沙箱環(huán)境需更改成https://openapi.alipaydev.com/gateway.do
String url="https://openapi.alipay.com/gateway.do";
//實(shí)例化客戶端
AlipayClient alipayClient = new DefaultAlipayClient(url, APP_ID, APP_PRIVATE_KEY, "json", CHARSET, ALIPAY_PUBLIC_KEY,sign_type);
//實(shí)例化具體API對應(yīng)的request類,類名稱和接口名稱對應(yīng),當(dāng)前調(diào)用接口名稱:alipay.trade.app.pay
AlipayTradeAppPayRequest request = new AlipayTradeAppPayRequest();
//SDK已經(jīng)封裝掉了公共參數(shù),這里只需要傳入業(yè)務(wù)參數(shù)辉饱。以下方法為sdk的model入?yún)⒎绞?model和biz_content同時(shí)存在的情況下取biz_content)搬男。
AlipayTradeAppPayModel model = new AlipayTradeAppPayModel();
model.setBody("我是測試數(shù)據(jù)");
model.setSubject("1");
//請保證OutTradeNo值每次保證唯一
model.setOutTradeNo("IQJZSRC1YMQB5HU");
model.setTimeoutExpress("30m");
model.setTotalAmount("0.01");
model.setProductCode("QUICK_MSECURITY_PAY");
request.setBizModel(model);
request.setNotifyUrl("你的回調(diào)地址");
try {
//這里和普通的接口調(diào)用不同,使用的是sdkExecute
AlipayTradeAppPayResponse response = alipayClient.sdkExecute(request);
System.out.println(response.getBody());//就是orderString 可以直接給客戶端請求彭沼,無需再做處理缔逛。
} catch (AlipayApiException e) {
e.printStackTrace();
}
}
另外看過一些相關(guān)有用的支付寶連接供參考:app支付寶服務(wù)端demo
app支付客戶端demo
異步回調(diào)通知
通知參數(shù)說明