一药磺、引言
微信支付文檔寫的真的棒案孀椤!少林功夫真的好鞍┡濉木缝!
永遠(yuǎn)猜不到-1錯誤碼是啥問題。
二围辙、注意事項
1.在開放平臺綁定商戶的應(yīng)用簽名不像別家SDK使用簽名文件的sha1值我碟,而是使用MD5值。并且要去掉中間所有的 " : " 冒號 姚建,最好英文字母改成小寫矫俺。
順便介紹下簽名文件:
debug.keystore:
在Android Stduio中系統(tǒng)默認(rèn)內(nèi)置了一個簽名文件debug.keystore,用于我們在debug下的默認(rèn)App簽名掸冤。
在Windows系統(tǒng)中厘托,debug.keystore文件將默認(rèn)存儲在C:\Users{USERNAME}.android\路徑下秉扑。
在Mac/Linux系統(tǒng)中若河,debug.keystore文件默認(rèn)儲存在~/.android/路徑下。
release.keystore:
由用戶自己生成
獲取簽名信息:
打開電腦終端浪感,輸入以下命令:
keytool -list -v -keystore debug.keystore -keypass android
可以看到簽名信息的MD5缎罢、sha1伊群、sha256值。微信支付需要的就是MD5的去冒號小寫版策精。例如本機(jī):7a1ec4f306acb66ad869251f91b9c341舰始。
也可以在Android Studio底部tools window中的terminal中敲命令
2.支付結(jié)果回調(diào)一定要有[你的包名].wxapi下WXPayEntryActivity類。
public class WXPayEntryActivity extends Activity implements IWXAPIEventHandler {
private IWXAPI api;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
TextView tv = new TextView(this);
tv.setText("支付結(jié)果");
setContentView(tv);
api = WXAPIFactory.createWXAPI(this, Constants.WECHAT_APP_ID);
api.handleIntent(getIntent(), this);
}
@Override
protected void onNewIntent(Intent intent) {
super.onNewIntent(intent);
setIntent(intent);
api.handleIntent(intent, this);
}
@Override
public void onReq(BaseReq baseReq) {
}
@Override
public void onResp(BaseResp baseResp) {
Log.d("WXPayEntryActivity", "errCode = " + baseResp.errCode);
if (baseResp.getType() == ConstantsAPI.COMMAND_PAY_BY_WX) {
ToastUtils.showToast("errCode = " + baseResp.errCode);
switch (baseResp.errCode) {
case BaseResp.ErrCode.ERR_OK:
ToastUtils.showToast("成功");
break;
case BaseResp.ErrCode.ERR_USER_CANCEL:
ToastUtils.showToast("取消");
break;
default:
ToastUtils.showToast("未知錯誤");
break;
}
finish();
}
}
}
清單文件AndroidManifest.xml中WXPayEntryActivity的聲明配置:
<activity
android:name=".wxapi.WXPayEntryActivity"
android:exported="true"
android:launchMode="singleTop">
</activity>
3.關(guān)于三個sign參數(shù)
第一個sign: 用戶去“微信商戶平臺下單” 參數(shù)封裝成一個xml咽袜,其中sign參數(shù)為:MD5(所有參數(shù)排序后+ key=微信商戶平臺的密鑰)丸卷。
第二個sign: “微信商戶平臺”下單后,返回的sign询刹,用于自己平臺上對于微信返回的數(shù)據(jù)做校驗(相當(dāng)于校驗碼)谜嫉。千萬不要拿這個sign去啟動“微信APP”支付(要不然就出提示:errCode = -1 的錯誤)萎坷。
第三個sign:需要把下單成功后的參數(shù)appid,partnerid,prepayid,package,noncestr,timestamp進(jìn)行簽名(sign),簽名的規(guī)則和第一個sign規(guī)則類似,為:MD5(這6個參數(shù)排序后+ key=微信商戶平臺的密鑰)沐兰。
errCode -1:簽名錯誤哆档,所說的簽名就是第三個sign。當(dāng)然還有APPID未通過住闯,和APPID注冊的和返回的不一樣瓜浸,這個是“微信開放平臺”里的東西。