微信支付前的准备工作

1 开发者资质认证

微信支付开发第一步就是使用公司管理者/高层帐号登录微信开放平台,进入“账号中心”,进行开发者资质认证,需要填写公司资料,包括但不限于,公司注册号,公 司营业执照,公司对外办公电话,公司对公银行卡信息(卡号,发卡行)。审核时间一般是1~7个工作日,我们一天就审核通过了,这一步非常简单。

备注:1、因为从2015年10月1日起,国家实行三证(组织机构代码证,企业营业执照,税务登记证)合一,所以组织机构代码处填写-工商执照注册号,同样,组织机构代码证,上传-企业工商营业执照。 
备注2:进行开发者资质认证需要支付300元人名币/年,只有具备开发者资质认证的开发者才能够使用app支付,授权登录等接口。

2、我们申请的微信支付审核通过以后,会收到一个来自官方的邮件,在新版本里面已经不会直接附上KEY,而是需要用户进入商户平台设置自己的KEY。

2  创建应用

根据所提示的信息填写即可。

申请通过之后就会有AppIDAppSecret  此时的appid不能直接拿来做微信支付,因为还有一个重要的一步要开通微信支付。

3  开通微信支付

详情请查阅微信APP支付接入商户服务中心

点击申请开通微信支付

根据提示填写相关的信息,开通微信支付审核比较严格,觉得有点坑,注意第三方支付公司和demo一定是审核不通过的!!!!

注意:如果app还没有上线而且界面还没有完善,可以用美工做好的图上传上去。审核时间一般7个工作日。

微信团队会在7个工作日给出审核结果,结果会发送到开放平台通知中心邮箱中,通过审核后,商户将收到邮件通知,邮件中包含商户号和登录密码,请牢记申请时填写的邮箱地址。后台也要绑定相关的商户号。

4  验证结算账户,在线签署协议

1)验证账户,签署协议:

微信支付会向申请时提交的结算账户汇入一笔金额随机的验证款,登陆商户平台 回填验证款,并签署在线协议,开启结算功能。

2)开始开发工作:

开发文档:微信支付App支付开发文档

微信支付详细步骤

1.获取订单信息

2.根据订单信息和支付相关的账号生成sign,并且生成支付参数

3.将支付参数信息POST到微信服务器,获取返回信息

4.根据返回信息生成相应的支付代码(微信内部)或是支付二维码(非微信内),完成支付。

1、后台设置

商户在微信开放平台申请开发应用后,微信开放平台会生成APP的唯一标识APPID。由于需要保证支付安全,需要在开放平台绑定商户应用包名和应用签名,设置好后才能正常发起支付。设置界面在【开放平台】中的栏目【管理中心 / 修改应用 / 修改开发信息】里面,如图红框内所示。

应用包名:是在APP项目配置文件AndroidManifest.xml中声明的package值,例如DEMO中的package="net.sourceforge.simcpux"。

应用签名:根据项目的应用包名和编译使用的keystore,可由签名工具生成一个32位的md5串,在调试的手机上安装签名工具后,运行可生成应用签名串,如图所示,绿色串即应用签名。签名工具下载地址https://open.weixin.qq.com/zh_CN/htmledition/res/dev/download/sdk/Gen_Signature_Android.apk

2   添加依赖包

Android Studio环境下:在build.gradle文件中,添加如下依赖即可:

dependencies {compile 'com.tencent.mm.opensdk:wechat-sdk-android-with-mta:+'
}

dependencies {compile 'com.tencent.mm.opensdk:wechat-sdk-android-without-mta:+'
}

3、注册APPID

商户APP工程中引入微信JAR包,调用API前,需要先向微信注册您的APPID,代码如下:

final IWXAPI msgApi = WXAPIFactory.createWXAPI(context, null);

// 将该app注册到微信

msgApi.registerApp("wxd930ea5d5a258f4f");

4 获取微信支付参数

把订单信息提交给后台,后台返回微信支付所用的值,比如paysing签名信息

5、调起支付


IWXAPI api;
PayReq request = new PayReq();
request.appId = "wxd930ea5d5a258f4f";
request.partnerId = "1900000109";
request.prepayId= "1101000000140415649af9fc314aa427",;
request.packageValue = "Sign=WXPay";
request.nonceStr= "1101000000140429eb40476f8896f4c9";
request.timeStamp= "1398746574";
request.sign= "7FFECB600D7157C5AA49810D2D8F28BC2811827B";
api.sendReq(request);

注意:该sign生成字段名列表见调起支付API

6、支付结果回调

在app包下新建wxapi包,比如app包名为com.test.app,那个新建的包路径为com.test.app.wxapi,该包下新建WXPayEntryActivity,继承自任意Activity。该Activity用以接收支付结果回调,清单声明此Activity的格式为(包名或类名不一致会造成无法回调)

在WXPayEntryActivity类中实现onResp函数,支付完成后,微信APP会返回到商户APP并回调onResp函数,开发者需要在该函数中接收通知,判断返回错误码,如果支付成功则去后台查询支付结果再展示用户实际支付结果。注意一定不能以客户端返回作为用户支付的结果,应以服务器端的接收的支付通知或查询API返回的结果为准。代码示例如下:


