先到微信開放平臺註冊帳號、經過開發者認證。php
建立應用,該應用也就是你的app,並提交審覈。java
審覈後,應用詳情下面有接口信息->微信支付->申請開通,並填寫申請微信支付的資料。json
審覈經過後,商戶將收到郵件通知,郵件中包含商戶號和登陸密碼,請牢記申請時填寫的郵箱地址。api
此時能夠輸入你的商戶號和登陸密碼登陸微信支付平臺,將可查看你建立的這個應用信息:裏面能夠查看和設置微信支付須要的api密鑰,也能夠查看到相應的appid和appsecret。微信
另外你也能夠看到你的其餘應用,可是api密鑰仍然是你建立的這個應用的,想要查看和修改其餘應用的api密鑰,須要使用建立其餘應用獲得的商戶號和密碼從新登陸以進行相應操做。app
注意:異步
微信異步通知url不支持帶參數的url,如異步通知地址寫爲http://xxxx.cn:8090/yyyy/weixinNotify.do?method=pay ,而實際將會向http://xxxx.cn:8090/yyyy/weixinNotify.do 這個地址發送異步通知。測試
文檔官方詳細連接:pay.weixin.qq.com/wiki/doc/ap…微信支付
先登陸支付寶企業帳戶(b.alipay.com)。產品大全->APP支付->當即接入。url
完善資料,等待審覈經過。
登陸支付寶開放平臺(open.alipay.com)。開發者中心->建立支付應用 審覈經過後便可。
點擊app,查看app信息:裏面能夠查看和設置接口加簽,設置應用公鑰和支付寶公鑰以及appid、appsecret。pid在服務市場->mapi網關產品密鑰中查看。
注意:
未上架App的支付接口應在b.alipay.com中進行申請,而且獲得的是【移動支付】接口字樣。不然應在open.alipay.com中進行申請,獲得的是【自助簽約-高級手機APP支付2.0 】接口字樣。另外注意,全部應用的支付寶公鑰都是同樣的。
因爲之前是移動支付,如今新版叫作APP支付,所以之前的demo,參數生成等均不可用了,而如今生成APP支付訂單信息,應使用以下代碼:
//實例化客戶端
AlipayClient alipayClient = new DefaultAlipayClient("https://openapi.alipay.com/gateway.do",APP_ID, APP_PRIVATE_KEY, "json", CHARSET, ALIPAY_PUBLIC_KEY, "RSA2");
//實例化具體API對應的request類,類名稱和接口名稱對應,當前調用接口名稱:alipay.trade.app.pay
AlipayTradeAppPayRequest request = new AlipayTradeAppPayRequest();
//SDK已經封裝掉了公共參數,這裏只須要傳入業務參數。如下方法爲sdk的model入參方式(model和biz_content同時存在的狀況下取biz_content)。
AlipayTradeAppPayModel model = new AlipayTradeAppPayModel();
model.setBody("我是測試數據");
model.setSubject("App支付測試Java");
model.setOutTradeNo(outtradeno);
model.setTimeoutExpress("30m");
model.setTotalAmount("0.01");
model.setProductCode("QUICK_MSECURITY_PAY");
request.setBizModel(model);
request.setNotifyUrl("商戶外網能夠訪問的異步地址");
try {
//這裏和普通的接口調用不一樣,使用的是sdkExecute
AlipayTradeAppPayResponse response = alipayClient.sdkExecute(request);
//就是orderString 能夠直接給客戶端請求,無需再作處理。
System.out.println(response.getBody());
} catch (AlipayApiException e) {
e.printStackTrace();
}
複製代碼
同理,異步通知應使用:
//獲取支付寶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, charset, "RSA")
複製代碼
須要用到的Jar:commons-logging-1.1.1.jar
、alipay-sdk-java20170511115337.jar
文檔官方詳細連接: doc.open.alipay.com/docs/doc.ht…