日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 运维知识 > Android >内容正文

Android

android微信支付错误码,Android微信支付流程,以及-1错误排查

發(fā)布時(shí)間:2024/3/26 Android 74 豆豆
生活随笔 收集整理的這篇文章主要介紹了 android微信支付错误码,Android微信支付流程,以及-1错误排查 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

首先檢查微信支付開放平臺(tái)有沒有創(chuàng)建項(xiàng)目,里面的簽名(MD5簽名,不是SHA1,通過(guò)工具獲取最好)和包名是否一致,支付權(quán)限是否開通,debug包需要簽名realse的簽名,可以直接給debug配置release簽名,否則直接運(yùn)行的debug的簽名和realse簽名是不一致的,會(huì)存在問(wèn)題,ok了之后看下面流程

支付流程

1 引入包

implementation 'com.tencent.mm.opensdk:wechat-sdk-android-with-mta:+'

2 調(diào)用

下面所有的參數(shù)都是服務(wù)器傳給你的,沒有一個(gè)是需要你自己獲取的,當(dāng)然如果你需要在客戶端做最后的簽名也是可以的

重點(diǎn),怎么測(cè)試服務(wù)器給你的數(shù)據(jù)對(duì)不對(duì)?絕大多數(shù)-1錯(cuò)誤碼都是服務(wù)器給的參數(shù)不對(duì),微信支付demo中有https://wxpay.wxutil.com/pub_v2/app/app_pay.php (不確定微信會(huì)不會(huì)跟換地址,建議去demo里面找)這個(gè)地址是測(cè)試數(shù)據(jù),把測(cè)試的demo數(shù)據(jù)直接寫死到下面的參數(shù)中,如果可以請(qǐng)求成功,你的支付流程就沒有問(wèn)題,當(dāng)前你首先需要先檢查微信開放平臺(tái)的MD5簽名是否對(duì),apikey,包名是否一致

服務(wù)器流程是這樣的,第一步你傳給他訂單的信息,比如價(jià)格什么的,服務(wù)器會(huì)對(duì)你的信息做簽名什么的然后向微信接口請(qǐng)求,微信接口會(huì)返回給服務(wù)器下面的商品信息以及簽名,noncestr等

最重要的第三步,服務(wù)器返回給你數(shù)據(jù)并不是直接把微信的返給他的數(shù)據(jù)直接返回給你,服務(wù)器需要把微信返回的數(shù)據(jù)再次簽名,這次生成的簽名才是最終的簽名,是客戶端需要的簽名,最終簽名中用到的參數(shù)就是服務(wù)器需要返給客戶端的參數(shù)

{

"appid": "wxb4ba3c02aa476ea1",

"partnerid": "1900006771",

"package": "Sign=WXPay",

"noncestr": "6b3be5e19da289f4984639cb9a44f925",

"timestamp": 1565144431,

"prepayid": "wx071020313188630c79dcf66e1848742832",

"sign": "0896E1938417C2F0393E60FCD1F5DB0D"

}

IWXAPI api = WXAPIFactory.createWXAPI(MyMoneyActivity.this, null);

api.registerApp(LoginReadActivity.APP_ID);

PayReq req = new PayReq();

req.appId = appid/*"wxb475175b226bba0f"*/;//你的微信appid

req.partnerId = mch_id/*"1510166111"*/;//商戶號(hào)

req.prepayId =prepay_id/*"wx0616503763951401e44f8e8e1026290000"*/;//預(yù)支付交易會(huì)話ID

req.nonceStr = nonce_str/*"U3iEyfr82e79RxUEZQbRpQRKBYaBlnXo"*/;//隨機(jī)字符串

req.timeStamp =timestamp+"";//1565144431 時(shí)間戳

req.packageValue = "Sign=WXPay";//寫死,固定的

req.sign = sign/*"0896E1938417C2F0393E60FCD1F5DB0D"*/;//簽名

// req.extData = "app data"; // optional 這一行可以不要

api.sendReq(req);

3 編寫支付回調(diào),

(重要)這個(gè)回調(diào)activity名字必須是WXPayEntryActivity ,看清楚是WXPayEntryActivity 不是WXEntryActivity

大多數(shù)調(diào)用微信支付沒有反應(yīng)是這個(gè)問(wèn)題,也可能是你沒有下載微信

這個(gè)activity存放的位置必須是xxx(你的包).wxapi.WXEntryActivity不能改變

public class WXPayEntryActivity extends Activity implements IWXAPIEventHandler {

private static final String TAG = "MicroMsg.SDKSample.WXPayEntryActivity";

private IWXAPI api;

@Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

api = WXAPIFactory.createWXAPI(this, LoginReadActivity.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 req) {

}

@SuppressLint("LongLogTag")

@Override

public void onResp(BaseResp resp) {

Log.d(TAG, "onPayFinish, errCode = " + resp.errCode);

/*

0 支付成功

-1 發(fā)生錯(cuò)誤 可能的原因:簽名錯(cuò)誤、未注冊(cè)APPID、項(xiàng)目設(shè)置APPID不正確、注冊(cè)的APPID與設(shè)置的不匹配、其他異常等。

-2 用戶取消 發(fā)生場(chǎng)景:用戶不支付了,點(diǎn)擊取消,返回APP。

*/

if (resp.getType() == ConstantsAPI.COMMAND_PAY_BY_WX) {

// 根據(jù)返回碼

int code = resp.errCode;

switch (code) {

case 0:

// 去本地確認(rèn)支付結(jié)果

EventBus.getDefault().post("0");

finish();

break;

case -1:

Toast.makeText(this, "支付異常", Toast.LENGTH_SHORT).show();

finish();

break;

case -2:

Toast.makeText(this, "支付已取消", Toast.LENGTH_SHORT).show();

finish();

break;

default:

Toast.makeText(this, "支付失敗", Toast.LENGTH_SHORT).show();

finish();

break;

}

}

}

總結(jié)

以上是生活随笔為你收集整理的android微信支付错误码,Android微信支付流程,以及-1错误排查的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。