我的微信支付

xiaoxiao2021-03-01  10

创建应用 什么什么的不说了

第一步导入伊兰

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

第二步  权限

<uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> <uses-permission android:name="android.permission.READ_PHONE_STATE" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

第三步  添加辅助类

package com.example.ypc.wzxtext4; import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.util.Log; import com.tencent.mm.opensdk.constants.ConstantsAPI; import com.tencent.mm.opensdk.modelbase.BaseReq; import com.tencent.mm.opensdk.modelbase.BaseResp; import com.tencent.mm.opensdk.openapi.IWXAPI; import com.tencent.mm.opensdk.openapi.IWXAPIEventHandler; import com.tencent.mm.opensdk.openapi.WXAPIFactory; /** * 4.处理支付结果 */ public class WXPayEntryActivity extends Activity implements IWXAPIEventHandler { private static final String TAG = "WXPayEntryActivity"; private IWXAPI api; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.pay_result); api = WXAPIFactory.createWXAPI(this,""); 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) { }; @Override public void onResp(BaseResp resp) { Log.d(TAG, "onPayFinish, errCode = " + resp.errCode); if (resp.getType() == ConstantsAPI.COMMAND_PAY_BY_WX) { int errCode = resp.errCode; if (errCode == 0){ TODO: 2017/11/10 //成功 }else if (errCode == -1){ //ToastUtils.showLong("支付失败"); }else if (errCode == -2){ //ToastUtils.showLong("支付已被取消"); } } } }

第四步 清单文件声明

<activity android:name=".WXPayEntryActivity" android:exported="true" android:launchMode="singleTop"/>

第五步

private String mUrl = "网络请求地址"; private String mToken = "服务器给的token"; private RequestQueue mQueue;//Volley

第六部  请求  需要重新二个方法

//1.提交参数到服务 mQueue = Volley.newRequestQueue(this); StringRequest request = new StringRequest(Request.Method.POST, mUrl, this, this) { @Override protected Map<String, String> getParams() throws AuthFailureError { HashMap<String, String> map = new HashMap<>(); /*@Path("payType") String payType, @Field("amount") String amount, @Field("token") String token, @Field("version") String version, @Field("os") String os*/ map.put("amount", "1.0"); map.put("token", mToken); map.put("version", "3.1.3"); map.put("os", "android"); return map; } }; mQueue.add(request); break;

第七步  在成功方法里面 解析

@Override public void onResponse(String s) { //2.解析数据 Gson gson = new Gson(); WXBean bean = gson.fromJson(s, WXBean.class); //3.调用微信的sdk callSDK(bean); }

第八步

private void callSDK(WXBean data) { //先注册 String appid = data.getResult().getWx().getAppid(); IWXAPI api = WXAPIFactory.createWXAPI(this, null); api.registerApp(appid); //调sdk PayReq req = new PayReq(); req.appId = appid; req.partnerId = data.getResult().getWx().getPartnerid(); req.prepayId = data.getResult().getWx().getPrepayid();//预支付订单号:核心参数,该参数是微信服务器生成,相当于订单号 req.nonceStr = data.getResult().getWx().getNoncestr(); req.timeStamp = data.getResult().getWx().getTimestamp(); req.packageValue = data.getResult().getWx().getPackageX(); req.sign = data.getResult().getWx().getSign(); // 在支付之前,如果应用没有注册到微信,应该先调用IWXMsg.registerApp将应用注册到微信 //3.调用微信支付sdk支付方法 api.sendReq(req); //4.处理支付结果 }

 

 

 

 

 

 

转载请注明原文地址: https://www.6miu.com/read-3850058.html

最新回复(0)