支付设置及第三方对接

支付支持官方支付宝、码支付、易支付、PayPal、信支付、好Pay,并预留方便对接第三方支付的方案。

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.pemprivate.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重启生效。