手把手教你小程序对接微信支付

这是我本身研究了两天的微信支付整理得的开发笔记,而后在这里分享给你们,让你们快速上手微信支付。php

按着个人步骤一步一步操做,你就能够成功的get到这个微信支付技能包。

补上本身最想的文章:[5分钟解决微信支付][1]
https://segmentfault.com/a/1190000014444847
这篇文章被不少人咨询,感谢大家的支持,因此新写了一篇填坑,但愿对你们有帮助。

=======================
更多编程技巧,可关注琉忆编程库:shuaiqi100.com。html

原文连接:手把手教你实现小程序微信支付

因为本身自己就是PHP开发的,因此只涉及到PHP微信支付的开发。我将会一步一步的记录如何实现微信支付的。编程

第一步:先上微信支付开发文档境内普通商户里面下载SDK与DEMO。

下载网址:https://pay.weixin.qq.com/wik...
图片描述小程序

在这里能够下载本身对应的编程代码来使用对应的SDK和DEMO进行改。我主要用的是PHP,因此下载的是PHP。segmentfault

第二步:将下载的支付SDK与DEMO进行解压,而后打开这个解压后的文件夹。

图片描述

第三步,从商家中心下载证书到本地放到cert文件夹里面。

商家中心路径:(注意须要下载安全插件,且只能在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,直接去微信小程序里面获取粘贴过来就能够了!具体看下面!!
图片描述

按上面的配置好,保存后就能够下一步了,修改支付接口。

第五步:修改获取openid的接口

打开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代码,所有!所有!所有!!由于都是多余的,不要由于这些HTML代码请求出错。

<html>
<head>
...............这里省略..................
</body>
</html>

最后,修改核心的部分代码!!将要进行详细讲解。这时候贴上官方文档,能够看着文档修改这里的支付信息,由于很重要。

参考文档:
https://pay.weixin.qq.com/wik...

第七步 请求微信支付接口jsapi.php文件,而后发起支付

前面的修改只是为了这一步实现微信支付,弹出咱们想要的支付密码输入框!!
记住,在微信小程序中是须要使用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方法,而后能够写修改订单状态。

注意事项:

1.回调方法能够看demo里面的Notify.php文件进行修改为控制器方法用于回调!!

2.回调的方法必定要是在微信支付平台设置的支付目录下!!

3.支付的回调路径是不可以带参数的!!不能带参数!!不能带参数!!

若是回调没有成功,请看上面的注意事项进行检查,由于我在这里跌倒了N次,N次,N次!!!

图片描述

对了,另外提醒下是在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...

至此最开头的demo配置到发起支付到支付成功对订单的操做所有方法都在这里,若是你在哪一步不了解能够给我留言,另外若是你有什么想法建议也能够给我留言。

若是你以为这篇文章对你有用能够帮我分享出去给更多须要的人。

最后谢谢你们的支持。

我的微信公众号:琉忆编程库

相关文章
相关标签/搜索