个人免签收款实现方案
ipay.zip 解压密码:**购买后查看**
一、系统简介
- 使用个人收款码完成收款,即时到账,免签约
- 手机安装通知转发软件,收款成功后软件将收款通知转发给本系统
- 支付金额与订单号绑定,系统根据到账金额判断对应订单号交易成功
- 交易成功后系统将交易信息POST到指定URL上,从而完成自动发货之类的操作
二、安装配置
1、安装部署
- 点击下载 ipay.zip 解压后得到 收款系统 和 手机通知apk
- 准备闲置安卓(Android)手机一部,安装 微信 、支付宝 和 手机通知apk 三款APP
- 推荐将 收款系统 部署在独立(或二级)域名根目录下,当然也可以部署已有网站的二级目录下
2、设置参数
打开
inc/config.asp
文件修改配置
参数名称 | 类型 | 说明 |
---|---|---|
pay_secret_key | string | 统一密钥 |
pay_max | int | 5分钟内最大支付人数 |
3、准备收款码
- 微信 和 支付宝 无固定金额的收款码各一张,命名为
0.jpg
分别放入wechat/
和alipay/
目录下 - 其余带固定金额的收款码均以(分)为单位命名,例如 9.9 元 收款码文件名为
990.jpg
- 8元 以内面额每张递减 1 分,8元 以上面额每张递减 10 分
通常商品的定价都会采用非整数定价法,例如 9.9 这样的金额,它会给人一种降价更多的感觉
而受到收款模式影响,出现 9.89、9.91 这样被“加长”的金额会一定程度降低顾客购买欲
故而系统中设定超过 8元 的金额每次递减 10 分,尽量避免这种“加长”现象
- 例如要设置1元、5元、9.9元三种面额,则需要准备如下数量的收款码,收款码数量为 1+
pay_max
张
面额 | 所需收款码(假设 pay_max=5 则每个面额需要 1+5=6 张) |
---|---|
1元 | 100.jpg + 99.jpg 98.jpg 97.jpg 96.jpg 95.jpg |
5元 | 500.jpg + 499.jpg 498.jpg 497.jpg 496.jpg 495.jpg |
9.9元 | 990.jpg + 980.jpg 970.jpg 960.jpg 950.jpg 940.jpg 超过 8 元的金额每张递减 10分 |
以上收款码微信与支付宝各一份,共计 36 张,分别放入
wechat/
和alipay/
下
- 收款码需抠出二维码部分后使用,收款系统 中附带了一个收款码处理工具,包含了使用说明。
4、手机通知APP配置
注意事项
- 手机微信不要添加任何客户或即将成为客户的人为好友,防止跳过支付
- 手机登录微信和支付宝后点击 O 返回桌面,不要连续点击两次 < 退出应用
- 手机需要屏幕常亮运行,需关闭手机自动锁屏,同时可调低手机屏幕亮度节能
配置步骤
- 运行手机通知APP,点击【发送通道】
- 点击右上角【+】号,弹出菜单后点击【Webhook】,然后填写表单
通道名称:自定义名称
请求方式:选择 POST
Webhook Server:填写 收款系统 访问地址,例如:http://pay.x.cn/
消息模板:留空
Secret:填写 收款系统 中设置的统一密钥pay_secret_key
- 点击【保存】
- 点击【转发规则】,然后再点击右上角【+】号,填写表单
发送通道:点击下拉箭头,选择刚添加好的通道名称
匹配字段:选择【APP包名】
匹配模式:选择【是】
匹配的值:第4步执行两次,分别填入com.tencent.mm
和com.eg.android.AlipayGphone
- 点击【保存】
- 点击【通用设置】,开启【转发应用通知】,并点选【自动消除通知】
三、发起支付
- 向收款系统发起下单请求,成功后得到 支付ID
- 根据 支付ID 生成支付URL,引导客户访问完成交易
请求地址
收款系统 安装路径,如 http(s)://pay.x.cn/
或 http(s)://www.x.cn/pay/
形式
POST参数
参数 | 类型 | 说明 |
---|---|---|
out_trade_no | string | 订单号,例如:202312181608360569 |
order_title | string | 订单标题 |
total_fee | number | 订单金额,单位(元) |
trade_type | string | 可选,支付引擎 wechat 或 alipay |
notify_url | string | 异步通知网址 |
return_url | string | 付款成功后跳转网址 |
sign | string | 签名,算法见下方 签名算法 |
签名算法
- 根据参数名称的ASCII值排序,以
参数=值
的格式使用&
连接,然后加入key
参数,最后MD5(小写)加密
post_data = "参数1=值1&参数2=值2"; //POST数据
sign = MD5(post_data + "&key=统一密钥"); //计算签名
post_data = post_data + "&sign=" + ; //post_data 最后加入 sign
成功返回
- 发起下单请求后系统将返回一段 JSON 格式数据,如
{"success":true,"msg":"36589"}
参数 | 类型 | 说明 |
---|---|---|
success | boolean | true 或 false |
msg | string | 支付ID 或 失败原因 |
发起支付
- 根据返回的 支付ID 生成支付URL地址
pay_url = "http://pay.x.cn/?id=支付ID&sign=" + MD5("id=支付ID&key=统一密钥");
- 最后引导客户访问
pay_url
完成交易
四、异步通知
- 支付成功后 收款系统 会将成功通知发送至
notify_url
设置的异步通知地址 - 通知采用POST方式,内容如下:
参数 | 类型 | 说明 |
---|---|---|
out_trade_no | string | 订单号,例如:202312181608360569 |
trade_type | string | 支付引擎 wechat 或 alipay |
total_fee | number | 订单金额,单位(元) |
paid_in | number | 实付金额,单位(元) |
sign | string | 签名,算法见上方 签名算法 |
- 商家系统根据收到的通知处理对应订单即可
- 最终访客支付页面自动会跳转至
return_url
指定的页面
ipay.zip 解压密码:**购买后查看**