Osheep

时光不回头,当下最重要。

thinkphp3.2集成微信跟支付宝app支付

做php有一年多左右了,两家公司都是关于app的(网站还真没做过),关于支付上有点自己的小见解,第一家公司是做混合app开发的,关于支付都集成好了,只需要写js来调用支付,编写回调跟同步代码就完成了,当然首先必须在两家平台上获取并填写正确的参数,而且还要审核通过哦,这里分享一下,大神来指正分享也好。

支付宝支付

1)首先去申请支付宝账号开通app支付并通过审核哦,开发流程都有的,一步一步来不会出问题的。提交基本信息后开始填写审核资料

《thinkphp3.2集成微信跟支付宝app支付》

审核信息

选择app支付,填写自己项目中对应的回调地址(用于处理支付宝返回的参数),配置应用公钥(用于验签,生成方法看下面生成RSA密钥)。支付宝支付在17年修改过sdk了,所以选择最新的加签方式,而且目前网站上有最新的sdk,旧的跟新的不可以混用的。

生成RSA密钥

点击看支付宝生成工具地址,打开之后选择对应系统的文件然后按着步骤来就可以生成应用公私钥了,然后回到上面图片中,把公钥填到加签方式中就会自动生成支付宝公钥了,记得保存下来,开发中会用到。

查看appid

《thinkphp3.2集成微信跟支付宝app支付》

查看对应应用的appid,开发中会用到

查看pid

《thinkphp3.2集成微信跟支付宝app支付》

查看对应应用的pid,开发中会用到

以上准备工作差不多了,开始代码的开发,是不是很兴奋啊。。。。。。

代码准备

下载sdk

《thinkphp3.2集成微信跟支付宝app支付》

选择sdk

而且php要5.5以上,同时打开openssl,否则在请求参数时没有sign。

下载解压之后,把所有文件全部到tp框架中Vendor内的Alipay(自行创建)文件夹内。

请求参数代码

《thinkphp3.2集成微信跟支付宝app支付》

请求参数

因为是跟原生app交互,所以获取数据方式为             $str = json_decode(file_get_contents(‘php://input’),true);     这样就可以按着数组的方式来获取前端传递来的值,产生唯一的商户订单号,插入到数据库内,然后调用支付宝sdk来拼接字符串返回给前端,让安卓跟ios端跟支付宝通信调起支付。

回调地址

《thinkphp3.2集成微信跟支付宝app支付》

回调函数

支付宝会以post的形式返还参数给回调地址,详情点击请看支付宝,根据唯一商户订单号来查找修改订单(感觉不太好,应该在请求参数时用session来保存个用户id,但是原生安卓用的okhttp框架不支持session,所以只好只用唯一商户订单号。当然也可以在请求参数里面业务参数里添加上用户id),判断该订单是否支付过了,修改订单属性,填写自己的业务逻辑,返回给支付宝对应的succes或fail。

同步通知

异步通知结束后,支付宝会同步通知给前端,由于支付逻辑在异步通知时已经处理好了,所以同步通知只作为了通知成功失败。

需要把数据从前端传到服务端

《thinkphp3.2集成微信跟支付宝app支付》

同步通知

最简单的通知就是看resultStatus是否等于9000,如果是就返回成功,否则失败。复杂点的就是判断

《thinkphp3.2集成微信跟支付宝app支付》

通知验证

如果1,2,3,4有一个不符合就是失败。

以上就是全部的支付宝流程接入和代码编写,可能有所疏漏,而且支付宝文档不算太难,耐心的多看几遍就会明白了。

微信支付

以前笔者在做app微信支付时候都是引入了sdk,但是最近看微信app支付文档是没有sdk的,只有公众号支付才会引入,too young too simple。由于笔者写这个时候还没开始做微信支付,所以先书写逻辑。

请求参数

《thinkphp3.2集成微信跟支付宝app支付》

下单接口

关于sign与nonce_str的生成,移步到这里查看。

回调地址

《thinkphp3.2集成微信跟支付宝app支付》

异步通知

接受到post传递的xml格式,转换成数组,然后经过简单的错误判断后进行业务逻辑处理,最后返回给微信相应的状态。这是简单的判断,推荐的是验签和判断是否已经支付了。

《thinkphp3.2集成微信跟支付宝app支付》

推荐验证

同步地址

微信的同步函数简单判断下就是查看该订单是否支付完成,返回相应的数据,跳转不同页面。

以上就是笔者对于thinkphp框架关于集成微信跟支付宝app支付的一些见解,不详之处可以来问我,或者要代码,哈哈

点赞