簽名演算法
第一步,設所有傳送或者接收到的資料為集合m,將集合m內非空引數值的引數按照引數名ascii碼從小到大排序(字典序),使用url鍵值對的格式(即key1=value1&key2=value2…)拼接成字串stringa。
因為 我們伺服器人員什麼都沒寫,所以下面的生成預支付id需要我們自己寫
/**
*/public class
webchatpay
extends
asynctask
>
}/**
* 1..先獲取預支付交易會話prepayid
*/@override
protected mapdoinbackground(object... params)
/*** 2..獲取到預支付交易會話prepayid後,傳送支付請求
*/@override
protected void onpostexecute(mapresult)
string prepayid = result.get("prepay_id"); //獲取商品的預支付交易會話id
if (textutils.isempty(prepayid))
//傳送支付請求
genpayreq(result);
}/**
* 1.1 生成獲取prepayid 的引數
* 注:請求引數必須按照ascii排序
*/private string genproductargs(payorderbean order) catch (exception e)
}/**
*1.2 生成簽名
*/stringbuilder sb = new stringbuilder();
for (namevaluepair param : params)
}string packagesign = md5.getmessagedigest(sb.tostring().getbytes()).touppercase();
return packagesign;
}/**
* 獲取隨機字串
*/private string gennoncestr()
/*** 生成xml格式的檔案
*/private string toxml(listparams)
return sb.tostring();
}/**
* 解析xml
*/public mapdecodexml(string content)
break;
case xmlpullparser.end_tag:
break;
}event = parser.next();
}return xmlmap;
} catch (exception e)
return
null;
}/**
* 3..生成支付引數,傳送請求
case r.id.id_bt_submit: //支付提交
new webchatpay().execute(this,orderbean);
break;
public
class
wxpayentryactivity
extends
activity
implements
iwxapieventhandler
@override
protected
void
onnewintent(intent intent)
@override
public
void
onreq(basereq req)
@override
/** * 如果支付成功則去後台查詢支付結果再展示使用者實際支付結果。
* 注意一定不能以客戶端返回作為使用者支付的結果,應以伺服器端的接收的支付通知或查詢api返回的結果為準
Android 微信支付步驟
public void requestwxpay context context,ordermodel ordermodel payreq payreq new payreq payreq.partnerid ordermodel.getmchid payreq.prepayid ordermode...
Android微信支付完整步驟
請求伺服器 private void postserver else if paytype.equals constants.three catch exception e private void wxpay wxpaybean bean else 必須在 包名 wxapi下。如 package ...
android微信支付詳細步驟
dependenciesdependencies import android.annotation.suppresslint import android.content.intent import android.os.bundle import android.util.log import ...