Android集成微信支付
来源:互联网 发布:软件开发人员薪酬 编辑:程序博客网 时间:2024/05/23 19:14
现在微信支付和支付宝支付已经为移动端支付的主流,上一篇就已经介绍了集成支付宝的流程,本篇不要介绍微信支付是怎么集成的。
首先:需要到微信支付开放平台申请APPID 需要应用下载地址 应用签名(利用官方提供工具,安装到手机上,在手机上获取),应用的包名必须和上线包名一样
1.到微信支付开发平台下载微信支付Demo
2.导入微信支付Demo,并运行,效果如下:
Demo可以完全支付了说明现在的Demo就已经完全配置好了微信的开发环境了,我们只需要参照这个Demo去配置我们自己的项目即可。
注:测试的Demo只支持调起一起微信支付,如需第二次可在系统设置中清除微信缓存数据即可。
3.创建一个Android项目,界面如下:
activity_main.xml如下
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="微信支付" android:onClick="weixinPay" /></LinearLayout>
MainActivity.java如下:
public class MainActivity extends Activity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);}public void weixinPay(View v) {}}
4.配置微信开发环境:
a)把微信Demo中的“libammsdk.jar”复制到我们的项目中
b)把微信Demo中的清单文件中的权限复制到我们的项目中
² 把微信Demo中的清单文件中声明的支付相关的Activity声明复制到我们的项目中。注意,微信支付需要的Activity比较特殊,只需要一个WXPayEntryActivity,这个Activity用于接收微信支付结果,这个Activity不是在jar包中的,是在Demo源码中的,我们需要把Demo中的这个Activity复制到我们的项目中,这个类名不能改,且必须放到我们项目根包下面的wxapi包下。
清单文件:
<uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS"/> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>activity注册
<activity android:name=".wxapi.WXPayEntryActivity" android:exported="true" android:launchMode="singleTop"/>
package com.itheima.a14wechatpay.wxapi;import android.app.Activity;import android.app.AlertDialog;import android.content.Intent;import android.os.Bundle;import android.util.Log;import com.itheima.a14wechatpay.Constants;import com.itheima.a14wechatpay.R;import com.tencent.mm.sdk.constants.ConstantsAPI;import com.tencent.mm.sdk.modelbase.BaseReq;import com.tencent.mm.sdk.modelbase.BaseResp;import com.tencent.mm.sdk.openapi.IWXAPI;import com.tencent.mm.sdk.openapi.IWXAPIEventHandler;import com.tencent.mm.sdk.openapi.WXAPIFactory;/** * 这个Activity用于接收支付结果 */public class WXPayEntryActivity extends Activity implements IWXAPIEventHandler{private static final String TAG = "MicroMsg.SDKSample.WXPayEntryActivity"; private IWXAPI api; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.pay_result); api = WXAPIFactory.createWXAPI(this, Constants.APP_ID); api.handleIntent(getIntent(), this); }@Overrideprotected void onNewIntent(Intent intent) {super.onNewIntent(intent);setIntent(intent); api.handleIntent(intent, this);}@Overridepublic void onReq(BaseReq req) {}/** 这个方法用于接收支付结果,同步结果 */@Overridepublic void onResp(BaseResp resp) {// TODO 发请求问自己公司服务器是否支付成功if (resp.getType() == ConstantsAPI.COMMAND_PAY_BY_WX) {AlertDialog.Builder builder = new AlertDialog.Builder(this);builder.setTitle("提示");builder.setMessage("微信支付结果: " + resp.errCode);builder.show();}}}
Constants类
public class Constants {// APP_ID 替换为你的应用从官方网站申请到的合法appId public static final String APP_ID = "wxd930ea5d5a258f4f";}5.找到微信Demo中下面的按钮对应的点击事件:
参照这个Activity完成对应的功能,如下:
public class MainActivity extends Activity {private IWXAPI api;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);api = WXAPIFactory.createWXAPI(this, "wxb4ba3c02aa476ea1");}public void weixinPay(View v) { //===========================================修改成服务器的地址String url = "http://wxpay.weixin.qq.com/pub_v2/app/app_pay.php?plat=android";Toast.makeText(this, "获取订单中...", Toast.LENGTH_SHORT).show();Listener<String> listener = new Listener<String>() {@Overridepublic void onResponse(String response) {try {weixinPay(response);} catch (Exception e) {e.printStackTrace();}}};ErrorListener errorListener = new ErrorListener() {@Overridepublic void onErrorResponse(VolleyError error) {Log.e("PAY_GET", "异常:"+error.getMessage());}};Request<String> request = new StringRequest(url, listener, errorListener);Volley.newRequestQueue(this).add(request);}protected void weixinPay(String response) throws Exception {// 将该app注册到微信 api.registerApp(Constants.APP_ID); boolean isPaySupported = api.getWXAppSupportAPI() >= Build.PAY_SUPPORTED_SDK_INT;if (!isPaySupported) {Toast.makeText(this, "你没有安装微信或者你的微信版本太老", 0).show();return;}JSONObject json = new JSONObject(response); if(null != json && !json.has("retcode") ){PayReq req = new PayReq();//req.appId = "wxf8b4f85f3a794e77"; // 测试用appIdreq.appId= json.getString("appid");req.partnerId= json.getString("partnerid");req.prepayId= json.getString("prepayid");req.nonceStr= json.getString("noncestr");req.timeStamp= json.getString("timestamp");req.packageValue= json.getString("package");req.sign= json.getString("sign");req.extData= "app data"; // optionalToast.makeText(MainActivity.this, "正常调起支付", Toast.LENGTH_SHORT).show();// 在支付之前,如果应用没有注册到微信,应该先调用IWXMsg.registerApp将应用注册到微信api.sendReq(req);}else{ Log.d("PAY_GET", "返回错误"+json.getString("retmsg")); Toast.makeText(MainActivity.this, "返回错误"+json.getString("retmsg"), Toast.LENGTH_SHORT).show();}}}
到此就已经成功集成微信支付了。
支付宝支付流程在上一篇,。地址如下
http://blog.csdn.net/wangxiaohuhu1314/article/details/76191157
- android集成微信支付
- android集成微信支付
- Android 微信支付集成
- android集成微信支付
- Android集成微信支付
- Android微信支付集成
- Android集成微信支付
- Android集成微信支付
- Android 集成微信支付
- Android集成微信支付
- Android集成微信支付
- android集成微信支付
- Android集成微信支付
- Android集成微信支付
- Android 微信支付集成
- Android 集成微信支付
- android集成支付,支付宝,微信
- Android 集成微信支付V3
- 从零开始学_JavaScript_系列(48)——Promise(1)基础知识
- salesforce站点site调试debug方法
- Maven添加本地仓库
- js中concat函数使用
- java打开网页URI
- Android集成微信支付
- Javac编译原理
- 【Android】android镜像翻转
- 静态代码块static{}与非静态代码块{}
- eclipse快捷键以及使用技巧大全
- 前端CSS预处理器Sass
- Unity3D API 知识点积累
- sparkR介绍及安装
- nagios 监控被监控服务器安装nrpe