这里模拟一个微商城中选购物品,随后直接通过微信进行支付的场景,
1、申请微信公众平台账号,主要是身份证、手机号、营业执照等,申请之后等待微信确认,需要拍照上传公司盖章的一个说明,其他没有特殊之处;微信申请之后会获得APPID、APPSECRET等关键参数,后面会用到。
2、申请微信支付功能,大多数内容直接填写即可,主要是支付商品类型、经营范围、对公银行账户之类的,这里走的弯路是商品经营类型多次勾选不对导致申请失败,要注意根据微信的提示进行修改。
3、微信支付申请核准之后,微信会向对公账户打一笔小额款项,规定时间内反馈确认即可,然后有一份同意书,点同意签署即可完成。这样,就会得到微信支付商户号,同时根据指引可以设置支付KEY和相关密码。
4、假设在已经开发了一个商品页面http://xx.xx.xx.xx/demo/demo.php,需要在该页面中集成微信支付功能,流程如下:
4.1 通过微信公众平台--公众号设置--功能设置JS接口安全域名和网页授权域名,都设置为xx.xx.xx.xx/demo
4.2 通过微信商户平台--产品中心--开发配置配置公众号支付授权目录,设置为http://xx.xx.xx.xx/demo/
注意,这一步很关键,必须按照规则配置,否则会报“目录未授权”之类的错误,发生在支付进行时,弹一个对话框
5、通过https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=11_1下载PHP或者其他语言版本的微信支付官方DEMO,并进行解压。
6、解压后,会发现里面有index.php,cert,lib,example等目录,其中还有一个doc目录,里面有DEMO使用说明。
7、将lib、cert目录和example中的jsapi.php、WXPay.JsApiPay.php、notify.php、log.php几个文件,以及DEMO根目录下的index.php文件拷贝到http://xx.xx.xx.xx/demo/目录下,注意不要放在demo的子目录下,否则会弹出“目录未授权”之类的错误。
8、下面对几个文件进行配置和修改:
8.1.修改index.php中跳转链接,将http://paysdk.weixin.qq.com/example/jsapi.php修改为http://xx.xx.xx.xx/demo/jsapi.php
8.2.修改jsapi.php,将其中$input->SetNotify_url中的//paysdk.weixin.qq.com/example/notify.php修改为http://xx.xx.xx.xx/demo/notify.php;将../lib/WxPay.Api.php修改为./lib/WxPay.Api.php
8.3 将WXPay.JsApiPay.php的require_once "../lib/WxPay.Api.php";修改为require_once "./lib/WxPay.Api.php";
8.4 修改lib目录下的WxPay.Config.php文件中定义的APPID、APPKEY、MACH_ID、SECRET等参数,修改为自己的
8.5 将lib目录下WxPay.Api.php的第540行左右的
curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,FALSE);
curl_setopt($ch,CURLOPT_SSL_VERIFYHOST,2);//严格校验
修改为
curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,FALSE);
curl_setopt($ch,CURLOPT_SSL_VERIFYHOST,FALSE);//严格校验2
这一段不修改,会使得curl出现60的错误。
8.6 通过商户平台(不是公众号平台)--账户中心--API安全--下载API证书并拷贝覆盖至cert中
8.7 notify.php是支付成功失败后的回调,可以在其中定制支付成功后的处理操作,如刷新数据库。
8.8 在jsapi.php中有获取openid一段,正常没有问题,但如果公众号已经取得了用户openid,那么将会报code已被占用的错误,这时直接通过赋值的方设置openid就可以了。
经过以上各步,基本就可以实现公众号的微信支付功能,