Android微信支付开发流程

需要内容:

账号信息:appId,appKey,mchId(商户号)

libammsdk.jar包  MD5.java类

开发步骤:

1、libammsdk.jar包  MD5.java类拷入项目,将jar包AddLibrary;

2、在清单文件中:

   
android:name="android.permission.INTERNET"/>
android:name="android.permission.MODIFY_AUDIO_SETTINGS"/>
android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

3、在跟包名下创建wxapi包,在该包内新建WXPayEntryActivity,并实现IWXAPIEventHandler接口,在清单文件中注册,exported设置为true



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

4、创建微信广播接收器,并在清单文件注册

public classAppRegister extendsBroadcastReceiver {

   @Override
   public voidonReceive(Context context,Intent intent) {
      finalIWXAPI api = WXAPIFactory.createWXAPI(context, null);
       api.registerApp(WXPayConfig.APP_ID);
   }
}

//==========================================================


android:name="com.mykj.qupingfang.pay.WXPay.AppRegister">
    
        android:name="com.tencent.mm.plugin.openapi.Intent.ACTION_REFRESH_WXAPP"/>
    

5、选择商品 下单

   注册微信api

// 创建PayReq对象
req =new PayReq();
// 创建IWXAPI对象
msgApi = WXAPIFactory.createWXAPI(context, null);
// 使用app_id注册app
msgApi.registerApp(WXPayConfig.APP_ID);

6、将订单信息传给服务器,服务器返回prepayId(预支付订单号,很重要)如:

getUserOrderFromServer();

 

 

7、拿到prepayId后,在客户端对订单生成签名


req.appId= WXPayConfig.APP_ID;
req.partnerId= WXPayConfig.MCH_ID;
req.prepayId= order.data.prepay_id;
req.packageValue= "Sign=WXPay";
req.nonceStr= genNonceStr();
req.timeStamp= String.valueOf(genTimeStamp());

@SuppressWarnings("deprecation")
List signParams = new LinkedList();
signParams.add(newBasicNameValuePair("appid",req.appId));
signParams.add(newBasicNameValuePair("noncestr",req.nonceStr));
signParams.add(newBasicNameValuePair("package",req.packageValue));
signParams.add(newBasicNameValuePair("partnerid",req.partnerId));
signParams.add(newBasicNameValuePair("prepayid",req.prepayId));
signParams.add(newBasicNameValuePair("timestamp",req.timeStamp));

req.sign= genAppSign(signParams);

8、使用PayReq调起微信支付界面,开始支付

boolean open = msgApi.sendReq(req);

9、WXPayEntryActivity中收到支付回调(此Activity可作为支付完成界面)

9.1 、onCreate方法中,注册api

api = WXAPIFactory.createWXAPI(this,WXPayConfig.APP_ID);
api.handleIntent(getIntent(), this);

9.2、在onNewIntent中

@Override
protected void onNewIntent(Intent intent) {
    super.onNewIntent(intent);
    setIntent(intent);
    api.handleIntent(intent, this);
}

9.3 onResp方法中,收到支付结果(此方法在子线程中执行,若刷新UI,需回到主线程)

resp.getType() == ConstantsAPI.COMMAND_PAY_BY_WX

条件下

resp.errCode==0    : 支付成功

resp.errCode== -1   : 支付未完成

resp.errCode== -2   : 支付失败

10、支付成功后,可再次请求服务器是否成功,都成功,则此次支付成功完成,有一方未成功,应排查失败原因。

11、完成!

 

支付流程图



更多相关文章

  1. Pro Android学习笔记(一二四):Telephony API(6):SIP Phone(上)
  2. Android(安卓)SurfaceFlinger服务启动过程源码分析1
  3. Android(安卓)编译成功,先转个知识贴
  4. [置顶] Android(安卓)app内存管理的16点建议
  5. Android(安卓)开发中遇到的 Exception & ANR
  6. 让Android应用程序申请获取ROOT权限
  7. Android中两种设置全屏或者无标题的方法
  8. Android(安卓)如何获取 umeng 的 渠道信息
  9. Android(安卓)游戏开发 View框架

随机推荐

  1. android:sharedUserId="android.uid.syst
  2. linux 下使用ndk-build编译android使用的
  3. Android(安卓)- Navigation
  4. 清空Android(安卓)Task 栈,兼容 API 9
  5. android 环境变量搭建
  6. android 命令大全
  7. 在Android中创建启动界面 编辑
  8. android 中theme.xml与style.xml的区别
  9. Android基础知识总结(转载)
  10. 修改android Launcher