https://pay.weixin.qq.com/wiki/doc/api/app/app.php?chapter=2_1
商户账号获取方式:
http://kf.qq.com/faq/140225MveaUz140926ni2ERR.html
结算规则、费率、周期:
http://kf.qq.com/faq/140225MveaUz1504092YFjeM.html
微信开发工具包和范例代码demo:
https://open.weixin.qq.com/cgi-bin/showdocument?action=dir_list&t=resource/res_list&verify=1&id=open1419319167&token=&lang=zh_CN
开发步骤
1. App微信商户申请(申请步骤)
重点是:申请审核服务费300/次才可以使用微信支付功能,获得AppID
另外微信支付有两个平台分别是开发者平台和商户平台
开发者平台:主要是针对开发者,比如:创建应用,获取appid
商户平台:主要是商户上面的一些管理,比如:可以查看流水,订单呀
2. 创建应用:
需要的平台,以及平台的信息,填入包名,签名,最后提交审核,等待审核完后,大概就可以看到这样的基本信息界面
个人账号创建的应用审核通过后只有分享功能,如果还需要支付功能,可以点击申请,然后认证账号并上传一些资料,等待审核成功
3. 上面有列出微信的一些工具等东西,下载好demo,导入demo并且运行:
Demo可以完全支付了说明现在的Demo就已经完全配置好了微信的开发环境了,我们只需要参照这个Demo去配置我们自己的项目即可。
注:测试的Demo只支持调起一次微信支付,如需第二次可在系统设置中清除微信缓存数据即可
4. 后台设置
商户在微信开放平台申请开发应用后,微信开放平台会生成APP的唯一标识APPID。由于需要保证支付安全,需要在开放平台绑定商户应用包名和应用签名,设置好后才能正常发起支付。设置界面在【开放平台】中的栏目【管理中心 / 修改应用 / 修改开发信息】里面
应用包名:是在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
5. 配置微信开发环境:
a)把微信Demo中的“libammsdk.jar”复制到我们的项目libs文件夹中
b)把微信Demo中的清单文件AndroidManifest中的权限复制到我们的项目中
c)把微信Demo中的清单文件AndroidManifest中声明的支付相关的Activity声明复制到我们的项目中。注意,微信支付需要的Activity比较特殊,只需要一个(WXPayEntryActivity),这个Activity用于接收微信支付结果,这个Activity不是在jar包中的,是在Demo源码中的,我们需要把Demo中的这个Activity复制到我们的项目中,而且包名要保持不变,直接打开WXPayEntryActivity.java文件,Ctrl + A复制所有源码,然后在我们的项目src下直接粘贴,这样会自动创建和原来一样的包名。
在这个类中需要注意的地方有两个:
(1)、这个类中的布局是可以自定义的,如果你不需要展示什么布局,而是要跳转页面,把这段代码删除即可
(2)、回调结果的处理,下面是官方的处理方式,直接给了一个dialog,很多人会摸不着头脑,如果你不需要这个dialog,直接删除就好了
这里可以直接toast一下,如果你需要支付成功后跳转,那么直接在这里startActivity即可,别忘记最后要将这个页面finish()
6. 注册APPID
商户APP工程中引入微信JAR包,调用API前,需要先向微信注册您的APPID,代码如下:
final IWXAPImsgApi = WXAPIFactory.createWXAPI(context, null);
// 将该app注册到微信
msgApi.registerApp(“wxd930ea5d5a258f4f”);
7. 调起支付
商户服务器生成支付订单,先调用统一下单API生成预付单,获取到prepay_id后将参数再次签名传输给APP发起支付。以下是调起微信支付的关键代码
注意:该sign生成字段名列表见调起支付API
8.支付结果回调,接收微信的请求及返回值
参照微信SDK Sample,在net.sourceforge.simcpux.wxapi包路径中实现WXPayEntryActivity类(包名或类名不一致会造成无法回调),在WXPayEntryActivity类中实现onResp函数,支付完成后,微信APP会返回到商户APP并回调onResp函数,开发者需要在该函数中接收通知,判断返回错误码,如果支付成功则去后台查询支付结果再展示用户实际支付结果。注意一定不能以客户端返回作为用户支付的结果,应以服务器端的接收的支付通知或查询API返回的结果为准,详情请看5.—>c) —> (2)
(1)还要在manifest文件里面加上exported属性,设置为true,例如:
android:name=".wxapi.WXPayEntryActivity" android:exported=“true” android:launchMode=“singleTop”/> (2)实现IWXAPIEventHandler接口,微信发送的请求将回调到onReq方法,发送到微信请求的响应结果将回调到onResp方法 (3)在WXEntryActivity中将接收到的intent及实现了IWXAPIEventHandler接口的对象传递给IWXAPI接口的handleIntent方法,示例如下图: 当微信发送请求到你的应用,将通过IWXAPIEventHandler接口的onReq方法进行回调,类似的,应用请求微信的响应结果将通过onResp回调。 回调中errCode值列表: 9.里面还有很多api可以调用,详情看开发者文档 10.微信支付接入不成功常见的问题 http://wxpay.wxutil.com/qa/index.php?qa=app_pay 11. 如果需要混淆代码,为了保证sdk的正常使用,需要在proguard.cfg加上下面两行配置: