2

最近给公司调了个bug,涉及到微信支付的相关接口。所以有几个问题在这里记录一下,希望能帮到其他人。

商户号

微信公众号管理面板中,有个微信支付菜单栏,进去以后,第一个标签中有可能会有两个序列号,其中一个是本公司作为普通商家时的序号。还有一个序号后面会标注着服务商字样,这个是本公司作为服务商时使用的序列号。普通商家,就是微信用户直接将钱转账给你;服务商,是一群普通商家的代理商,你可以管理一群在你的H5应用中卖货的商家,这时微信用户将钱转给商家,经过你作为代理。

由于这里的功能并不是我开发,所以有些代码细节也不是很确定。在这个文档中调用统一下单接口时,如果传入了本公司的普通商家号,则认为是转账给普通商户。如果需要转给本公司代理的某个商户,那么需要同时传入本公司服务商户号和子商户号。如果错误的将公司的服务商户号当做普通商户号使用,而没有传入子商户号,会报一个需要传入sub_mch_id的错误.

支付url未授权

微信支付会涉及到一个回调url,这个url是在调用微信接口的同时传入的。然而这个传入的url,如果需要带参数,一定不要用问号和&连接符,否则url会被误识别,比如:index.php?g=mobile&m=payment,最好转换成thinkphp中也很常用的'/'方式,比如/mobile/payment/order_id/111

在微信支付接入菜单中,有个开发设置tab,里面有配置回调url。不在这里设置的url一概没有回调权限,会报错支付url未授权。配置回调url的权限有两步:

  1. 需要下载一个txt授权码文件,放置在web服务器根目录下,www.foobar.com/xxxxx.txt,如果你在自己的域名下能这样访问自己的授权码文件,就没问题了。

  2. 设置url的时候,如果需要传入一个支付单号的id,比如/mobile/payment/order_id/111,那么回调url中必须设置为www.foobar.com/mobile/payment/order_id/作为授权url,也就是说url最多只支持一级分隔符。


敲键盘的猫
772 声望131 粉丝

一只热爱科技的猫