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。
注意: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>
相关文章推荐
- 红包快手-秒抢微信红包
- ios开发_微信支付
- 微信公众号变现方式
- iOS 微信 音频 视频自动播放
- 微信好友检测
- Java抢红包小程序
- 四个害人小程序解法
- MultiImageSelector 仿微信选择多张图片回调
- 第三方之联合登陆(微信)
- 微信支付第一次成功 后来就一直不行
- 微信投票系统 开发
- 企业号、 公众号 、服务号 、订阅号区别(微信入门基础知识)
- 有关微信支付开发
- 微信投票系统 开发
- 关于微信 init接口返回的Count和webwxbatchgetcontact post请求的参数Count
- 微信二维码生成步骤(本人亲测)
- 微信登录授权开发
- sharesdk 微信登陆分享点击留在微信回调解决方案
- 使用C#写了一个可以推算火车票身份证号码的小程序
- 用户点击公众号菜单请求过程