public void onResp(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。

WXPayEntryActivity代码示例

public class WXPayEntryActivity extends Activity implements IWXAPIEventHandler
{private static final String TAG = "MicroMsg.SDKSample.WXPayEntryActivity";private IWXAPI api;@Overridepublic void onCreate(Bundle savedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.allscore_pay_result);api.handleIntent(getIntent(), this);}@Overrideprotected void onNewIntent(Intent intent){super.onNewIntent(intent);setIntent(intent);}@Overridepublic void onReq(BaseReq req){}@Overridepublic void onResp(BaseResp resp){if (resp.getType() == ConstantsAPI.COMMAND_PAY_BY_WX){// resp.errCode == -1 原因:支付错误,可能的原因:签名错误、未注册APPID、项目设置APPID不正确、注册的APPID与设置的不匹配、其他异常等// resp.errCode == -2 原因 用户取消,无需处理。发生场景:用户不支付了,点击取消,返回APPif (resp.errCode == 0) // 支付成功{Toast.makeText(this, "支付成功", Toast.LENGTH_SHORT).show();}else{Toast.makeText(this, "支付取消" , Toast.LENGTH_SHORT).show();}finish();}}}

好了,微信支付的详细流程已经完成,如果最终结果掉不起来就看自己的包名,签名(微信支付必须正式打包测试

最方便的一种形式在build.gradle中写上你的签名包就可以啦~

//签名信息配置signingConfigs {release {storeFile file("./keystore/jxshop.jks")keyAlias "all"storePassword "all123"keyPassword "all123"}debug {storeFile file("./keystore/jxshop.jks")keyAlias "all"storePassword "all123"keyPassword "all123"}}

微信支付开发准备工作和详细步骤相关推荐

  1. 工作笔记——微信支付开发相关知识整理

    在最近的工作中,引入了微信小程序支付,在开发过程中积累和整理了一些技术知识,现将其整理如下 目录 一.概念认识 (一)术语介绍 (二)名词解释 (四)对接微信支付接口规则整理 二.微信支付开发参考 ( ...

  2. 微信支付开发教程(公众号支付)

    前段时间公司电商项目需要接入微信支付,因此研究了一下如何使用微信支付.和支付宝支付相比,微信支付相对复杂一些,需要配置的东西更多,限制也更多.经过两天的研究,终于搞定微信支付,在这里对于使用微信支付的 ...

  3. 微信支付开发(6) 收货地址共享接口

    关键字:微信支付 收货地址共享 作者:方倍工作室 原文: http://www.cnblogs.com/txw1958/p/weixin-editAddress.html 请看新版教程  微信支付开发 ...

  4. JSAPI微信支付开发流程和坑

    首先,我先简要说明一下微信支付开发的流程 众所周知,工欲善其事,必先利其器,微信官方推出了web微信开发工具,有windows.linux.版本的,根据自己的开发环境选择合适自己的,登陆公众平台--& ...

  5. 微信支付开发,基于SpringBoot+Vue架构的Java在线支付项目

    目录 前言 1. 支付安全 1.1 对称加密和非对称加密 1.2 身份认证 1.3 摘要算法 1.4 数字签名和数字证书 2. 项目初期 2.1 构建测试 2.2 引入Swagger 2.3 引入lo ...

  6. 转:微信支付开发关键点技术解析

    原文来自于:http://www.csdn.net/article/2014-10-21/2822207-weiixn 微信支付是由微信及财付通联合推出的移动支付创新产品.如今,随着微信支付的全面开放 ...

  7. 微信支付开发关键点技术解析

    微信支付是由微信及财付通联合推出的移动支付创新产品.如今,随着微信支付的全面开放,相关需求也越来越多,很多开发人员进行微信支付开发及 商家申请微信支付时,面临着诸多疑惑.本文将结合微信支付接口开发的实 ...

  8. 公众号微信支付开发手记

    作者:wallimn 时间:2017-02-27 本人原创,欢迎转载,转载请保留本文链接.本文地址:http://wallimn.iteye.com/blog/2359379 花了两天时间,琢磨了一下 ...

  9. 微信支付开发(7) 告警通知

    本文介绍微信支付中如何获得告警通知. 一.告警通知 为了及时通知商户异常,提高商户在微信平台的服务质量.微信后台会向商户推送告警通知,包括发货延迟.调用失败.通知失败等情况,通知的地址是商户在申请支付 ...

最新文章

  1. xpath技术解析xml以及案例模拟用户登录效果
  2. python面试题库——3数据库和缓存
  3. java 6 jaxb_JAVA6开发WebService (五)—— JAXB
  4. react实现页面多个模块的切换
  5. (转载)SQL Server2008附加数据库之后显示为只读时解决方法
  6. struts html:radio标签的初始值与判断
  7. ping下主服务器mysql_mysql主从同步配置
  8. 牛客网训练赛26D(xor)
  9. TCP、UDP、HTTP
  10. 在网页在播放flv格式的视频
  11. Luogu P4109 [HEOI2015]定价 贪心
  12. Julia: array =tuple, 与 ...
  13. 手机android微信文件怎么恢复,微信文件过期或被清理怎么恢复?好工具,帮你安全快速找回文件!...
  14. 慢就是快的人生哲理_慢一点人生哲理
  15. C# 基础学习第四天
  16. Anaconda Prompt到底是什么? 和系统自带cmd命令提示窗区别又是什么?
  17. 怎么隐藏CAD文件里的图层?
  18. 微信支付异常(“应答的微信支付签名验证失败“)记录
  19. 什么是自动化测试框架?这就是自动化测试框架。
  20. Artemis资源限制(17)

热门文章

  1. excel 如何超链接到另一个工作薄下查找相同字符数据
  2. SQL,什么时候用自身连接????
  3. 如果Iphone被偷了,能找回来吗?
  4. 这 5 本数据分析书籍,都是经典中的经典
  5. C++游戏天堂——经典型(2)
  6. Cloudflare找不到服务器 IP 地址
  7. 本题要求实现一个计算非负整数阶乘的简单函数
  8. Dev的panelcontrol
  9. MyEclipse10激活方法
  10. 2021129:linux篇-查看压缩包里面的内容