您的位置:首页 > 移动开发 > 微信开发

Android微信支付步骤简述

2016-02-02 11:23 531 查看
公司的微信支付是采用了app客户端首先触发,向app服务端发送支付请求,将订单信息提交给app服务端,服务端(app服务端在此之前已经向微信支付服务端发送支付请求,微信服务端返回对应的参数)返回对应的参数给app客户端,此时客户端再向微信服务端发唯一一次请求,请求成功后,微信服务端会调用WXPayEntryActivity的onResp(BaseResp resp)方法,该Activity必须放在aaa.bbb.wxapi下面,也就是说该Activity要自己定义。

注意:1。WXPayEntryActivity必须在AndroidManifest.xml 定义;

            2。跟支付宝支付相比,微信支付必须将app打包签名后(签名必须与app申请微信支付时提交的资料的签名一致)才能进行测试;

           3。金额1是代表1分,而支付宝是代表1元。

           4。app的包名也必须是与app申请微信支付时提交的资料的包名一致.

           5。一般按照给定的demo测试是没问题,需要注意的就是2和4。

          
IWXAPI api;
api = WXAPIFactory.createWXAPI(this, "****");//通过申请的appid

try {
// String responseBody = getRequest(url);//url为app服务端返回的字符串(包含各种参数)
//Toast.makeText(PayOrderActivity.this, "debug:"+responseBody, Toast.LENGTH_SHORT).show();
JSONObject map = new JSONObject(responseBody);
// Map<String, String> map = parseXmlStr(responseBody);
PayReq req = new PayReq();
req.appId = (String) map.get("appid");
req.partnerId = (String) map.get("partnerid");
req.prepayId = (String) map.get("prepayid");
req.nonceStr = (String) map.get("noncestr");
req.timeStamp = (String) map.get("timestamp");
req.packageValue = (String) map.get("package");
req.sign = (String) map.get("sign");
//Toast.makeText(PayOrderActivity.this, "正常调起支付", Toast.LENGTH_SHORT).show();
// 在支付之前,如果应用没有注册到微信,应该先调用IWXMsg.registerApp将应用注册到微信
boolean sendReq = api.sendReq(req);
//在此处 sendReq 只能作为有没有向微信支付服务端发送请求而已

//Toast.makeText(PayOrderActivity.this, "发送请求:"+sendReq, Toast.LENGTH_SHORT).show();
} catch (Exception e) {
Log.e("PAY_GET", "异常:" + e.getMessage());
}


package net.aaa.bbb;

public class WXPayEntryActivity extends Activity implements IWXAPIEventHandler{

private static final String TAG = "MicroMsg.SDKSample.WXPayEntryActivity";

public static final String PAY_SUCCESS = "PAY_SUCCESS";// 用于广播

private IWXAPI api;

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.pay_result);
finish();//不想显示这个页面

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

@Override
public void onResp(BaseResp resp) {
Log.d(TAG, "onPayFinish, errCode = " + resp.errCode);

if(resp.errCode==0){
//写上自己支付完之后的代码

}
/*
if (resp.getType() == ConstantsAPI.COMMAND_PAY_BY_WX) {
//测试回调 ldz

AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setTitle("提示");
builder.setMessage(getString(R.string.pay_result_callback_msg, String.valueOf(resp.errCode)));
builder.show();
}*/
}
}


<?xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
style="@style/NavPage">

<TextView
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:gravity="center"
android:textColor="#ff000000"
android:textSize="20dp"
android:text="@string/pay_result_tip"/>

</LinearLayout>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: