微信支付开发准备工作和详细步骤
微信支付前的准备工作
1 开发者资质认证
微信支付开发第一步就是使用公司管理者/高层帐号登录微信开放平台,进入“账号中心”,进行开发者资质认证,需要填写公司资料,包括但不限于,公司注册号,公 司营业执照,公司对外办公电话,公司对公银行卡信息(卡号,发卡行)。审核时间一般是1~7个工作日,我们一天就审核通过了,这一步非常简单。
备注:1、因为从2015年10月1日起,国家实行三证(组织机构代码证,企业营业执照,税务登记证)合一,所以组织机构代码处填写-工商执照注册号,同样,组织机构代码证,上传-企业工商营业执照。
备注2:进行开发者资质认证需要支付300元人名币/年,只有具备开发者资质认证的开发者才能够使用app支付,授权登录等接口。2、我们申请的微信支付审核通过以后,会收到一个来自官方的邮件,在新版本里面已经不会直接附上KEY,而是需要用户进入商户平台设置自己的KEY。
2 创建应用
根据所提示的信息填写即可。
申请通过之后就会有AppID和AppSecret 此时的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"}}
微信支付开发准备工作和详细步骤相关推荐
- 工作笔记——微信支付开发相关知识整理
在最近的工作中,引入了微信小程序支付,在开发过程中积累和整理了一些技术知识,现将其整理如下 目录 一.概念认识 (一)术语介绍 (二)名词解释 (四)对接微信支付接口规则整理 二.微信支付开发参考 ( ...
- 微信支付开发教程(公众号支付)
前段时间公司电商项目需要接入微信支付,因此研究了一下如何使用微信支付.和支付宝支付相比,微信支付相对复杂一些,需要配置的东西更多,限制也更多.经过两天的研究,终于搞定微信支付,在这里对于使用微信支付的 ...
- 微信支付开发(6) 收货地址共享接口
关键字:微信支付 收货地址共享 作者:方倍工作室 原文: http://www.cnblogs.com/txw1958/p/weixin-editAddress.html 请看新版教程 微信支付开发 ...
- JSAPI微信支付开发流程和坑
首先,我先简要说明一下微信支付开发的流程 众所周知,工欲善其事,必先利其器,微信官方推出了web微信开发工具,有windows.linux.版本的,根据自己的开发环境选择合适自己的,登陆公众平台--& ...
- 微信支付开发,基于SpringBoot+Vue架构的Java在线支付项目
目录 前言 1. 支付安全 1.1 对称加密和非对称加密 1.2 身份认证 1.3 摘要算法 1.4 数字签名和数字证书 2. 项目初期 2.1 构建测试 2.2 引入Swagger 2.3 引入lo ...
- 转:微信支付开发关键点技术解析
原文来自于:http://www.csdn.net/article/2014-10-21/2822207-weiixn 微信支付是由微信及财付通联合推出的移动支付创新产品.如今,随着微信支付的全面开放 ...
- 微信支付开发关键点技术解析
微信支付是由微信及财付通联合推出的移动支付创新产品.如今,随着微信支付的全面开放,相关需求也越来越多,很多开发人员进行微信支付开发及 商家申请微信支付时,面临着诸多疑惑.本文将结合微信支付接口开发的实 ...
- 公众号微信支付开发手记
作者:wallimn 时间:2017-02-27 本人原创,欢迎转载,转载请保留本文链接.本文地址:http://wallimn.iteye.com/blog/2359379 花了两天时间,琢磨了一下 ...
- 微信支付开发(7) 告警通知
本文介绍微信支付中如何获得告警通知. 一.告警通知 为了及时通知商户异常,提高商户在微信平台的服务质量.微信后台会向商户推送告警通知,包括发货延迟.调用失败.通知失败等情况,通知的地址是商户在申请支付 ...
最新文章
- xpath技术解析xml以及案例模拟用户登录效果
- python面试题库——3数据库和缓存
- java 6 jaxb_JAVA6开发WebService (五)—— JAXB
- react实现页面多个模块的切换
- (转载)SQL Server2008附加数据库之后显示为只读时解决方法
- struts html:radio标签的初始值与判断
- ping下主服务器mysql_mysql主从同步配置
- 牛客网训练赛26D(xor)
- TCP、UDP、HTTP
- 在网页在播放flv格式的视频
- Luogu P4109 [HEOI2015]定价 贪心
- Julia: array =tuple, 与 ...
- 手机android微信文件怎么恢复,微信文件过期或被清理怎么恢复?好工具,帮你安全快速找回文件!...
- 慢就是快的人生哲理_慢一点人生哲理
- C# 基础学习第四天
- Anaconda Prompt到底是什么? 和系统自带cmd命令提示窗区别又是什么?
- 怎么隐藏CAD文件里的图层?
- 微信支付异常(“应答的微信支付签名验证失败“)记录
- 什么是自动化测试框架?这就是自动化测试框架。
- Artemis资源限制(17)