Android集成微信支付
来源:互联网 发布:仓位在线的数据真实吗 编辑:程序博客网 时间:2024/05/18 18:18
Android集成微信支付
微信支付和支付宝支付一样的,都可以在客户端发起支付并成功通过,但这样做的漏洞比较大,所以一定不要通过客户端直接来完成
1.首先需要 在客户端向服务器发起一个微信预支付操作:
请求参数如下:
body.put("loginUserId", loginUserId );body.put("title", title);body.put("business", business);body.put("orderId", orderId);body.put("charges", charges); // 注意这里的金额是要在实际金额*100body.put("employeeId", employeeId);body.put("WXAppId", Const.WX_APP_ID);
微信预支付操作处理后可以从微信服务器获取一个预支付id,然后再通过预支付id真正发起微信支付操作.
WXPayUtil payUtil = new WXPayUtil(mActivity); payUtil.doPayReq(bean.prepay_id); ``` 具体代码放一下,反正也没有什么机密 ``` public class WXPayUtil { private PayReq req = null; private IWXAPI msgApi = null; private StringBuffer sb = null; public WXPayUtil(final Activity activity) { this.req = new PayReq(); this.msgApi = WXAPIFactory.createWXAPI(activity, null); this.msgApi.registerApp(Constants.APP_ID); this.sb = new StringBuffer(); } /** * @work:生成签名参数 * @date:2015-9-7 上午11:48:04 * @author:hg_liuzl@163.com * @params: */ public void doPayReq(String prePayId) { req.appId = Constants.APP_ID; req.partnerId = Constants.MCH_ID; req.prepayId = prePayId; req.packageValue = "Sign=WXPay"; req.nonceStr = genNonceStr(); req.timeStamp = String.valueOf(genTimeStamp()); List<NameValuePair> signParams = new LinkedList<>(); signParams.add(new BasicNameValuePair("appid", req.appId)); signParams.add(new BasicNameValuePair("noncestr", req.nonceStr)); signParams.add(new BasicNameValuePair("package", req.packageValue)); signParams.add(new BasicNameValuePair("partnerid", req.partnerId)); signParams.add(new BasicNameValuePair("prepayid", req.prepayId)); signParams.add(new BasicNameValuePair("timestamp", req.timeStamp)); req.sign = genAppSign(signParams); sb.append("sign\n" + req.sign + "\n\n"); sendPayReq(); } /** * @work:启动支付 * @date:2015-9-7 上午11:49:51 * @author:hg_liuzl@163.com */ private void sendPayReq() { msgApi.registerApp(Constants.APP_ID); msgApi.sendReq(req); } private String genAppSign(List<NameValuePair> params) { StringBuilder sb = new StringBuilder(); for (int i = 0; i < params.size(); i++) { sb.append(params.get(i).getName()); sb.append('='); sb.append(params.get(i).getValue()); sb.append('&'); } sb.append("key="); sb.append(Constants.API_KEY); this.sb.append("sign str\n" + sb.toString() + "\n\n"); String appSign = MD5.getMessageDigest(sb.toString().getBytes()).toUpperCase(); return appSign; } private String genNonceStr() { Random random = new Random(); return MD5.getMessageDigest(String.valueOf(random.nextInt(10000)).getBytes()); } private long genTimeStamp() { return System.currentTimeMillis() / 1000; }
然后微信的操作如下:
public class WXPayEntryActivity extends Activity implements IWXAPIEventHandler{ /***微信支付结果*/ public static int mWXPayResult = -1; 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); } @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) { mWXPayResult = resp.errCode; if (resp.errCode == 0) //支付成功, { BToast.show(this, "支付成功!"); finish(); } else if(resp.errCode == -1) { //支付失败 BToast.show(this, "支付错误"); finish(); }else if(resp.errCode == -2){//取消支付 BToast.show(this, "您已经取消了支付!"); finish(); } } }}
这里我有一个全局静态变量mWXPayResult来标记微信支付是否成功的状态.
mPayBean.payResult = WXPayEntryActivity.mWXPayResult == 0; if (mPayBean.payResult) { doSubmit(); }
这个时候微信支付就处理完毕.
0 0
- android集成微信支付
- android集成微信支付
- Android 微信支付集成
- android集成微信支付
- Android集成微信支付
- Android微信支付集成
- Android集成微信支付
- Android集成微信支付
- Android 集成微信支付
- Android集成微信支付
- Android集成微信支付
- android集成微信支付
- Android集成微信支付
- Android集成微信支付
- Android 微信支付集成
- Android 集成微信支付
- android集成支付,支付宝,微信
- Android 集成微信支付V3
- 玩了一年的“假” AR,2017年你可能要认识一下“真”AR
- hdfs-文件上传告警脚本-编码开发
- yum安装的PHP卸载
- email_profile_detail.jsp
- 315. Count of Smaller Numbers After Self && 493. Reverse Pairs
- Android集成微信支付
- 错误The type XXX is deprecated解决
- Cygwin 安装好点击快捷方式闪退
- 新增系统级资源
- hive安装以及配置
- Java--API,Object类
- JavaScript总结
- mysql server 安装
- 【Python】Unittest,DDT,Selenium测试百度搜索