前言

上一篇写了支付宝支付,这一篇说下微信支付,废话不多说直接开门见山

接入流程

1.申请开发者资质

地址:https://open.weixin.qq.com/

使用公司管理者/高层帐号登录微信开放平台,进入“账号中心”,进行开发者资质认证,需要填写公司资料,包括但不限于,公司注册号,公司营业执照,公司对外办公电话,公司对公银行卡信息(卡号,发卡行)。审核时间为一周左右。

2.申请APP_ID/APP_KEY

每个应用/游戏要调用微信的接口都需要有一个微信标志,这个唯一标志通常成为APP_ID或者APP_KEY,各开放平台差异不大
进入管理中心,创建移动应用,每个开发者具有10个应用的创建机会。
备注:测试支付时,务必使用申请时填写的keystore文件签名,包名也需要核对清楚,必然无法调起支付,返回-1错误码。

3.申请支付能力

在管理中心,查看需要集成支付能力的app,找到“微信支付”一栏,点击右侧“申请开通”,填写一些企业信息后等待审核,审核时间为一周左右,审核通过后,会得到一个企业商户号及密码,对公银行卡中将收到几分钱,进入商户平台,输入收到的金钱金额以验证。验证通过后即可开始集成支付调用。在这之前,调用支付接口是无法完成支付的。

4.代码集成微信支付

这一个是微信官网提供的App支付时序图,商户系统和微信支付系统主要交互说明:
步骤1:用户在商户APP中选择商品,提交订单,选择微信支付。
步骤2:商户后台收到用户支付单,调用微信支付统一下单接口。参见【统一下单API】。
步骤3:统一下单接口返回正常的prepay_id,再按签名规范重新生成签名后,将数据传输给APP。参与签名的字段名为appId,partnerId,prepayId,nonceStr,timeStamp,package。注意:package的值格式为Sign=WXPay
步骤4:商户APP调起微信支付。api参见本章节【app端开发步骤说明】
步骤5:商户后台接收支付通知。api参见【支付结果通知API】
步骤6:商户后台查询支付结果。,api参见【查询订单API】

说这么复杂,其实整个流程,App做的就是从后台取到的微信支付需要的参数,然后调起微信,微信返回支付结果,然后微信服务器异步回调给我们自己后台服务器。
1:Eclipse添加jar包,Android studio添加依赖库
2:修改清单文件(添加权限、注册activity),其中微信的回调结果是通过他们定义好的在wxapi包下的一个叫WXPayEntryActivity返回的,不能改整个名字不然看不到回调结果。

 <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"/><activityandroid:name=".wxapi.WXPayEntryActivity"android:exported="true"android:launchMode="singleTop"/>

3:首先根据后台返回参数,调起微信

IWXAPI mWxApi = WXAPIFactory.createWXAPI(mContext, WX_APPID, true);
PayReq req = new PayReq();
mWxApi.registerApp(WX_APPID);/*** 请求app服务器得到的回调结果*/@Overridepublic void onSuccess(JSONObject jsonObject) {if (mWxApi != null) {PayReq req = new PayReq();req.appId = WX_APPID;// 微信开放平台审核通过的应用APPIDtry {req.partnerId = jsonObject.getString("partnerid");// 微信支付分配的商户号req.prepayId = jsonObject.getString("prepayid");// 预支付订单号,app服务器调用“统一下单”接口获取req.nonceStr = jsonObject.getString("noncestr");// 随机字符串,不长于32位,服务器小哥会给咱生成req.timeStamp = jsonObject.getString("timestamp");// 时间戳req.packageValue = jsonObject.getString("package");// 固定值Sign=WXPay,可以直接写死,服务器返回的也是这个固定值req.sign = jsonObject.getString("sign");// 签名,后台根据据:https://pay.weixin.qq.com/wiki/doc/api/app/app.php?chapter=4_3指导得到这个} catch (JSONException e) {e.printStackTrace();}mWxApi.sendReq(req);Log.d("发起微信支付申请");}}

4:查看支付结果

public class WXPayEntryActivity extends Activity implements IWXAPIEventHandler{
private static final String TAG = "MicroMsg.SDKSample.WXPayEntryActivity";
private IWXAPI api;
private static final String APP_ID = "your app id";@Override
public void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.pay_result);api = WXAPIFactory.createWXAPI(this, 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);// 支付结果码
}

}

最后提醒大家注意坑点:
1:测试微信支付需要给微信开放平台的签名改成你的未签名,因为签名后的apk你看不到debug日志,但是上线时要改成正式打包的apk签名。
2:当支付时,微信尚未登录,得不到任何回调,如果调起支付时有弹窗进度框,并且你想在得到响应码后让它消失是行不通的,需要在跳出的onStop中处理进度条,不然未登录并且用户取消了支付时进度条无法消失。
3:当支付时,WXPayEntryActivity会以透明的形式启动,所以你可能需要在支付完成得到支付响应码后手动finish该activity,不然你自己写的支付页面的activity需要返回两次才能退出,因为第一次按下back键实际是finish掉WXPayEntryActivity.第二次才是你自己的activity.

这就是微信支付集成的所有流程,最后附一个官方demo

https://pay.weixin.qq.com/wiki/doc/api/app/app.php?chapter=11_1

