1.客戶端代碼得到用戶購(gòu)買的商品信息,將之傳給自己公司app服務(wù)器,參數(shù)包含但不限于以下:

站在用戶的角度思考問題,與客戶深入溝通,找到龍巖網(wǎng)站設(shè)計(jì)與龍巖網(wǎng)站推廣的解決方案,憑借多年的經(jīng)驗(yàn),讓設(shè)計(jì)與互聯(lián)網(wǎng)技術(shù)結(jié)合,創(chuàng)造個(gè)性化、用戶體驗(yàn)好的作品,建站類型包括:成都網(wǎng)站設(shè)計(jì)、成都網(wǎng)站制作、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣、域名與空間、網(wǎng)站空間、企業(yè)郵箱。業(yè)務(wù)覆蓋龍巖地區(qū)。
params.put("appid", appID);// 微信appid,選擇性上傳,服務(wù)器寫死亦可
params.put("money", money);// 支付金額,單位:分
params.put("name", goodsName);// 商品名稱
params.put("currencytype", "CNY");// 支付幣種,只能填CNY,代表人民幣12341234
備注:以上是參數(shù)字段是我們公司服務(wù)器定義,給服務(wù)器用以獲取預(yù)支付訂單號(hào)prePayId用。
備注2:詳細(xì)字段請(qǐng)參考:
2.app服務(wù)器調(diào)用微信“統(tǒng)一下單”接口,得到prePayId訂單號(hào)并返回prePayId給手機(jī)客戶端;
3.手機(jī)客戶端使用prePayId及商品信息調(diào)起微信客戶端進(jìn)行支付;
3.1用戶操作:輸入密碼進(jìn)行支付;返回鍵取消支付;網(wǎng)絡(luò)無連接支付失敗等;
4.微信客戶端回調(diào)支付結(jié)果給咱們的APP客戶端;
5.微信服務(wù)器異步通知咱們公司app服務(wù)器支付結(jié)果(服務(wù)器的工作,與客戶端無關(guān))
這個(gè)其實(shí)很簡(jiǎn)單的,demo文檔寫得很詳細(xì),直接上代碼吧:
/**
* 獲取sign簽名
*
* @return
*/
private String genPayReq() {
// 獲取參數(shù)的值
PayReq request = new PayReq();
request.appId = ConstantsMember.APP_ID;
request.partnerId = ConstantsMember.MCHID;
request.prepayId = mPrepayId;
request.packageValue = "Sign=WXPay";
request.nonceStr = DataUtil.getGuid();
request.timeStamp = DataUtil.getTimeStamp();
// 把參數(shù)的值傳進(jìn)去SortedMap集合里面
SortedMapObject, Object parameters = new TreeMapObject, Object();
// {appid=wx34df375d7dae8c90, noncestr=3BF34EF2CA4A462DB8D4EA48E785CDC3,
// package=Sign=WXPay, partnerid=1349967601,
// prepayid=wx2016070910354542c7155d4e0846850809, timestamp=1468031760}
parameters.put("appid", request.appId);
parameters.put("noncestr", request.nonceStr);
parameters.put("package", request.packageValue);
parameters.put("partnerid", request.partnerId);
parameters.put("prepayid", request.prepayId);
parameters.put("timestamp", request.timeStamp);
String characterEncoding = "UTF-8";
String mySign = createSign(characterEncoding, parameters);
System.out.println("我的簽名是:" + mySign);
return mySign;
}
/**
* 微信支付簽名算法sign
*
* @param characterEncoding
* @param parameters
* @return
*/
public static String createSign(String characterEncoding,
SortedMapObject, Object parameters) {
StringBuffer sb = new StringBuffer();
Set es = parameters.entrySet();// 所有參與傳參的參數(shù)按照accsii排序(升序)
Iterator it = es.iterator();
while (it.hasNext()) {
@SuppressWarnings("rawtypes")
Map.Entry entry = (Map.Entry) it.next();
String k = (String) entry.getKey();
Object v = entry.getValue();
if (null != v !"".equals(v) !"sign".equals(k)
!"key".equals(k)) {
sb.append(k + "=" + v + "");
}
}
sb.append("key=" + ConstantsMember.KEY); //KEY是商戶秘鑰
String sign = MD5Util.MD5Encode(sb.toString(), characterEncoding)
.toUpperCase();
return sign; // D3A5D13E7838E1D453F4F2EA526C4766
// D3A5D13E7838E1D453F4F2EA526C4766
}
前段時(shí)間出去玩了一段時(shí)間,回公司得知一個(gè)驚天消息——微信支付出問題了!!!這個(gè)問題比較奇怪,說是部分機(jī)型可以支付成功,部分機(jī)型如小米、三星無法調(diào)起支付,返回-1。
眾所周知返回-1的話代表了各種各樣的錯(cuò)誤(坑),所以只好從頭開始排查,首先排查 WXPayEntryActivity.java 這個(gè)文件是否放在了 .wxapi包 下,及 manifest里的注冊(cè)是否為.wxapi.WXPayEntryActivity ,確定無誤后檢查后臺(tái)返回的參數(shù)是否有誤
至此如果都正確,可以開始著手檢查在后臺(tái)里的參數(shù)設(shè)置是否正確
這里需要注意的是應(yīng)用簽名和應(yīng)用包名,因?yàn)槌鰡栴}的包不是由我打包的,我懷疑問題在于應(yīng)用簽名對(duì)不上,最后發(fā)現(xiàn)果然如此。打包的同事使用了另一個(gè)keystore文件進(jìn)行打包,導(dǎo)致應(yīng)用簽名與后臺(tái)填寫的不一致,于是重新生成了簽名更新后臺(tái)設(shè)置,問題解決。
至于為什么部分機(jī)型可以正常支付,而部分機(jī)型無法調(diào)起,我參照有些coder遇到的問題“微信支付只能成功調(diào)起一次”
因?yàn)槌晒χЦ兜臋C(jī)型為公司測(cè)試機(jī),而不成功的機(jī)型是用戶機(jī),猜測(cè)因?yàn)楣緶y(cè)試機(jī)里曾經(jīng)調(diào)試過微信支付,有正確的包名和簽名的緩存,微信在調(diào)起時(shí)直接讀取緩存值,驗(yàn)證正確后直接調(diào)起,而當(dāng)緩存值出錯(cuò)時(shí)微信才會(huì)再次去讀取新的包名和簽名重新驗(yàn)證,因此出現(xiàn)了部分機(jī)型可支付的問題。也因?yàn)檫@個(gè)原因, 修改完簽名后再次調(diào)試,第一次返回的還是-1,但再次點(diǎn)擊就可以成功調(diào)起,此后也沒有再返回-1。 個(gè)人猜測(cè),如有錯(cuò)誤歡迎指出討論。
微信支付的坑實(shí)在是太多了,還有OC編寫的iOS的IAP也有很多藏起來的坑,一直想把Unity內(nèi)調(diào)用Java集成的微信、支付寶支付,使用OC集成的iOS內(nèi)購(gòu)詳細(xì)過程寫上來,但是一直犯懶。。這段時(shí)間一定要寫好,給自己做個(gè)記錄,也給大家作為一個(gè)參考。
這個(gè)我之前也遇到。確實(shí)是公鑰出了問題。
在本地生成一份。
在官網(wǎng)獲取一份。
一步步檢查。會(huì)解決的。這個(gè)問題就是公鑰或是密鑰的問題。
支付寶集成流程
主要的回調(diào)返回類兩個(gè):PayResult與AuthResult
支付接口的調(diào)用:
支付結(jié)果的接收:
Android開發(fā)集成轉(zhuǎn)賬功能,那么需要集成第三方支付平臺(tái),例如支付寶,微信等等。
集成方式:
到官網(wǎng)申請(qǐng)開發(fā)者帳號(hào)
登錄開發(fā)者帳號(hào),申請(qǐng)密鑰
下載集成SDK
集成到Android Project中
按SDK說明文檔調(diào)用支持即可
文章標(biāo)題:android支付集成,安卓接入支付寶支付
URL地址:http://chinadenli.net/article13/dsgdcds.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供外貿(mào)網(wǎng)站建設(shè)、企業(yè)建站、品牌網(wǎng)站設(shè)計(jì)、App開發(fā)、電子商務(wù)、靜態(tài)網(wǎng)站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)