支付设置及第三方对接
cms
自带支付支持官方支付宝、码支付、易支付、PayPal
、信支付、好Pay
(所有采用同支付宝相同验签逻辑的稍加修改都可使用此支付系统)。
支付设置
目前仅官方支付宝
、码支付
、易支付
、信支付、好Pay
能直接使用,其它需要少许改动,且暂不推荐。
1、易支付只需要设置:支付网关、商户ID、密钥KEY
2、支付宝只需要设置:appid、privatekey、publickey
3、好支付只需要设置:支付链接、商户ID、MD5密钥、支付方式
4、信支付只需要设置:支付链接、商户ID、MD5密钥、支付方式
易支付注意事项
易支付支付网关后面请带上/submit.php
,如:https://pay.test.com/submit.php
,不然会出问题。
好支付证书配置
好支付设置好了相关信息后,还需要配置一下证书,先去下载密钥生成工具:点击下载,然后安装打开,生成相应的公,私钥,生成选项如下:
复制好应用公钥,打开好支付后台的开发设置,将应用公钥粘贴到商户公钥,如下:
请求ip
设置转码服务器ip
就行了,最后保存。
接下来将密钥工具生成的应用私钥内容写进转码程序的key/private.pem
文件,支付后台的开发设置里面的平台公钥内容写进转码程序的key/public.pem
文件即可。
注意public.pem
和private.pem
文件的头尾别去掉了,如-----BEGIN PRIVATE KEY-----
和-----END PRIVATE KEY-----
,中间才是需要写进的内容。
支付失败
如果我们配置好支付后,在前端点支付的时候,遇到拉不起账单的问题,则解决问题如下。
程序采用的是后端模拟请求支付,所以主要是服务器去请求支付接口,如果服务器请求接口网关失败,会拉不起支付。
可以直接在服务器使用命令:
#将后面网站改成你的支付网关
curl pay.test.com
如果请求后,返回过慢,或者返回失败,则大概是这个服务器连接到支付网关网络问题。
如果是返回过慢,可试试修改controller/cms.js
文件,搜索关键词timeout
,也就是超时时间,根据相关支付英文标志,找到对应地方,把timeout
值加大点,最后使用pm2 reload efvcms
重启生效。
第三方支付对接思路
有些有自己的支付接口,这里就提供下第三方支付对接思路,方便用来对接,主要修改三个文件,如下:
controller/pay.js(里边是支付的逻辑,对应路由发起之后的操作)
helper/customPay.js(里边是吊起支付的方法和验签的方法修改),
views/projectz/item.jade(用于修改内置cms显示支付按钮)
controller/pay.js
详解:
api2custompay方法,接收从API传递的body,来调用helper/customPay.js中的支付方法,主要传递type, successUrl, failUrl,分别是通道代码,支付成功返回链接和支付失败返回链接。
custompayback方法,是支付系统回调的方法,里边处理支付成功之后,支付通道POST数据,来判断是否支付成功,然后给用户充值或者升级用户组,可根据支付系统回调的参数自行修改!
helper/customPay.js
详解:
sortPay方法,用于吊起支付系统api,传递的数据在obj中,可根据需要传递的参数自行修改!
verify方法,用于接收到支付系统之后的回调验签使用,自行修改验签逻辑。
encodeKey方法,加密方法,吊起支付系统API的时候,需要加密参数生成sign,这里就是加密的逻辑,自行修改!
views/projectz/item.jade
详解:
21行到24行,取消注释,并且修改data-type为通道代码。
220行代码块中,227行修改successurl,failurl,apikey对应成功之后返回地址,failurl失败返回地址(有些系统不需要,就可以随便填),apikey就是后台设置的APIkey。
注意随着前端代码改动,位置可能会有变动,可以自行寻找,最后使用pm2 reload efvcms
重启生效。