第三方支付之微信支付相关推荐

  1. 第三方支付、个人免签约支付、微信支付、支付宝支付、个人网站支付

    第三方支付.个人免签约支付.微信支付.支付宝支付.个人网站支付 很多个人建站,在接支付的过程中,都会遇见很多问题,比如没有资质/网站没有备案/接口文档复杂等等,现在比较好了,有一个第三方收款平台EL支 ...

  2. 云炬Android开发笔记 13购物车,订单,支付功能开发(包含支付宝支付和微信支付)

    阅读目录 1.购物车UI编写 1.1 购物车布局  1.2 recycleView中的item的布局 2. 购物车数据结构分析.解析与转化 2.1 解析的数据 2.2 数据的转化 2.3 数据适配器的 ...

  3. pay-spring-boot 开箱即用的Java支付模块,整合支付宝支付、微信支付

    关于 使用本模块,可轻松实现支付宝支付.微信支付对接,从而专注于业务,无需关心第三方逻辑. 模块完全独立,无支付宝.微信SDK依赖. 基于Spring Boot. 依赖Redis. 我能做什么 支付宝 ...

  4. H5接入支付流程-微信支付支付宝支付

    业务场景: H5对接微信支付和支付宝支付,app无法发版,需要支持在app内和浏览器内同时使用. 于是借此机会对前端接入对第三方支付进行了调研,本次只讨论微信支付,和支付宝支付. 微信支付 文档地址: ...

  5. 西米支付:微信支付接口(申请与介绍)

    据统计,2022年微信全球用户数超12.8亿,其中微信支付使用人数达到6亿,而且微信支付在中国移动支付的市场份额超过40%,无论是在线上购物,还是线下收款,都能看到微信支付的身影,微信支付已经融入到我 ...

  6. 微信支付宝服务器在哪里,支付宝支付与微信支付服务端回调notify_url数据的区别...

    这两天优化了一下支付宝支付和微信支付订单回调的问题,之前我们的订单都是用手动回调给服务器,现在改成支付宝和微信原生的异步回调,结果并没有像我们想象的那么简单,支付宝是很顺利的解决回调,用一般的方式接收 ...

  7. 微信公众号中的支付宝支付与微信支付 支付宝支付问题(微信bug)

    一般,在微信公众号中的商城都是需要支持微信支付和支付宝支付的,当然,较大的公司对于鹅厂和阿里的站队就不说了,所以这里简单记录一下支付宝支付和微信支付的主要流程.说是简单介绍,这是因为确实不难,因为前端 ...

  8. 微信小程序-JAVA实现微信支付功能(微信支付2.0)

    微信小程序-JAVA实现微信支付功能(微信支付2.0) 一.前言 本博客主要介绍JAVA后台与微信小程序(UNI-APP或者原生微信小程序)的微信支付的实现,如果是APP或者H5的开发暂时不支持,具体 ...

  9. 支付宝支付和微信支付的记录和总结

    支付宝支付和微信支付的记录和总结 1. 支付宝支付的记录 1.没装支付宝app点击支付功能会调起h5支付页面,比微信方便. 2.支付结果会调直接在同一个函数内非常方便. 2.微信支付记录 1.支付调不 ...

  10. Android怎么集成支付宝支付和微信支付功能(上)

    看到网上写支付的文章不多,又有感于许多资料和官网内容中到处都有坑,填过坑的我决定让支付简单点(想起了我当初到处找资料的情景,唉,心累).为便于浏览,分为支付宝支付和微信支付上下两篇.看官请看..... ...

最新文章

  1. pytorch volatile 和 requires_grad
  2. 1.7 元注解作用及使用
  3. CTF训练计划—[CISCN2019]Easyweb
  4. mysql文件结构_MySQL文件结构
  5. python安装email模块,python 3.4.0电子邮件包安装:ImportError:没有名为'cStringIO'的模块...
  6. WinForm窗体重要属性与公共控件的重要属性
  7. 一. kafka 入门
  8. SDUT OJ 3403 数据结构实验之排序六:希尔排序
  9. 为什么属龙的有二婚命_88属龙的一生婚姻状况详细解析
  10. 绝了!深入分布式缓存从原理到实践技术分享,超详细
  11. for循环特殊的写法
  12. html css依赖管理,composer 管理js css等依赖文件【fxp/composer-asset-plugin】
  13. Word2vec And Doc2vec - 文本向量化
  14. 好佳居软装十大品牌 掌握新中式软装风格
  15. 软件体系结构层次风格
  16. 前端代理解决跨域问题
  17. 斐波那契数列重要不等式证明
  18. div上下左右居中老调重弹
  19. NMS和Soft-NMS的原理和Pytorch代码实现
  20. 实战TSA与HADR

热门文章

  1. Illustrator CS5初学者必读(10)——实时描摹图像
  2. 借“窄喉”之力,边缘计算期待“井喷”
  3. python数据分析:湖南省第七次人口普查可视化
  4. 2020年全球及中国连接器行业市场现状及竞争格局分析,以海外连接器企业为主导的旧有市场格局有望被颠覆「图」
  5. lodop套打模板设计代码
  6. LabVIEW串口通讯(数字传送)
  7. opencv 车牌字符分割 ANN网络识别字符
  8. 跟着Vamei大神-01初学play
  9. 可牛看图web开放平台---PHP表单上传代码分享
  10. 作为过来人的我是如何写博客的?