android集成微信支付
来源:互联网 发布:数据挖掘 常用模型 编辑:程序博客网 时间:2024/05/05 19:12
这里分享下android端集成微信支付的步骤。
一、首先到官网https://open.weixin.qq.com/创建一个应用,审核说是7天内。通过后获取AppID就可以进行愉快的开发了。
二、基本步骤就是移动端拼接好后天需要的购物车信息,后台返回随机验证码以及第三方的商家号,生成订单。然后我们再通过随机验证码以及第三方的商家号,确认支付信息,获取微信支付需要的一些参数,进行支付就可以了。然后会有一个通用的类进行回调(WXPayEntryActivity)
后台会返回的参数 PayReq req = new PayReq(); req.appId = APP_ID;//这个参数就是appid req.partnerId = ""; req.prepayId = ""; req.packageValue = ""; req.nonceStr = ""; req.timeStamp = ""; req.sign = ""; api.sendReq(req);
三、集成步骤:
1、copy官方文档中的wxapi文件夹进行修改
2、WXPayEntryActivity.java
package com.xxx.xxx.wxapi;import android.annotation.SuppressLint;import android.app.Activity;import android.content.Intent;import android.os.Bundle;import com.coofond.carservices.common.Constant;import com.coofond.carservices.utils.ToastUtil;import com.tencent.mm.opensdk.constants.ConstantsAPI;import com.tencent.mm.opensdk.modelbase.BaseReq;import com.tencent.mm.opensdk.modelbase.BaseResp;import com.tencent.mm.opensdk.openapi.IWXAPI;import com.tencent.mm.opensdk.openapi.IWXAPIEventHandler;import com.tencent.mm.opensdk.openapi.WXAPIFactory;/** * @description: 微信支付结果回调 * 回调中errCode值 * 0 成功 展示成功页面 * -1 错误 可能的原因:签名错误、未注册APPID、项目设置APPID不正确、注册的APPID与设置的不匹配、其他异常等。 * -2 用户取消 无需处理。发生场景:用户不支付了,点击取消,返回APP。 * @Author zsj on 2016/12/9 11:15. */public class WXPayEntryActivity extends Activity implements IWXAPIEventHandler { private IWXAPI api; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); api = WXAPIFactory.createWXAPI(this, Constant.WXAPP_ID); api.handleIntent(getIntent(), this); } @Override public void onReq(BaseReq baseReq) { } /** * launchMode为singleTask的时候,通过Intent启到一个Activity,如果系统已经存在一个实例, * 系统就会将请求发送到这个实例上,但这个时候,系统就不会再调用通常情况下我们处理请求数据的onCreate方法, * 而是调用onNewIntent方法 * 系统可能会随时杀掉后台运行的Activity,如果这一切发生,那么系统就会调用onCreate方法,而不调用onNewIntent方法, * 一个好的解决方法就是在onCreate和onNewIntent方法中调用同一个处理数据的方法 * * @param intent 当前实例 */ @Override protected void onNewIntent(Intent intent) { super.onNewIntent(intent); setIntent(intent); api.handleIntent(intent, this); } @SuppressLint("StringFormatInvalid") @Override public void onResp(BaseResp resp) { if (resp.getType() == ConstantsAPI.COMMAND_PAY_BY_WX) { if (resp.errCode == 0) { ToastUtil.toastCenter2(this, "支付成功"); } else { ToastUtil.toastCenter2(this, "支付失败,请重试"); } finish(); } }}
3、清单文件mainfest.xml
<!--微信支付--> <activity android:name=".wxapi.WXPayEntryActivity" android:exported="true" android:launchMode="singleTop"/>
4、获取到后台返回的参数后愉快地吊起微信支付吧
package com.xxx.xxx.bean;import com.google.gson.annotations.SerializedName;/** * @description: 微信支付回调 * @Author zsj on 2017/5/3 14:22. */public class WxPayBean { /** * noncestr : xx * prepayid : xx * sign : xxx * package : x=xx * timestamp : xx * partnerid : xx */ private String noncestr; private String prepayid; private String sign; @SerializedName("package") private String packageX; private String timestamp; private String partnerid; public String getNoncestr() { return noncestr; } public void setNoncestr(String noncestr) { this.noncestr = noncestr; } public String getPrepayid() { return prepayid; } public void setPrepayid(String prepayid) { this.prepayid = prepayid; } public String getSign() { return sign; } public void setSign(String sign) { this.sign = sign; } public String getPackageX() { return packageX; } public void setPackageX(String packageX) { this.packageX = packageX; } public String getTimestamp() { return timestamp; } public void setTimestamp(String timestamp) { this.timestamp = timestamp; } public String getPartnerid() { return partnerid; } public void setPartnerid(String partnerid) { this.partnerid = partnerid; }}
//微信支付 private void weChatPay(WxPayBean data) { IWXAPI api = WXAPIFactory.createWXAPI(this, Constant.WXAPP_ID); api.registerApp(Constant.WXAPP_ID); PayReq payrequest = new PayReq(); payrequest.appId = Constant.WXAPP_ID; payrequest.partnerId = data.getPartnerid(); payrequest.prepayId = data.getPrepayid(); payrequest.packageValue = data.getPackageX(); payrequest.nonceStr = data.getNoncestr(); payrequest.timeStamp = data.getTimestamp(); payrequest.sign = data.getSign(); //最后发起请求 api.sendReq(payrequest); }
四、就是这样了。good job
2 0
- android集成微信支付
- android集成微信支付
- Android 微信支付集成
- android集成微信支付
- Android集成微信支付
- Android微信支付集成
- Android集成微信支付
- Android集成微信支付
- Android 集成微信支付
- Android集成微信支付
- Android集成微信支付
- android集成微信支付
- Android集成微信支付
- Android集成微信支付
- Android 微信支付集成
- Android 集成微信支付
- android集成支付,支付宝,微信
- Android 集成微信支付V3
- 29. Divide Two Integers
- May_Day训练赛模拟题 HDOJ 3350 #define is unsafe
- file 相关
- Java中的IO流
- 第七章
- android集成微信支付
- 基本乐理知识
- linux下使用UDP实现简易的多人聊天室
- 4725: [POI2017]Reprezentacje ró?nicowe
- FIddler : CustomRules.js脚本解析get请求被加密的参数
- Spring Aop 日志管理
- ACM-二分贪心U-21
- 数据结构之一元多项式相乘
- CentOS 6.5 Git服务器搭建