微信、支付宝等个人免签支付系统原理与实现
以前一直只知道如果要接入微信支付、支付寶支付這些自動回調的支付系統,都需要有企業資質之類簽約審核的,個體是無法接入的。個人的收款碼只能是手動收款,人工處理收款后續操作,在系統和應用中無法做到實時回調。
而現在,已經出現了一些個人免簽約的收款系統,研究了一下,發現其中的原理也是比較簡單的。于是我根據這個原理也開發了一套個人收款實時回調的系統!
接入源碼也已經在Github、碼云上傳了,如下:
php版本的源碼,碼云:https://gitee.com/gump994/gogozhifu-php-demo
參考接入文檔:https://www.gogozhifu.com/develop.html
部分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錢包、銀聯等收款方式。
等等。。。。。
原理基本就是上面這些,如果有人感興趣的話,點個贊,我之后繼續出代碼教程,分享如何一步步從零到服務端、監控端等實現這樣一套系統。
總結
以上是生活随笔為你收集整理的微信、支付宝等个人免签支付系统原理与实现的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: linux终端录像工具,Linux 终端
- 下一篇: 个人免签支付云端监听免挂机支付宝收款