微信支付之a(chǎn)ndroid篇

android 移動(dòng)端支付 是大部分的app 必有的功能之一 微信作為比較普及的即時(shí)通信app 接入一種比較方便支付端口是很有必要的 從支付操作難度來說 微信支付是最簡單的 普及程度也是最廣的?

下面我們說一下 微信支付集成的步驟?

第一 你需要?jiǎng)?chuàng)建一個(gè)項(xiàng)目?

https://open.weixin.qq.com/?微信開放平臺(tái)地址?

注冊或者微信掃描等以后 你需要?jiǎng)?chuàng)建一個(gè)項(xiàng)目 填寫項(xiàng)目名稱 簡介 logo 即可?

第二 填寫開發(fā)信息 ios 這一塊 填寫下載地址 BundleID 以及測試版的BundleID android 這一塊只需要填寫包名以及簽名即可(未發(fā)布就填寫測試版的簽名 上線以后就填寫發(fā)布版的簽名 關(guān)于獲取簽名的方法 微信官網(wǎng)有告訴你如果獲取簽名 )?

然后提交你的項(xiàng)目 等待微信審核通過 在這期間你可以下載sdk 集成微信支付的環(huán)境

支付環(huán)境配置

環(huán)境分為兩種 一是eclipse 一是 android studio

as 的環(huán)境配置很簡單 直接在app 的build.gradle 下添加?

dependencies {?

compile ‘com.tencent.mm.opensdk:wechat-sdk-android-with-mta:+’?

}?

就可以了?

eclipse 集成環(huán)境 你需要下載sdk 然后導(dǎo)入到libs 包下 并且添加到本項(xiàng)目關(guān)聯(lián)就好了

然后在AndroidManifast.xml 文件 配置本項(xiàng)目權(quán)限

uses-permission android:name="android.permission.INTERNET"

uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS"

uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"

然后你需要在你的包下新建一個(gè)文件夾 wxapi 并且在wxapi包下創(chuàng)建 WXPayEntryActivity?

注意 如果你的項(xiàng)目的包名是com.baidu.xxx 那你WXPayEntryActivity的路徑就應(yīng)該是com.baidu.xxx.wxapi.WXPayEntryActivity一定要看清楚 只需要在你包名的下一級(jí)即可 要不然會(huì)調(diào)用支付失敗

WXPayEntryActivity配置

activity android:name=".wxapi.WXPayEntryActivity" android:exported="true" android:launchMode="singleTop"

public classWXPayEntryActivityextendsActivityimplementsIWXAPIEventHandler{ String APP_ID = "YOUR APPID";

? ? private IWXAPI api;

? ? private String sign = "";

? ? @Override? ? protected void onCreate(Bundle savedInstanceState) {

? ? ? ? super.onCreate(savedInstanceState);

? ? ? ? setContentView(R.layout.activity_wxpay_entry);

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

? ? }

? ? ? ? ***// 支付回調(diào)***? ? @Override? ? public void onResp(BaseResp baseResp) {

? ? ? ? String result = "";

? ? ? ? switch (baseResp.errCode){

? ? ? ? ? ? case BaseResp.ErrCode.ERR_OK:

? ? ? ? ? ? ? ? result = "支付成功";

? ? ? ? ? ? ? ? break;

? ? ? ? ? ? case BaseResp.ErrCode.ERR_USER_CANCEL:

? ? ? ? ? ? ? ? result = "取消支付";

? ? ? ? ? ? ? ? break;

? ? ? ? ? ? case BaseResp.ErrCode.ERR_AUTH_DENIED:

? ? ? ? ? ? ? ? result = "支付失敗";

? ? ? ? ? ? ? ? break;

? ? ? ? ? ? default:

? ? ? ? ? ? ? // result = R.string.errcode_unknown;? ? ? ? ? ? ? ? break;

? ? ? ? }

? ? ? //? Toast.makeText(this, result, Toast.LENGTH_LONG).show();? ? ? ? onceToast(this,result+"");

? ? }

? ? //支付結(jié)果提示? ? public? void onceToast(final Context context, String contentText){

? ? ? ? final AlertDialog.Builder builder = new AlertDialog.Builder(context);

? ? ? ? View view = LayoutInflater.from(context).inflate(R.layout.oncetoast_layout, null);

? ? ? ? builder.setView(view);

? ? ? ? Button onesure = (Button) view.findViewById(R.id.oncetoast_button);

