微信、支付宝等个人免签支付系统原理与实现

以前一直只知道如果要接入微信支付、支付宝支付这些自动回调的支付系统,都需要有企业资质之类签约审核的,个体是无法接入的。个人的收款码只能是手动收款,人工处理收款后续操作,在系统和应用中无法做到实时回调。 而现在,已经出

以前一直只知道如果要接入微信支付、支付宝支付这些自动回调的支付系统,都需要有企业资质之类签约审核的,个体是无法接入的。个人的收款码只能是手动收款,人工处理收款后续操作,在系统和应用中无法做到实时回调。

而现在,已经出现了一些个人免签约的收款系统,研究了一下,发现其中的原理也是比较简单的。于是我根据这个原理也开发了一套个人收款实时回调的系统!

接入源码也已经在Github、码云上传了,如下:

php版本的源码,码云:https://gitee.com/gump994/gogozhifu-php-demo

部分PHP代码参考如下:

<?php
/* GOGO支付接入代码DEMO - PHP版本 */pay(1, 0.18, 'go-test-' . time());// $type支付类型(1:微信,2支付宝);$price产品价格,支持到小数点后两位;$payId不重复的交易单号
function pay($type, $price, $payId)
{// GOGO支付创建订单API地址$apiUrl = 'https://www.gogozhifu.com/shop/api/createOrder';// 选填,支付完成后通知开发者服务器的url。(不传会获取GOGO支付商户后台设置的默认回调地址)//这里要修改成商户自己接收支付成功回调通知的地址,该地址不能有访问权限,POST请求方式$notifyUrl = 'http://localhost/notify.php';// 选填,跳转页面url。(不传会获取GOGO支付商户后台设置的默认跳转地址)$returnUrl = 'http://localhost/return.php';// 选填, 商户自定义的参数,回调通知的时候会原样返回$param = 'GOTEST';// 计算sign$sign = md5(getAppId() . $payId . $param . $type . $price . getAppSecret());$data = array('payId' => $payId,'param' => $param,'type' => $type,'price' => $price,'sign' => $sign,'notifyUrl' => $notifyUrl,'returnUrl' => $returnUrl,'isHtml' => 1);$ret = goPost($apiUrl, $data);echo $ret;
}// 必需,填入商户自己的AppId
function getAppId()
{return "填入GOOG支付商户自己的AppId";
}// 必需,填入商户自己的AppSecret
function getAppSecret()
{return "填入GOOG支付商户自己的AppSecret";
}// 发起POST请求,请求头里必须设置商户的App-Id和App-Secret
function goPost($url, $data)
{$headerArray = ["App-Id: " . getAppId(),"App-Secret: " . getAppSecret(),];$curl = curl_init();curl_setopt($curl, CURLOPT_URL, $url);curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE);curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, FALSE);curl_setopt($curl, CURLOPT_POST, 1);curl_setopt($curl, CURLOPT_POSTFIELDS, $data);curl_setopt($curl, CURLOPT_HTTPHEADER, $headerArray);curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);$output = curl_exec($curl);curl_close($curl);return $output;
}?> 

下面我想分享一下这个实现逻辑,搞懂这个思路后,如果你有开发能力的就可以利用这个思路,举一反三,实现各种有趣强大的功能~

通常都是以下几个步骤:

  • 准备工作:配置好个人的收款码,一部安卓手机(装着对应收款码的微信、支付宝)。
  • 创建订单:调用服务端接口生成一个订单,用户扫码支付必须按照该订单的金额支付。
  • 监听APP:在手机中装一个监听通知消息的APP,用户付款了会获取到收款通知消息。
  • 推送消息到服务端:根据收款消息中的金额,匹配到对应的订单,即可更新支付状态。
  • 回调通知:推送成功后回调通知对应的应用、网站,实现实时回调执行后续操作~

另外的一些扩展:

收款码多样化的配置,任意金额收款码(需要客户自己输入金额支付),固定金额收款码(客户不用输入金额,直接支付)。

收款码自动轮询切换,因为收款码收款次数多了可能会被屏蔽失效,配置多个达到一定次数、金额,就自动切换收款码。

监听APP端手机挂机、模拟器挂机、云手机挂机等方式,增加稳定性。

收款短信、邮件通知(里面可以查看订单信息、执行补单等操作),方便在人在外面处理订单。

订单、收款等数据的统计分析。

举一反三实现qq钱包、银联等收款方式。

等等。。。。。

原理基本就是上面这些,如果有人感兴趣的话,点个赞,我之后继续出代码教程,分享如何一步步从零到服务端、监控端等实现这样一套系统。

本文标题为:微信、支付宝等个人免签支付系统原理与实现

基础教程推荐