黑色火焰
黑色火焰
  • 发布:2017-05-02 09:06
  • 更新:2020-05-07 03:30
  • 阅读:31998

Hbuilder集成微信支付教程(简单流程)

分类:HTML5+

整个系统运作的流程大致是这样:

(1)APP服务器 发出需要付款的请求
(2)服务器 请求 微信服务端 下单
(3)服务器 将下单数据回复给 APP
(4)APP微信服务端 发起请求并输入密码进行支付

关键字用加粗表示,APP指用户正在使用的APP,服务器指自己的业务服务器,微信服务端指微信端的服务器。

那整个流程具体怎么实现?请看下文,将会从申请接口开始讲述。

第一步

在浏览器新标签页中打开https://open.weixin.qq.com/,注册一个账号,并且审核开发者资质(个人或者是企业)。

创建一个APP移动应用,应用的开发信息需要填写完整,如下载页面地址、Bundle ID(IOS)和应用签名(Android)等。应用签名不要填错,怎么获取它可以网上搜索方法。

接下来为该应用申请微信支付,填写好相应的资料,等待审核成功。

第二步

申请成功后,邮箱会收到这么一封邮件。

用这封邮件上显示的账号密码,登录微信支付,地址是:https://pay.weixin.qq.com/index.php/core/home/login

把网页上提示需要设置的都设置好,需要的控件也都给它装上。最好使用IE浏览器登录微信支付,谷歌浏览器会出现问题,原因是它们的插件不是很兼容非IE浏览器。

API密钥可以先设置好,证书也可以先下载下来,后面会用到。

第三步

之前做支付宝接口的时候,这一步基本都是开始进行小额测试了,但是微信为了广大的开发者能够在真枪实弹之前先熟悉这一切,所以就增加了一个“验收”的过程(个人表示这一步略坑,文档写的不清楚,走了些弯路)。

验收的指引文档在这里:https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=23_1

这个“验收”就是在实际支付交易之前,先进行一些虚拟的交易。交易过程同真实交易一样,也是先在APP上买东西,调用微信支付,然后付款,但是不用真正的付款,商户账号也不会收到钱。

千万别忘记,要先打开微信,关注“微信支付商户接入验收助手”,然后绑定自己的微信支付账号。

依次点击“验收case”->“app支付”->“APP支付验收用例”,就可看到完成“验收”过程需要哪些步骤了。

标注了“必选”的用例都要去做掉,“可选”的可以不用管它。

每个用例都规定了交易的金额,一定要按照这个金额来支付,否则不会成功。

第四步

“验收”其实就是把整个支付流程全部跑一遍,所以APP中要记得集成微信支付插件。

Hbuilder在云打包时会自动集成微信支付,只要在manifest.json的“SDK配置”中填写好相关信息就可以了。

原生APP需要自己去集成,具体方法就要自己看文档实现了。

服务端程序需要按照https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=9_1文档中的API去实现,“验收”过程中,所有的URL地址都需要加上sandboxnew,而且API密钥不能用上文提到自己去填写的(这是验收结束后真枪实弹时用的),而是从https://api.mch.weixin.qq.com/sandboxnew/pay/getsignkey获取的,这些在验收指引文档中都有说明。

坑1提示:“验收”过程中,在调用微信客户端支付时,微信会提示APP ID没有绑定PAY SIGN KEY。其实这个时候已经算是支付成功了,别管它,直接点确定!

坑2提示:服务器从微信服务端获取到下单数据,要给APP回复时,如果用Hbuilder,其实回复的是一串JSON数据,别把XML数据回复过去了(会提示支付失败-1)。格式如下:

{“appid”:”应用APPID”,”noncestr”:”随机数”,”package”:”Sign=WXPay”,”partnerid”:”微信支付商户号”,”prepayid”:”XXXXXXXXXXXX”,”timestamp”:时间戳,”sign”:”签名”}

将XML数据转成以上的JSON数据回给APP就可以了,记得重新签名要重新生成!

第五步

每完成一个验收流程,都要去微信公众号的“我的验收”->“查询验收结果”->“查询用例接入结果”->“APP支付”中查看一下,确定是否成功。

等所有“必选”用例全部完成,那么恭喜你,验收完成。这时别再用验收时获取到的API密钥了,用自己填写的API密钥开始真枪实弹地小额测试一笔吧。

涉及到退款等资金回滚的API业务,微信支付要求使用证书(上文说要下载的)来验证安全,如果服务器用的PHP就在CURL中设置好证书地址,方法在微信支付文档中有。

微信支付相比支付宝支付有一点好处,就是退款后,微信支付会退回扣的千分之六手续费,而支付宝不会退。

原文地址:http://blog.luotiankeji.com/252.html

3 关注 分享
A随风而行 skysowe 这是个昵称

要回复文章请先登录注册

8***@qq.com

8***@qq.com

回复 c***@163.com :
其实这个问题很容易排查
前端控制台打印预支付订单是否生成?
故障原因:
1、js无法远程获取服务器信息;
2、金额必须1元以上,才能生成预支付订单;
3、检查服务器返回信息{"appid":"应用APPID","noncestr":"随机字符串,后台算法","package":"Sign=WXPay(扩展字段,微信固定写法:Sign=WXPay)","partnerid":"商户号","prepayid":"预支付交易会话ID","timestamp":"当前时间戳","sign":"后台第二次生成签名"},详细检查这些参数是否与自己的微信开放平台的app设置一致,再检查包名、签名。
4、微信支付商户平台是否设置成功,微信开放平台添加的app是否已经成功关联商户号。
5、后台证书密钥是否设置。
这几点没问题,一切尽在不言中!祝您好运!
2020-05-07 03:30
1***@qq.com

1***@qq.com

请问支付成功之后微信服务端应该会有结果返回给自己的服务端的吧?返回的路径在什么地方设置
2019-05-17 14:43
c***@163.com

c***@163.com

按照官方给的文档,下载了wxpayv3,修改为自己的appid,key,商户号等,但是给出订单信息之后,服务端返回的信息有些参数为空,有那位好心人能帮忙解答下吗?返回参数如下:

{"appid":null,"noncestr":null,"package":"Sign=WXPay","partnerid":null,"prepayid":null,"timestamp":1516678569,"sign":"0C6D452C711954D16EED53732A10999D"}

而官方的服务端地址http://demo.dcloud.net.cn/payment/?payid=wxpay&total=1
返回的信息是正常的。为啥我这appid和noncestr是空的?partnerid也是空的?
2018-01-23 12:30
skysowe

skysowe

NND,现在开放平台都不支持个人了,必须是公司或者企业
2017-08-05 17:27
黑色火焰

黑色火焰 (作者)

回复 asdf211 :
公众平台里的是专门给公众号用的,不包括移动APP端。
2017-07-06 21:46
asdf211

asdf211

公众帐号平台里面的微信支付不能使用吗?一定要申请开放平台里面的微信支付?
2017-07-04 08:43
_burt

_burt

收藏先,用得着
2017-05-02 10:41