Android微信支付接入

一、 前期准备

  • 申请开发者账号

    • 在微信开放平台申请一个开发者账号,并开通开发者资质,一年300人民币,这个资质如果不开通就无法获取微信支付的功能。
  • 申请应用

    • 点击创建应用,创建一个移动应用


    • 获取支付权限
      这里需要绑定微信商户号,微信商户号需要单独申请。这些工作一般都是商务人员来做。

      前期准备资料链接: https://open.weixin.qq.com/cgi-bin/showdocument?action=dir_list&t=resource/res_list&verify=1&id=open1419317780&token=&lang=zh_CN

    • 微信开放平台配置相关参数

      这里有详细的说明。

二、微信支付业务流程
统一下单API、支付结果通知API和查询订单API等都涉及签名过程,调用都必须在服务器端完成。

商户系统和微信支付系统主要交互说明:
步骤1:用户在商户APP中选择商品,提交订单,选择微信支付。
步骤2:商户后台收到用户支付单,调用微信支付统一下单接口。
步骤3:统一下单接口返回正常的prepay_id,再按签名规范重新生成签名后,将数据传输给APP。参与签名的字段名为appid,partnerid,prepayid,noncestr,timestamp,package。注意:package的值格式为Sign=WXPay
步骤4:商户APP调起微信支付。
步骤5:商户后台接收支付通知。
步骤6:商户后台查询支付结果。
三、接入步骤
步骤一:在微信开放平台现在最新sdk,并集成到项目中。
步骤二:在应用启动的时候初始化api

IWXAPI msgApi = WXAPIFactory.createWXAPI(context, APP_ID);msgApi.registerApp("wxd930ea5d5a258f4f");

步骤三:调起支付

PayReq req = new PayReq();
PayResult.DataBean data = payResult.getData();
req.appId = data.getAppId();
req.partnerId = data.getPartnerId();
req.prepayId = data.getPrepayId();
req.packageValue = data.getPackageX();
req.nonceStr = data.getNonceStr();
req.timeStamp = data.getTimeStamp();
req.sign = data.getSign();
// 在支付之前,如果应用没有注册到微信,应该先调用IWXMsg.registerApp将应用注册到微信
LogUtil.logByD("PAY_GET", req.toString());
if (!api.isWXAppInstalled()) {AppUtil.showToastMsg(view.getFragment().getContext(), "您还未安装微信客户端,请先安装微信客户端");return;
}
api.sendReq(req);


在调用支付之前需要统一下单,这个操作在服务端进行,上面的payResult就是服务端返回的统一下单结果。

步骤四、支付结果回调
参照微信SDK Sample,在net.sourceforge.simcpux.wxapi包路径中实现WXPayEntryActivity类(包名或类名不一致会造成无法回调),在WXPayEntryActivity类中实现onResp函数,支付完成后,微信APP会返回到商户APP并回调onResp函数,开发者需要在该函数中接收通知,判断返回错误码,如果支付成功则去后台查询支付结果再展示用户实际支付结果。注意一定不能以客户端返回作为用户支付的结果,应以服务器端的接收的支付通知或查询API返回的结果为准。

publicvoidonResp(BaseRespresp){if(resp.getType()==ConstantsAPI.COMMAND_PAY_BY_WX){Log.d(TAG,"onPayFinish,errCode="+resp.errCode);AlertDialog.Builderbuilder=newAlertDialog.Builder(this);builder.setTitle(R.string.app_tip);}
}

返回结果码

回调中errCode值列表:名称  描述  解决方案
0   成功  展示成功页面
-1  错误  可能的原因:签名错误、未注册APPID、项目设置APPID不正确、注册的APPID与设置的不匹配、其他异常等。
-2  用户取消    无需处理。发生场景:用户不支付了,点击取消,返回APP。

接受到结果后展示不同的结果。至此,维信支付就全部完成了。

