android应用集成微信支付
2016-02-22 12:54
573 查看
商户应用接入微信支付申请, 略, 具体见官网步骤(https://open.weixin.qq.com/cgi-bin/frame?t=resource/res_main_tmpl&verify=1&lang=zh_CN 移动应用开发->微信支付功能->微信APP支付接入商户服务中心,里面包含了1. 申请流程指引 2. 开放类目及资费标准 3. 常见商户接入问题)场景介绍
举例请见:APP端开发说明
然后是AndroidManifest文件里面的配置:1. 这个<intent-filter>过滤要放在你的启动界面的activity中.
适用于商户在移动端APP中集成微信支付功能。 商户APP调用微信提供的SDK调用微信支付模块,商户APP会跳转到微信中完成支付, 支付完后跳回到商户APP内,最后展示支付结果。 交互细节如下: 步骤1:用户进入商户APP,选择商品下单、确认购买,进入支付环节。商户服务后台生成支付订单,签名后将数据传输到APP端 步骤2:用户点击后发起支付操作,进入到微信界面,调起微信支付,出现确认支付界面 步骤3:用户确认收款方和金额,点击立即支付后出现输入密码界面,可选择零钱或银行卡支付 步骤4:输入正确密码后,支付完成,用户端微信出现支付详情页面 步骤5:回跳到商户APP中,商户APP根据支付结果个性化展示订单处理结果
总的业务流程图,源图来自 https://pay.weixin.qq.com/wiki/doc/api/app.php?chapter=8_3
Android开发要点说明 原文链接: https://pay.weixin.qq.com/wiki/doc/api/app.php?chapter=8_5
1、后台设置商户在微信开放平台申请开发应用后,微信开放平台会生成APP的唯一标识APPID。由于需要保证支付安全,需要在开放平台绑定商户应用包名和应用签名,设置好后才能正常发起支付。设置界面在【开放平台】中的栏目【管理中心 / 修改应用 / 修改开发信息】里面,如图8.8红框内所示。 图8.8应用包名:是在APP项目配置文件AndroidManifest.xml中声明的package值,例如DEMO中的package="net.sourceforge.simcpux"。应用签名:根据项目的应用包名和编译使用的keystore,可由签名工具生成一个32位的md5串,在调试的手机上安装签名工具后,运行可生成应用签名串,如图8.9所示,绿色串即应用签名。签名工具下载地址https://open.weixin.qq.com/zh_CN/htmledition/res/dev/download/sdk/Gen_Signature_Android.apk 图8.92、注册APPID商户APP工程中引入微信JAR包,调用API前,需要先向微信注册您的APPID,代码如下:API调用前,需要先向微信注册您的APP,代码如下:final IWXAPI msgApi = WXAPIFactory.createWXAPI(context, null);// 将该app注册到微信msgApi.registerApp("wxd930ea5d5a258f4f");3、调起支付商户服务器生成支付订单,先调用统一下单API(详见第7节)生成预付单,获取到prepay_id后将参数再次签名传输给APP发起支付。以下是调起微信支付的关键代码: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(req);注意:该sign生成字段名列表见调起支付API4、支付结果回调参照微信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。 |
调起支付API
应用场景
APP端调起支付的参数列表接口链接
无是否需要证书
否请求参数
字段名 | 变量名 | 类型 | 必填 | 示例值 | 描述 |
---|---|---|---|---|---|
公众账号ID | appid | String(32) | 是 | wx8888888888888888 | 微信分配的公众账号ID |
商户号 | partnerid | String(32) | 是 | 1900000109 | 微信支付分配的商户号 |
预支付交易会话ID | prepayid | String(32) | 是 | WX1217752501201407033233368018 | 微信返回的支付交易会话ID |
扩展字段 | package | String(128) | 是 | Sign=WXPay | 暂填写固定值Sign=WXPay |
随机字符串 | noncestr | String(32) | 是 | 5K8264ILTKCH16CQ2502SI8ZNMTM67VS | 随机字符串,不长于32位。推荐随机数生成算法 |
时间戳 | timestamp | String(10) | 是 | 1412000000 | 时间戳,请见接口规则-参数规定 |
签名 | sign | String(32) | 是 | C380BEC2BFD727A4B6845133519F3AD6 | 签名,详见签名生成算法 |
返回结果
名称 | 描述 | 解决方案 |
---|---|---|
0 | 成功 | 展示成功页面 |
-1 | 错误 | 可能的原因:签名错误、未注册APPID、项目设置APPID不正确、注册的APPID与设置的不匹配、其他异常等。 |
-2 | 用户取消 | 无需处理。发生场景:用户不支付了,点击取消,返回APP。 |
<intent-filter> <action android:name="android.intent.action.VIEW" /> <category android:name="android.intent.category.DEFAULT" /> <data android:scheme="填写微信平台申请的appId" /> </intent-filter>
2. <!--微信支付回调--> <activity android:name="com.wans51.wxapi.WXPayEntryActivity" android:theme="@android:style/Theme.Translucent.NoTitleBar" android:exported="true" android:launchMode="singleTop"/>
基本配置就这些了,具体如何调起微信支付,可以参考官方demo,照着修改修改就可以了,官方demo链接:
https://pay.weixin.qq.com/wiki/doc/api/app.php?chapter=11_1
服务端需要注意的问题:
相关文章推荐
- 微信分享不显示缩略图,但显示标题和摘要
- 微信第三方登录接口
- 微信接口php
- 采用java单例模式实现微信AccessToken和Jsapi_ticket缓存支持
- 微信研究 如何把微信中的文章转发到微信企业号应用中?(图文)
- 微信研究 如何把微信中的文章转发到企业号应用中?(图文)
- 微信转账选错人,好友收钱后手机关机
- 剖析微信等即时通讯常用组件(一)
- 关于微信公众平台接口的开发
- JAVA实现仿微信红包分配规则
- 欢迎关注个人微信公众号:icsoc
- 微信开发基础教程
- H5小游戏定制开发,微信游戏定制开发公司 -找向阳花科技!
- gameboy网页闯关游戏(riddle webgame)--仿微信聊天的前端页面设计和难点
- asp.net mvc 5 微信接入VB版 - 获取AccessToken
- (字母排序搜索)类似微信通讯录效果
- 完整的微信登陆 接收消息流程
- iOS 9中需要使用 QQ/QQ空间/支付宝/微信SDK 的相关能力(分享、收藏、支付、登录等)时,需要在“Info.plist”里增加如下代码
- android 接入微信支付和分享填坑
- 微信公开课系列视频 观后感