android接入微信支付

1.首先導(dǎo)入微信支付依賴


//wx 支付依賴(包含統(tǒng)計(jì)功能)

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

2.依賴導(dǎo)入以后在包后面創(chuàng)建 wxapi 包 (注意:wxapi包一定要放在根目錄下面)

3.在wxapi包下創(chuàng)建 WXPayEntryActivity 接收微信支付結(jié)果回調(diào)的類(類名必須一致)

image

4.在清單文件中配置微信支付 (android:exported="true" 必須加)


      <activity
            android:name=".wxapi.WXPayEntryActivity"
            android:exported="true"
            android:launchMode="singleTop">
            <intent-filter>
                <action android:name="android.intent.action.VIEW" />

                <category android:name="android.intent.category.DEFAULT" />
                <!-- 這里填寫你申請的app id -->
                <data android:scheme="你申請的appid" />
            </intent-filter>
        </activity>

5.以上的準(zhǔn)備工作完成以后開始調(diào)起微信支付,以下是調(diào)起微信支付的方法

  IWXAPI api = WXAPIFactory.createWXAPI(this, "你申請的wxappID", false);//填寫自己的APPIDapi.registerApp("wxAPPID");//填寫自己的APPID,注冊本身APPPayReq req = new PayReq();//PayReq就是訂單信息對象
           
        //建議動態(tài)監(jiān)聽微信啟動廣播進(jìn)行注冊到微信
     registerReceiver(new BroadcastReceiver() {
                @Override
                public void onReceive(Context context, Intent intent) {
                    // 將該app注冊到微信
                    api.registerApp("你申請的wxappID");
                }
            }, new IntentFilter(ConstantsAPI.ACTION_REFRESH_WXAPP));
    //訂單信息后臺都會返回,直接拿來用即可 
            PayReq  req = new PayReq();//PayReq就是訂單信息對象
            req.appId = "你申請的wxappID";//你的微信appid
            req.partnerId = " ";    //商戶號
            req.prepayId = " " ;     //預(yù)支付交易會話ID
            req.nonceStr = " ";    //隨機(jī)字符串
            req.timeStamp =" ";    //時(shí)間戳
            req.packageValue = "Sign=WXPay"; //擴(kuò)展字段,這里固定填寫Sign=WXPay
            req.sign = "  ";//簽名
 
            api.sendReq(req);//將訂單信息對象發(fā)送給微信服務(wù)器,即發(fā)送支付請求

6.在 WXPayEntryActivity 中處理支付結(jié)果

public class WXPayEntryActivity extends Activity  implements IWXAPIEventHandler {
    private IWXAPI api;
    private static final String TAG = "WXPayEntryActivity";
    private String app_id = "你申請的qppid";//微信開發(fā)后臺申請的app_id
    
    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        api = WXAPIFactory.createWXAPI(this, app_id);
        api.handleIntent(getIntent(), this);
    }

    @Override
    public void onReq(BaseReq baseReq) {

    }

    @Override
    public void onResp(BaseResp resp) {

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

            switch (resp.errCode) {
                case 0://支付成功
                    Toast.makeText(this, "支付成功", Toast.LENGTH_SHORT).show();
                    Log.d(TAG, "onResp: resp.errCode = 0   支付成功");
                    break;
                case -1://錯誤,可能的原因:簽名錯誤、未注冊APPID、項(xiàng)目設(shè)置APPID不正確、注冊的APPID與設(shè)置的不匹配、其他異常等
                    Toast.makeText(this, "支付錯誤" + resp.errCode, Toast.LENGTH_SHORT).show();
                    Log.d(TAG, "onResp: resp.errCode = -1  支付錯誤");
                    break;
                case -2://用戶取消,無需處理。發(fā)生場景:用戶不支付了,點(diǎn)擊取消,返回APP。
                    Log.d(TAG, "onResp: resp.errCode = -2  用戶取消");
                    Toast.makeText(this, "用戶取消支付" , Toast.LENGTH_SHORT).show();
                 break;
            }
            
            finish();//這里需要關(guān)閉該頁面
        }
    }
}

7.這就是微信支付的全部流程,在android 11版本會出現(xiàn)調(diào)不起來,只需在清單文件加入以下內(nèi)容就可適配android 11

    <queries>
        <package android:name="com.tencent.mm" />
    </queries>

如果在使用中出現(xiàn)了在android studio中可以調(diào)起微信支付,但是在打包以后調(diào)不起來,這種問題絕對是簽名問題,因?yàn)閐ebug版的應(yīng)用簽名和release版的應(yīng)用簽名不一致,此時(shí)一定要把簽名改成統(tǒng)一

  signingConfigs {
//這里是簽名配置信息
        release {
            keyAlias 'key0'                       //jks別名
            keyPassword '123456'         //密碼
            storeFile file('D:\\Login\\app\\test.jks')     //jks路徑
            storePassword '123456'                         //密碼
        }
        buildTypes {
//這里是release版的簽名配置
            release {
               minifyEnabled false
                proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
                signingConfig signingConfigs.release
            }
//這里是debug版的簽名配置
            debug {
                minifyEnabled false
                proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
                signingConfig signingConfigs.release
            }
        }
    }
}

這里配置完成以后下載微信官方提供的簽名文件apk,輸入項(xiàng)目的包名,就可生成應(yīng)用簽名,然后把應(yīng)用簽名同步到微信開放平臺的應(yīng)用簽名,這樣就可以在debug和release版都可以調(diào)起微信支付

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容