? ? ? ? TextView oncecontent = (TextView) view.findViewById(R.id.oncetoast_content);

? ? ? ? oncecontent.setText(contentText);

? ? ? ? final AlertDialog dialog = builder.create();

? ? ? ? onesure.setOnClickListener(new View.OnClickListener() {

? ? ? ? ? ? @Override? ? ? ? ? ? public void onClick(View v) {

? ? ? ? ? ? ? ? dialog.dismiss();

? ? ? ? ? ? ? ? if (sign!=null&&sign.equals(Constant.PASSENGER_PUBLISH_PAY)||sign.equals(Constant.HOST_PUBLISH_PAY)||sign.equals(Constant.CHANGE_PAY)||sign.equals(Constant.PASSENGER_ROB_PAY)||sign.equals(Constant.HOST_ROB_PAY)){

? ? ? ? ? ? ? ? ? ? Intent intent = new Intent(WXPayEntryActivity.this, CompleteActivity.class);

? ? ? ? ? ? ? ? ? ? intent.putExtra("type",BookPayActivity.completeType);

? ? ? ? ? ? ? ? ? ? intent.putExtra("text_1",BookPayActivity.text_1);

? ? ? ? ? ? ? ? ? ? intent.putExtra("text_2",BookPayActivity.text_2);

? ? ? ? ? ? ? ? ? ? startActivity(intent);

? ? ? ? ? ? ? ? ? ? AppManager.getAppManager().finishActivity(BookPayActivity.class);

? ? ? ? ? ? ? ? }

? ? ? ? ? ? ? ? finish();

? ? ? ? ? ? }

? ? ? ? });

? ? ? ? dialog.show();

? ? }

}

// 微信支付方法 訂單生成 和 簽名應(yīng)放在后臺(tái)服務(wù)生成

private void wXPay() {

? ? ? ? final String appId = "YOUR APPID";

? ? ? ? iwxapi = WXAPIFactory.createWXAPI(this, null); //初始化微信api? ? ? ? iwxapi.registerApp(appId); //注冊appid? appid可以在開發(fā)平臺(tái)獲取? ? ? ? Runnable payRunnable = new Runnable() {? //這里注意要放在子線程? ? ? ? ? ? @Override? ? ? ? ? ? public void run() {

? ? ? ? ? ? ? ? PayReq request = new PayReq(); //調(diào)起微信APP的對(duì)象? ? ? ? ? ? ? ? //下面是設(shè)置必要的參數(shù),也就是前面說的參數(shù),這幾個(gè)參數(shù)從何而來請看上面說明? ? ? ? ? ? ? ? request.appId = appId;

? ? ? ? ? ? ? ? request.partnerId = wxpartnerid;

? ? ? ? ? ? ? ? request.prepayId = wxprepayid;

? ? ? ? ? ? ? ? request.packageValue = "Sign=WXPay";

? ? ? ? ? ? ? ? request.nonceStr = wxnoncestr;

? ? ? ? ? ? ? ? request.timeStamp = wxtimestamp;

? ? ? ? ? ? ? ? request.sign = wxsign;

? ? ? ? ? ? ? ? iwxapi.sendReq(request);//發(fā)送調(diào)起微信的請求? ? ? ? ? ? }

? ? ? ? };

? ? ? ? Thread payThread = new Thread(payRunnable);

? ? ? ? payThread.start();

? ? ? // finish();? ? }

此時(shí)就完成了微信支付 WXPayEntryActivity 特別是注意 這是微信制定的回調(diào)處理類 也就是說你可以有很多的支付調(diào)用 但是所有的結(jié)果都只能在這里拿到 關(guān)于這個(gè)類的路徑問題 應(yīng)該是你微信開放平臺(tái)上的包名下的wxapi.WXPayEntryActivity 一定要注意 還有一點(diǎn)要注意的是你的appid 如果你覺得你的appid 也是微信官方給你的 跟你的簽名同步 代表這你的app 如果你覺的你的appid 放在項(xiàng)目中不安全 你也可以放在后臺(tái)都是可以的 最后就是當(dāng)你正式版打包上線以后 要注意你在微信開放平臺(tái)上的簽名配置 一定要及時(shí)修改為發(fā)布版的簽名 不然調(diào)用支付時(shí)會(huì)失敗?

好了 見到那的微信支付就說到這里了 有什么問題你可以給我留言或私信 我們一起探討 我們一起進(jìn)步

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

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

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