这是我本身研究了两天的微信支付整理得的开发笔记,而后在这里分享给你们,让你们快速上手微信支付。php
补上本身最想的文章:[5分钟解决微信支付][1] https://segmentfault.com/a/1190000014444847 这篇文章被不少人咨询,感谢大家的支持,因此新写了一篇填坑,但愿对你们有帮助。
=======================
更多编程技巧,可关注琉忆编程库:shuaiqi100.com。html
因为本身自己就是PHP开发的,因此只涉及到PHP微信支付的开发。我将会一步一步的记录如何实现微信支付的。编程
下载网址:https://pay.weixin.qq.com/wik...小程序
在这里能够下载本身对应的编程代码来使用对应的SDK和DEMO进行改。我主要用的是PHP,因此下载的是PHP。segmentfault
商家中心路径:(注意须要下载安全插件,且只能在IE模式登陆!)
https://pay.weixin.qq.com/ind...微信小程序
具体路径为:登陆进去到商家中心后,登陆微信支付商户平台,点击【帐户中心】->【帐户设置】->【API安全】->【下载证书】中api
下载证书完成后,记得顺便设置密钥!!这个密钥等下须要在微信支付lib配置文件夹里面配置支付。数组
密钥要求:须要字母+数字一块儿32位数!!为的是认真和安全。安全
下载证书到本地后,取出这两个证书放到cert文件里面去,
这两个证书分别叫作: apiclient_cert.pem 和 apiclient_key.pem服务器
打开lib文件夹下的 WxPay.Config.php
在这里就有说明须要用到的配置信息,只用配置这四项,其余的都不用修改!!
首先是APPID,注意必定是要注册的主体一致,其次用到支付的公众号或者是小程序都必须是和APPID一致的开发者!!不的话,请求支付会出错,提示:appid and openid not match!
APPID和MCHID能够经过开户邮件中获取,关于KEY就是刚才在第三步中要一块儿设置的密钥,直接复制粘贴进来就能够了。
APPSECRET就是小程序里面开发者的那个APPSECRET,直接去微信小程序里面获取粘贴过来就能够了!具体看下面!!
按上面的配置好,保存后就能够下一步了,修改支付接口。
打开example文件夹,打开WxPay.JsApiPay.php
找到 private function __CreateOauthUrlForOpenid($code) 方法。
须要修改里面的 $urlObj["code"] = $code; 修改成:$urlObj["js_code"] = $code;
注意:说说为何这样修改:【下面的内容只是为了了解,不想深刻原理能够跳过】
code 换取 session_key
这是一个 HTTPS 接口,开发者服务器使用登陆凭证 code 获取 session_key 和 openid。其中 session_key 是对用户数据进行加密签名的密钥。为了自身应用安全,session_key 不该该在网络上传输。
获取openid的接口地址: https://api.weixin.qq.com/sns...
微信支付中,须要获取微信用户的openid,因此在小程序中,须要先经过wx.login获取到用户返回的code代码,而后用code换取用户的openid回来。在微信支付中,WxPay.JsApiPay.php里面已经封装了经过传过来的code换取openid的方法:GetOpenid()。而在这里请求获取openid的路径知道带参名是js_code不是code,因此须要修改配置文件里面的code为js_code!
保存好后,就能够第六步了,修改支付接口!!
打开example文件夹下的jsapi.php文件。
//初始化日志
$logHandler= new CLogFileHandler("../logs/".date('Y-m-d').'.log');
$log = Log::Init($logHandler, 15);
//打印输出数组信息
function printf_info($data)
{
foreach($data as $key=>$value){ echo "<font color='#00ff55;'>$key</font> : $value <br/>"; }
}
<html>
<head>
...............这里省略..................
</body>
</html>
最后,修改核心的部分代码!!将要进行详细讲解。这时候贴上官方文档,能够看着文档修改这里的支付信息,由于很重要。
参考文档:
https://pay.weixin.qq.com/wik...
前面的修改只是为了这一步实现微信支付,弹出咱们想要的支付密码输入框!!
记住,在微信小程序中是须要使用wx.request方法请求demo里面的jsapi.php文件,而后请求这个方法成功后会返回一串参数,而后根据打印的参数对应的填入这些参数内赋值便可。
wx.requestPayment({
'timeStamp': '',
'nonceStr': '',
'package': '',
'signType': 'MD5',
'paySign': '',
'success':function(res){
},
'fail':function(res){
}
})
【具体能够看开发文档的参数配置】
网址:https://mp.weixin.qq.com/debu...
这一步过去我曾卡了好久,可是它很重要!!
登录微信支付第三方平台
网址: https://pay.weixin.qq.com/ind...
而后按设置好的微信请求支付连接下写一个notify的控制器方法用于回调执行,当微信支付成功后就会去执行这个目录下的notify方法,而后能够写修改订单状态。
对了,另外提醒下是在jsapi.php文件里面设置的回调路径,也就是demo里面的:wxpay/example/jsapi.php ,【同目录下的Notify.php文件是官方给的回调方法,能够看这个方法进行改写回调控制器!!】以下代码:
$input->SetNotify_url("http://paysdk.weixin.qq.com/example/notify.php");
//修改成你的支付目录下的路径+回调函数名,例如:http://www.abc.com/example/no...
若是你以为这篇文章对你有用能够帮我分享出去给更多须要的人。
最后谢谢你们的支持。