App接入支付宝
閑得蛋疼接了一個(gè)坑死人的項(xiàng)目,,其中有一塊涉及到支付寶即時(shí)到賬服務(wù),本來想使用第三方提供的服務(wù),然而為了安全考慮,使用阿里提供的sdk自己開發(fā)接口
首先申請(qǐng)支付寶賬號(hào),順便入駐開放平臺(tái),申請(qǐng)賬號(hào)完畢后,直接找到沙箱環(huán)境
在這個(gè)地方,用到的就是APP ID和支付寶的RSA2公鑰,看到這個(gè)地方,接下來我們需要的就是支付寶的密鑰了,,為了方便,直接下載支付寶提供的工具h(yuǎn)ttps://os.alipayobjects.com/...
直接這樣生成就好了,然后將公鑰提交到沙箱的公鑰里,然后就搞定了,,私鑰自己保留好,,這樣就配置的差不多了
然后,下載php的sdk https://openhome.alipay.com/d...
下載完成后放到服務(wù)器上,由于阿里給的文檔不夠完善,,我看源碼找了好久,而且此前沒有接觸此類開發(fā),,遇到了不少麻煩,這里直接記錄下
注意的是上面的是支付寶公鑰,,不是應(yīng)用公鑰,網(wǎng)關(guān)不用配置,這個(gè)只是提供一個(gè)思路,具體實(shí)現(xiàn)就不放出來了
服務(wù)器端大體就這樣,返回值如下
服務(wù)器到這里就差不多了,安卓端的搭建就直接使用官方的demo修改,
所需要的目錄結(jié)構(gòu)就是這樣了,然后直接調(diào)用接口就可以了,代碼如下:
public void payV2(View v) {final String[] res = {""};new Thread(){@Overridepublic void run() {super.run();try {URL url = new URL("http://192.168.137.149/api/");HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();urlConnection.setRequestMethod("GET");urlConnection.setConnectTimeout(6*1000);if(urlConnection.getResponseCode()==200){BufferedReader reader = new BufferedReader(new InputStreamReader(urlConnection.getInputStream()));String line = "";while ((line = reader.readLine())!=null ){res[0] +=line;}Log.i("訂單獲取", res[0]);Runnable payRunnable = new Runnable() {@Overridepublic void run() {PayTask alipay = new PayTask(PayDemoActivity.this);Map<String, String> result = alipay.payV2(res[0], true);Log.i("msp", result.toString());Message msg = new Message();msg.what = SDK_PAY_FLAG;msg.obj = result;mHandler.sendMessage(msg);}};Thread payThread = new Thread(payRunnable);EnvUtils.setEnv(EnvUtils.EnvEnum.SANDBOX);payThread.start();}} catch (MalformedURLException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}}}.start();}當(dāng)然,這只是最簡單的使用,到這個(gè)地方就基本完成了,不過這個(gè)是使用的服務(wù)器預(yù)設(shè)的訂單信息,實(shí)際應(yīng)用中,應(yīng)該用客戶端傳遞數(shù)據(jù)過去,服務(wù)器返回加簽的訂單信息,然后客戶端調(diào)用sdk支付,最后支付寶服務(wù)器,通知app服務(wù)器,最后修改訂單狀態(tài)
總結(jié)
- 上一篇: VS2013找不到winres.h的解决
- 下一篇: Common sql statement