微信APP支付:
如果之前没有在android端接入过微信支付,建议先看看 微信官方文档 ,
快应用接入微信App支付的过程和这个流程介绍中的一致,无非是发起的客户端由android app变成了快应用
快应用接入微信App支付的步骤介绍:
1.使用快应用的包名编译一个android app.
主要用来走微信后台的注册流程,不用有内容,helloworld就可以了
2.将步骤1中的android app 注册到 微信开放平台 ,并等待审核通过
主要注意的是,app的 支付能力是需要单独申请的 ,期间需要用到公司执照,耗时大概一个星期左右.
走流程的过程中,微信后台需要填写app的包名签名,包名就是快应用的包名了,签名的获取需要用到微信提供的一个工具,在 这个页面 可以下载的到
3.完成服务端的接入.
按照 微信官方的接入文档 进行接入,接入完成之后,服务器能正常向客户端返回订单信息,并且返回的订单信息能够使用 微信的校验工具 校验通过
4.在快应用中进行配置
主要是在manifest.json中声明wxpay这个feature是填上走微信后台注册流程时用到的包名和签名
这里填的签名需要使用 快应用的工具 获取,获取的方法和微信的工具一致,但是得到值和微信的不一样,不要和微信的签名混淆.
快应用接入微信支付的官方文档
微信H5支付:
如果之前没有在h5网站中接入过微信支付能力,建议先看看 微信官方文档
快应用中接入微信H5支付和微信文档中介绍的一致,快应用只是提供了一个运行H5网页的webView,使用h5页面拉起微信支付的能力给开发者提供微信支付的接口
快应用接入微信H5支付的步骤:
1.在微信开放平台新注册申请一个H5网站
https://open.weixin.qq.com/cgi-bin/frame?t=home/web_tmpl&lang=zh_CN
2.完成支付服务端的接入.
按照 微信官方的文档 完成服务端的接入,服务器要完成的工作是接收来自客户端的支付请求,然后生成一个订单,之后把订单传给微信的服务器,微信会返回一个mweb_url,服务器需要把这个mweb_url返回给客户端.
3.完成一个中间跳转页面
中间页需要在加载完成的时候从页面的get参数中解析出 mweb_url , 然后自动向这个url跳转,不需要任何其他的内容,也不需要ui
关于这个中间页:
1)为什么需要这个中间页?
因为微信h5支付拉起支付界面的方式就是向mweb_url跳转,不过因为微信会通过ref做防盗链检查,因为跳转动作需要在开发者的页面中完成
2)这个中间页什么时候会被加载运行?
调用微信支付的pay接口之后,平台会自动加载运行这个页面
3)加载运行这个中间页的时候,会拿到哪些参数?
调用微信支付的pay接口时传入的参数,会全部作为get参数传给这个页面
3.在快应用中进行配置中间页地址
在manifest.json中声明wxpay这个feature时填上,
参考 快应用官方文档 中接口声明的url字段
FAQ:
1.我可以指定使用微信h5支付吗?
不可以,H5支付是App支付的fallback方案,如果可以app支付,不会fallback到h5支付.
具体应该使用那种支付方式,以getType的返回值为准.
2.app支付下,收到了2001错误,怎么处理?
2001错误是微信拒绝了支付请求,
可能的原因:
1).微信后台或者manifest.json中的签名配置错误
2).订单信息中的sign字段生成有误
3).android app的后台审核流程还未通过
3.微信h5支付下,没有拉起微信支付界面,什么原因?
检查中间页自动向mweb_url跳转的逻辑是否有生效,如果没有请修改中间页的逻辑.
另外,中间页因为不展示ui逻辑,只作跳转,因此除了js执行权限以外,其他的权限均未授予,包括常用的domStorage权限.
4.我们之前已经有一个上线了android app接入了微信支付,可以直接把这个app的包名和签名配置在快应用中使用吗?
不行,如果这么配置,快应用和android app同时发起微信支付时,会发生冲突.
附:
manifest.json中微信支付的配置样例:
{
"name" : "service.wxpay" ,
"params" : {
"package" : "com.your.package.name" ,
"sign" : "MIIDDTCCAfWgAwIBAgIEfiu92jANBgkqhkiG9w0BAQsFADA3MQswCQYDVQQGEwJVUzEQMA4GA1UEChMHQW5kcm9pZDEWMBQGA1UEAxMNQW5kcm9pZCBEZWJ1ZzAeFw0xNjA0MTMwNTUyMDhaFw00NjA0MDYwNTUyMDhaMDcxCzAJBgNVBAYTAlVTMRAwDgYDVQQKEwdBbmRyb2lkMRYwFAYDVQQDEw1BbmRyb2lkIERlYnVnMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAz/dFKLrU3NmabX/byI0vL5ctZkg64Yhas5dsvl6bZZO/FWrgR+ZWiCcVFLQt/CpzLj3fMpIBoUiEuqPVRJoZdRn4gML1oIfj1meM9X9HSQHXzXr0NkOZhOzrlGvuWuy0//m3I18I8V9HXka4xiT9xGBiiMTWbP90vj7fTU+B3Q0UQxbMibdZfap9gCn2QKq7Y8k73n9wLsbmznlHiBeL2kJAcVL+3EtEle1PZaN90w7YGjaKijuXwv8MS0guvzy63t2rqUjEL41wlBz+/DnzfdolAD6toN5aynuFan51pUqrY5CD9CQIbiTeJXgjsz8vaZotSj+61ISqy2sXrpySAwIDAQABoyEwHzAdBgNVHQ4EFgQUhtto5p0PfrnZlj12MpIF6gzYawEwDQYJKoZIhvcNAQELBQADggEBAJcNfFIJCWh9YIFzM7+eg4P9pNME+Q9Oug+NVA+g6+Vuhi2eFMBe29GnSr//EMpnluXhmfNy40whv9uUKdz4ekejDVyHucs8AvJI2cI5WhoenHO2jqw5IpsxIBqyca6zpXpElU35NZnqNoD9Rs5AZrEVxCB3AzhWviGe5QmxXqRMAVOju3X1B+Nv3dVvou9y64UI9mK3Z4Sz0gUNcYsyrSU3uPmCAYGgh/3/ygGZA9LL5a2jvWZVWPq2/+pFzWL10CbFLCXaWT0dJrxDbLWZcd/6N95kT0sMwVJkwL+v/jrnyXpCpbB7UaYw5JSLsWMnk+4/pSeAoDwcZIgdBlRYPmM=" ,
"url" : "https://your.transitional.page/para=value"
}
},
微信工具抓取的签名样例:
如果之前没有在android端接入过微信支付,建议先看看 微信官方文档 ,
快应用接入微信App支付的过程和这个流程介绍中的一致,无非是发起的客户端由android app变成了快应用
快应用接入微信App支付的步骤介绍:
1.使用快应用的包名编译一个android app.
主要用来走微信后台的注册流程,不用有内容,helloworld就可以了
2.将步骤1中的android app 注册到 微信开放平台 ,并等待审核通过
主要注意的是,app的 支付能力是需要单独申请的 ,期间需要用到公司执照,耗时大概一个星期左右.
走流程的过程中,微信后台需要填写app的包名签名,包名就是快应用的包名了,签名的获取需要用到微信提供的一个工具,在 这个页面 可以下载的到
3.完成服务端的接入.
按照 微信官方的接入文档 进行接入,接入完成之后,服务器能正常向客户端返回订单信息,并且返回的订单信息能够使用 微信的校验工具 校验通过
4.在快应用中进行配置
主要是在manifest.json中声明wxpay这个feature是填上走微信后台注册流程时用到的包名和签名
这里填的签名需要使用 快应用的工具 获取,获取的方法和微信的工具一致,但是得到值和微信的不一样,不要和微信的签名混淆.
快应用接入微信支付的官方文档
微信H5支付:
如果之前没有在h5网站中接入过微信支付能力,建议先看看 微信官方文档
快应用中接入微信H5支付和微信文档中介绍的一致,快应用只是提供了一个运行H5网页的webView,使用h5页面拉起微信支付的能力给开发者提供微信支付的接口
快应用接入微信H5支付的步骤:
1.在微信开放平台新注册申请一个H5网站
https://open.weixin.qq.com/cgi-bin/frame?t=home/web_tmpl&lang=zh_CN
2.完成支付服务端的接入.
按照 微信官方的文档 完成服务端的接入,服务器要完成的工作是接收来自客户端的支付请求,然后生成一个订单,之后把订单传给微信的服务器,微信会返回一个mweb_url,服务器需要把这个mweb_url返回给客户端.
3.完成一个中间跳转页面
中间页需要在加载完成的时候从页面的get参数中解析出 mweb_url , 然后自动向这个url跳转,不需要任何其他的内容,也不需要ui
关于这个中间页:
1)为什么需要这个中间页?
因为微信h5支付拉起支付界面的方式就是向mweb_url跳转,不过因为微信会通过ref做防盗链检查,因为跳转动作需要在开发者的页面中完成
2)这个中间页什么时候会被加载运行?
调用微信支付的pay接口之后,平台会自动加载运行这个页面
3)加载运行这个中间页的时候,会拿到哪些参数?
调用微信支付的pay接口时传入的参数,会全部作为get参数传给这个页面
3.在快应用中进行配置中间页地址
在manifest.json中声明wxpay这个feature时填上,
参考 快应用官方文档 中接口声明的url字段
FAQ:
1.我可以指定使用微信h5支付吗?
不可以,H5支付是App支付的fallback方案,如果可以app支付,不会fallback到h5支付.
具体应该使用那种支付方式,以getType的返回值为准.
2.app支付下,收到了2001错误,怎么处理?
2001错误是微信拒绝了支付请求,
可能的原因:
1).微信后台或者manifest.json中的签名配置错误
2).订单信息中的sign字段生成有误
3).android app的后台审核流程还未通过
3.微信h5支付下,没有拉起微信支付界面,什么原因?
检查中间页自动向mweb_url跳转的逻辑是否有生效,如果没有请修改中间页的逻辑.
另外,中间页因为不展示ui逻辑,只作跳转,因此除了js执行权限以外,其他的权限均未授予,包括常用的domStorage权限.
4.我们之前已经有一个上线了android app接入了微信支付,可以直接把这个app的包名和签名配置在快应用中使用吗?
不行,如果这么配置,快应用和android app同时发起微信支付时,会发生冲突.
附:
manifest.json中微信支付的配置样例:
{
"name" : "service.wxpay" ,
"params" : {
"package" : "com.your.package.name" ,
"sign" : "MIIDDTCCAfWgAwIBAgIEfiu92jANBgkqhkiG9w0BAQsFADA3MQswCQYDVQQGEwJVUzEQMA4GA1UEChMHQW5kcm9pZDEWMBQGA1UEAxMNQW5kcm9pZCBEZWJ1ZzAeFw0xNjA0MTMwNTUyMDhaFw00NjA0MDYwNTUyMDhaMDcxCzAJBgNVBAYTAlVTMRAwDgYDVQQKEwdBbmRyb2lkMRYwFAYDVQQDEw1BbmRyb2lkIERlYnVnMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAz/dFKLrU3NmabX/byI0vL5ctZkg64Yhas5dsvl6bZZO/FWrgR+ZWiCcVFLQt/CpzLj3fMpIBoUiEuqPVRJoZdRn4gML1oIfj1meM9X9HSQHXzXr0NkOZhOzrlGvuWuy0//m3I18I8V9HXka4xiT9xGBiiMTWbP90vj7fTU+B3Q0UQxbMibdZfap9gCn2QKq7Y8k73n9wLsbmznlHiBeL2kJAcVL+3EtEle1PZaN90w7YGjaKijuXwv8MS0guvzy63t2rqUjEL41wlBz+/DnzfdolAD6toN5aynuFan51pUqrY5CD9CQIbiTeJXgjsz8vaZotSj+61ISqy2sXrpySAwIDAQABoyEwHzAdBgNVHQ4EFgQUhtto5p0PfrnZlj12MpIF6gzYawEwDQYJKoZIhvcNAQELBQADggEBAJcNfFIJCWh9YIFzM7+eg4P9pNME+Q9Oug+NVA+g6+Vuhi2eFMBe29GnSr//EMpnluXhmfNy40whv9uUKdz4ekejDVyHucs8AvJI2cI5WhoenHO2jqw5IpsxIBqyca6zpXpElU35NZnqNoD9Rs5AZrEVxCB3AzhWviGe5QmxXqRMAVOju3X1B+Nv3dVvou9y64UI9mK3Z4Sz0gUNcYsyrSU3uPmCAYGgh/3/ygGZA9LL5a2jvWZVWPq2/+pFzWL10CbFLCXaWT0dJrxDbLWZcd/6N95kT0sMwVJkwL+v/jrnyXpCpbB7UaYw5JSLsWMnk+4/pSeAoDwcZIgdBlRYPmM=" ,
"url" : "https://your.transitional.page/para=value"
}
},
微信工具抓取的签名样例:
fcaa113908d343444c1894dc4b42ac13
转自 快应用官方论坛