Android 集成微信支付

来源:互联网 发布:单片机的编程语言 编辑:程序博客网 时间:2024/05/18 17:57

情景 :Android 在集成友盟微信分享、微信登录后,继续集成微信支付

关键的依赖:

dependencies {    compile files('libs/SocialSDK_WeiXin_Full.jar')}


微信支付流程:服务端组织生成订单信息提交到微信--->微信生成预支付订单(包括签名)返回到服务端--->服务端对签名进行二次签名--->客户端请求服务端获取预支付订单参数--->客户端向微信提交参数信息调起微信支付的方法----->微信支付成功后回调返回客户端—->客户端处理成功后的逻辑

下面直接说Android客户端业务逻辑:

一、客户端提交信息到服务器统一下单

public void placeAnOrder(String theurl) {    RequestParams requestParams = new RequestParams(theurl);    requestParams.addBodyParameter("id", id);    requestParams.addBodyParameter("mobile", mobile);    requestParams.addBodyParameter("name", name);    requestParams.addBodyParameter("address", address);    x.http().post(requestParams, new Callback.CommonCallback<String>() {        @Override        public void onSuccess(String result) {            Log.e("Tag_OrderSuccessful", "订单生成!");            //服务器返回临时订单相关参数            //向微信提交订单进行支付            toWXPay();        }        @Override        public void onError(Throwable ex, boolean isOnCallback) {        }        @Override        public void onCancelled(CancelledException cex) {        }        @Override        public void onFinished() {        }    });}
二、相关配置参数传递给微信,调取支付

private void toWXPay() {
    IWXAPI iwxapi = WXAPIFactory.createWXAPI(this, null); //初始化微信api
iwxapi.registerApp("******"); //注册appid appid可以在开发平台获取
      Runnable payRunnable = new Runnable() {  //这里注意要放在子线程  
        @Override       
        public void run() { 
           PayReq request = new PayReq(); //调起微信APP的对象     
           //下面是设置必要的参数,也就是前面说的参数,这几个参数从何而来请看上面说明  
           request.appId = "*******"; 
           request.partnerId = "******"; 
           request.prepayId = "******";  
           request.packageValue = "Sign=WXPay";  
           request.nonceStr = "******";     
           request.timeStamp = "******";   
           request.sign = "******";  
           iwxapi.sendReq(request);//发送调起微信的请求   
        }   
     };    
    Thread payThread = new Thread(payRunnable);  
    payThread.start();
}
三、支付成功后回调

在 wxapi 包下建立 类 WXPayEntryActivity用于处理支付后的回调逻辑

public class WXPayEntryActivity extends Activity implements IWXAPIEventHandler {    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) {      //支付后信息提示      if (resp.getType() == ConstantsAPI.COMMAND_PAY_BY_WX) {         int code = resp.errCode;         if (code == 0){            //支付成功后的逻辑处理                    }else if (code == -2){            //用户取消            MyToast.showToast(WXPayEntryActivity.this,"支付取消").show();         }else if (code == -1){            //错误            MyToast.showToast(WXPayEntryActivity.this,"支付错误").show();         }         finish();      }   }}
好了,完成!

原创粉丝点击