# Android微信支付接入相关推荐

  1. android 微信支付过程,android 微信 支付 接入流程总结

    [TOC] 客户端微信支付 登录微信官方开放平台微信,注册账号,在微信开放平台申请应用,输入已上线app的正式的应用包名和签名,微信提供了一个签名工具,一般使用它提供的签名工具生成签名,然后填写到对应 ...

  2. android微信支付回调方法,Android接入支付宝和微信支付的方法

    前言 很多APP都需要支付功能,国内一般就是支付宝和微信了.目前这2种接入方式对于APP端来说都已经比较方便了,因为大部分的安全校验之类的逻辑都在服务端. APP端总结起来就是三步走: 接入支付的库 ...

  3. android+微信支付

    微信支付 目录 微信支付 1 一. 创建应用 2 二. 支付集成 5 1.body字段格式 8 三. 参考网址 12 四. Android Studio的两种模式及签名配置 12 一. 创建应用 1& ...

  4. android 微信支付接口申请分享

    开头不那么多废话直接给大家上过程:1.进入微信开发平台 连接 [微信开发平台](https://open.weixin.qq.com/) 登陆帐号然后选择移动应用接入. 进去进行创建应用,创建的时候要 ...

  5. android6.0 微信支付,Android - 微信支付

    "支付宝接入要5分钟,微信支付接入要5小时" 有做过支付经验的人,应该对这句话有些微感触.虽然没那么夸张,但确实微信支付的参考文档没有支付宝人性化.下面记录一下我对微信支付的一些理 ...

  6. ReactNative 安卓支付宝微信支付接入

    微信支付接入 首先,在android/src/main/java/* 新建 pay支付文件夹,如下所示: 新建 wechat ,在文件夹里面新建 Const.java, WeChatPay.java ...

  7. C#开发微信门户及应用(32)--微信支付接入和API封装使用

    C#开发微信门户及应用(32)--微信支付接入和API封装使用 在微信的应用上,微信支付是一个比较有用的部分,但也是比较复杂的技术要点,在微商大行其道的年代,自己的商店没有增加微信支付好像也说不过去, ...

  8. android微信支付代码,详解android微信支付实例代码

    这篇文章主要为大家详细介绍了http://www.php.cn/wiki/1502.html" target="_blank">android微信支付源码,具有一定 ...

  9. Android 微信支付总结

    由于公司运营需要,Android客户端要增加微信支付.在看了几遍官方文档之后,加上之前有集成微信分享的经验,所以很快就把调用微信支付的代码写好了,待微信支付相关接口完成后联调时,才发现山高路远坑深啊! ...

  10. android微信支付问题总结

    首先我们先看一个android微信支付时遇到的一个错误提示: onPayFinish, errCode = -1 当你参数签名都没有问题的时候,出现这个提示,请按照如下操作: 在你的项目测试andro ...

最新文章

  1. 准确理解 Precision 准确率, Recall 召回率 , IoU
  2. [专栏目录]-ATF/FF-A/specification学习 -- ongoing
  3. jsp访问java方法_JSP基础知识之访问JavaBean的方法
  4. Java黑皮书课后题第4章:*4.15(电话键盘)电话上的国际标准字母/数字映射如下所示。编写程序,提示用户输入一个小写或大写字母,然后显示对应数字。对于非字母输入,提示非法输入
  5. 非常不错的Nodejs工具:http-console
  6. 将一个压缩文件分成多个压缩文件;RAR文件分卷
  7. Python学习5 元组基础知识和常用函数
  8. 亚马逊招聘实习生,ML、CV、机器人和语音处理领域
  9. python isinstance_Python之isinstance | 学步园
  10. Sql Server 存储过程分页大全(2005,2000)
  11. 16汇编第十讲完结Call变为函数以及指令的最后讲解
  12. struts2学到屎挫死-学习笔记(4)
  13. 数列收敛,极限值唯一
  14. 数据分析 --- 如何处理脏数据
  15. 小步快跑 快速迭代(整理)
  16. 获取6050原始数据
  17. 数字系统实验—第11-12周任务(认识数据存储芯片HM62256、IP核、LPM开发流程和平台、 IIC串行总线时序分析)
  18. SP10108 BALLOT - Distributing Ballot Boxes(二分查找)
  19. android svg路径动画,Android和播放SVG动画
  20. 计算机平面设计教材,《计算机平面设计软件应用——全国中等职业技术学校计算机教材》低价购书_教材教辅考试_孔网...

热门文章

  1. CH340预安装成功不能显示端口解决办法
  2. 基于YOLOv5及labelImg的图形化半自动标注工具labelGo
  3. 2022年机修钳工(初级)考试题库及在线模拟考试
  4. UWB定位系统在工业领域的重要作用
  5. 夏令营面试经验——反思总结(更新ing)
  6. camera杂项---镜头
  7. 串口通信USART(标准库)
  8. 宁作我,遗恨最小化 - 酒馆来信 006​
  9. 使用Mybatis-plus为什么出现数据库id很大或者为负数
  10. 阅读郭霖《第一行代码》的笔记——第12章 Android特色开发,使用传感器