多多色-多人伦交性欧美在线观看-多人伦精品一区二区三区视频-多色视频-免费黄色视屏网站-免费黄色在线

國內最全IT社區平臺 聯系我們 | 收藏本站
阿里云優惠2
您當前位置:首頁 > php開源 > 綜合技術 > Android 集成 支付寶

Android 集成 支付寶

來源:程序員人生   發布時間:2015-04-24 08:31:10 閱讀次數:6694次

1.到支付寶官網https://b.alipay.com/order/techService.htm?channel=psl下載(快捷支付(無線))開發包。將alipay-sdk-common文件夾下的alipaysdk.jar ,alipaysecsdk.jar,alipaysecsdk.jar 拷貝到工程的libs下。

2.支付寶集成
在技術集成之前,商戶需要在https://ms.alipay.com進行注冊,并簽約安全支付服務。簽約成功后可獲得支付寶分配的合作商戶ID(PartnerID),賬戶ID(SellerID),調用接口時使用。

支付細節的實現,主要通過支付寶提供的1個支付安全服務安裝包alipay_plugin_20120428msp.apk,首次使用,首先檢查是不是安裝此插件,沒有會提示安裝。具體的支付細節,在這個插件內完成。大部份的支付平臺也都是采取的這類方式。

調用支付寶的接口進行支付,主要有以下幾個步驟

  1. 將商戶ID,收款帳號,外部定單號,商品名稱,商品介紹,價格,通知地址封裝成定單信息

  2. 對定單信息進行簽名

  3. 將定單信息,簽名,簽名方式封裝成要求參數

  4. 調用pay方法。
    下面我們就從點擊支付按鈕開始:

ResultSingleBean rb6 = (ResultSingleBean) VolleyResponseHelper .jsonToBean(response, 43); if (rb6.getRetCode() == 0) { final PayDataBean bean = (PayDataBean) rb6.getRetObj(); new Thread() { public void run() { PayTask alipay = new PayTask(OrderDetailActivity.this); // 設置為沙箱模式,不設置默許為線上環境 // alipay.setSandBox(true); String result = alipay.pay(bean.getPayData()); Message msg = new Message(); msg.what = RQF_PAY; msg.obj = result; CommonUtils.logWrite("pay result1111111111",result); mHandler.sendMessage(msg); } }.start(); } else { CustomToast.showToast(rb6.getRetMessage(), OrderDetailActivity.this); } }

上面我將1些pay 方法需要的1些參數封裝到bean 當中,實際開發中這個bean中的數據最好去從服務器獲得,保證與支付寶平臺數據的同步。
我們現在來看1下 pay()需要的參數:
主要包括商戶的定單信息,key=”value”情勢,以&連接。 支付參數示例以下: partner=”2088101568358171”&seller_id=”xxx@alipay.com”&out_trade_no=”0819145 412⑹177”&subject=”商品名稱”&body=”商品詳情 “&total_fee=”0.01總金額”&notify_url=”http://notify.msp.hk/notify.htm用于通知服務器進行相干操作”&service=”mobile.securi typay.pay”&payment_type=”1”&_input_charset=”utf⑻”&it_b_pay=”30m”&sign=”lBBK %2F0w5LOajrMrji7DUgEqNjIhQbidR13GovA5r3TgIbNqv231yC1NksLdw%2Ba3JnfH XoXuet6XNNHtn7VE%2BeCoRO1O%2BR1KugLrQEZMtG5jmJIe2pbjm%2F3kb%2F uGkpG%2BwYQYI51%2BhA3YBbvZHVQBYveBqK%2Bh8mUyb7GM1HxWs9k4%3D “&sign_type=”RSA”

若調用成功返回結果示例以下:
resultStatus={9000};memo={};result={partner=”2088101568358171”&seller_id= “xxx@alipay.com”&out_trade_no=”0819145412⑹177”&subject=”測試”&body=”測試 測 試 “&total_fee=”0.01”&notify_url=”http://notify.msp.hk/notify.htm”&service=” mobile.securitypay.pay”&payment_type=”1”&_input_charset=”utf⑻”&it_b_pay= “30m”&success=”true”&sign_type=”RSA”&sign=”hkFZr+zE9499nuqDNLZEF7W75RFFPs ly876QuRSeN8WMaUgcdR00IKy5ZyBJ4eldhoJ/2zghqrD4E2G2mNjs3aE+HCLiBXrPDNdLKCZ gSOIqmv46TfPTEqopYfhs+o5fZzXxt34fwdrzN4mX6S13cr3UwmEV4L3Ffir/02RBVtU=”}

具體參數請參考剛剛下載的sdk所附文檔。

問了方便 我們將返回結果進行處理:

public class AliPayResult { static String str = "resultStatus={9000};memo={};result={partner="2088201363678709"&seller_id="2088201363678709"&out_trade_no="7078994"&subject="速普商城定單No:7078994"&body="0105041067 MOONY 尤妮佳 原裝進口嬰兒紙尿褲 L54片 *1"&total_fee="0.01"&notify_url="http%3a%2f%2fwww.supuy.com%2fbank%2fAlipay_MobileNotify_V2.aspx"&service="mobile.securitypay.pay"&payment_type="1"&_input_charset="utf-8"&it_b_pay="60m"&success="true"&sign_type="RSA"&sign="WxHHLaeqXcoyViBJyQV1a2+luhry9umGDLnjSX4HrcH6Q6Un75KJwIT1QAWnHcXrVOPcAT9xD8Sk923SjUkQRA0VDh29IPNA26FV+aaxV5yMyPP/kBF+oKiQy01LhQswTZDTF7k21SR2PNEdjXFnHzQJvzjthILbgJp7aEASwLM="}"; public static void main(String[] args) { AliPayResult result = new AliPayResult(str); result.getResult(); } private static final Map<String, String> sResultStatus; private String mResult; String resultStatus = null; String memo = null; String result = null; boolean isSignOk = false; public AliPayResult(String result) { this.mResult = result; } static { sResultStatus = new HashMap<String, String>(); sResultStatus.put("{9000}", "支付成功"); sResultStatus.put("{4000}", "系統異常"); sResultStatus.put("{4001}", "定單參數毛病"); sResultStatus.put("{6001}", "您已取消了本次定單的支付"); sResultStatus.put("{6002}", "網絡連接異常"); } /** * 獲得支付寶返回的支付狀態信息 * * @return */ public String getResult() { AliPayResultBean bean = Json2Bean(string2JSON(mResult, ";")); return sResultStatus.get(bean.getResultStatus()); } private AliPayResultBean Json2Bean(JSONObject json) { Gson gson = new Gson(); return gson.fromJson(json.toString(), AliPayResultBean.class); } public JSONObject string2JSON(String src, String split) { JSONObject json = new JSONObject(); try { String[] arr = src.split(split); for (int i = 0; i < arr.length; i++) { String[] arrKey = arr[i].split("="); json.put(arrKey[0], arr[i].substring(arrKey[0].length() + 1)); } } catch (Exception e) { e.printStackTrace(); } return json; } private String getContent(String src, String startTag, String endTag) { String content = src; int start = src.indexOf(startTag); start += startTag.length(); try { if (endTag != null) { int end = src.indexOf(endTag); content = src.substring(start, end); } else { content = src.substring(start); } } catch (Exception e) { e.printStackTrace(); } return content; } }

返回結果封裝:

public class AliPayResultBean extends BaseBean { /** * 狀態代碼 String 本次操作的狀態返回值,標 識本次調用的結果,參見 “11.2 客戶端毛病碼”。 不可空 9000 */ private String resultStatus; /** * 提示信息 String 保存參數,1般無內容。 可空 */ private String memo; /** * 本次操作 返回的結 果數據 本次操作返回的結果數據。 其中: &success="true"&sign_typ * e="RSA"&sign="xxx"之前 的部份為商戶的原始數據。 success用來標識本次支付 結果。 sign="xxx"為支付寶對本次 * 支付結果的簽名,商戶可以 使用簽約時支付寶提供的 公鑰進行驗證。 不可空 partner="2088101568358 * 171"&seller_id="alipay-te st09@alipay.com"&out_tr ade_no="0819145412⑹1 * 77"&subject="《暗黑破壞 神 3:凱恩之書》"&body=" 暴雪唯1官方授權中文版! 玩家必藏!附贈暗黑精致手 * 繪地圖!絕不單單是1本暗 黑的故事或畫冊,而是1 個栩栩如生的游戲再現。 是游戲玩家收藏的首選。 * "&total_fee="0.01"&notify _url="http%3A%2F%2Fn otify.msp.hk%2Fnotify.ht * m"&service="mobile.secu ritypay.pay"&payment_ty pe="1"&_input_charset=" * utf⑻"&it_b_pay="30m"&s how_url="m.alipay.com"& success="true"&sign_typ * e="RSA"&sign="hkFZr+z E9499nuqDNLZEF7W75 RFFPsly876QuRSeN8W * MaUgcdR00IKy5ZyBJ4el dhoJ/2zghqrD4E2G2mNj s3aE+HCLiBXrPDNdLKC * ZgSOIqmv46TfPTEqopYf hs+o5fZzXxt34fwdrzN4m X6S13cr3UwmEV4L3Ffir * /02RBVtU=" */ private String result; public String getResultStatus() { return resultStatus; } public void setResultStatus(String resultStatus) { this.resultStatus = resultStatus; } public String getMemo() { return memo; } public void setMemo(String memo) { this.memo = memo; } public String getResult() { return result; } public void setResult(String result) { this.result = result; } }

注意:
調用了支付服務以后,有兩種方式返回交易結果:

  1. 支付結果作為接口返回的字符串返回。返回的參數包括在result字符串中,具體再進行解析。

  2. 支付寶服務器通知。商戶需要提供1個http協議的接口,包括在參數里傳遞給安全支付,即notify_url。支付寶服務器在支付完成后,會用POST方法調用notufy_url,以xml為數據格式傳輸支付結果,然后支付寶回傳的參數修改定單狀態等操作。需要注意的是,商戶服務器收到支付寶發的通知以后,需要返回1個純字符串“success”,不然支付寶的服務器會延續調用7次回調url提供的接口。

生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關閉
程序員人生
主站蜘蛛池模板: 国产最新精品视频 | 亚洲精品aⅴ中文字幕乱码 亚洲精品h | 亚洲综合激情另类小说区 | 在线免费视频a | 久久亚洲欧美综合激情一区 | 春色视频网站 | 亚洲欧美激情在线 | 香蕉超级碰碰碰97视频在线观看 | 日本一二区视频 | 999精品久久久中文字幕蜜桃 | 国产精品一区二区不卡 | 国产欧美日韩精品高清二区综合区 | 欧美成人在线免费 | 琪琪五月天 | 久久免费大片 | 欧美一级高清片欧美国产欧美 | 中文字幕资源在线 | 最近的中文字幕大全免费版 | 岛国视频在线播放 | 欧美日韩一区二区三区四区在线观看 | 中国漂亮护士一级毛片 | 一级aa免费视频毛片 | 免费的禁片 | 国产性tv国产精品 | 美女福利视频国产片 | 欧美日本高清动作片www网站 | 欧美jizzjizz在线播放 | 欧美人与动性行为另类 | 国产一区亚洲二区三区毛片 | 亚洲小说图片 | 中文字幕18页 | 精品不卡 | 性欧美videos hd高清 | 国产日韩高清一区二区三区 | 亚洲精品第一综合99久久 | 成人在线视频国产 | 一级片 720p 一级片. | 国产精品日产三级在线观看 | 男女午夜爽爽大片免费 | 欧美偷 | 免费国产在线视频 |