ping php支付,thinkphp框架中引出ping++支付server SDK
thinkphp框架中引入ping++支付server SDK
ping++支付平臺整合了支付寶,微信支付,百度錢包,銀聯支付等主流支付方式。而且其開發文檔,也很容易理解和上手,所以想寫篇博客,記錄下來(thinkphp)服務器端使用其SDK的步驟【test模式下】。
開始之前 最好先看一看官方文檔對于支付過程的解釋:
第一步:去www.pingxx.com新注冊一個賬號。注冊完成進入個人中心后,你將會得到一些參數:
①Test Secret Key:(該參數在server端配置,用于和客戶端的Test Publishable Key配合使用)
②ping++公鑰:(支付完成后,平臺往server端返回webhooks,此參數用于驗證交易安全性)
③Test Publishable Key:(該參數用于客戶端,與上面server端的的Test Serect Key配合使用)
④商戶公鑰:(用于server端和平臺交易時,RSA簽名的驗證),至于如何產生商戶公鑰對,根據圖中藍色字的引導,很容易就完成了,此處不再贅述。產生了公鑰對之后,把公鑰填寫在下圖中的textarea中,私鑰留著先,后面有用。
第二步:下載官方的server端SDK,PHP的下載鏈接是https://github.com/PingPlusPlus/pingpp-php
下載好了之后,加壓出來,放在thinkphp第三方庫擴展目錄里面:
如左圖所示,lib文件夾,init.php,還有第一步④產生的公鑰對中的
私鑰放進去。至于data文件夾里的文件,是使用HTTPS時用的安全證書,暫時也拿過來。
第三步:在代碼中使用上面的參數,看看引入是否成功:(示例代碼如下)
public function index(){ $api_key = '請填寫自己的Test Serect Key'; //API-KEY,注冊ping++時自動生成$app_id = '請填寫自己的APP的ID'; //APP_ID,注冊時自動生成 Vendor('pingpp.init'); //引入類庫初始化文件 //以支付寶,支付10塊錢。注意amount為1000,單位是”分錢“ $input_data = array('channel'=>'alipay', 'amount'=>1000); //$input_data應該是你從APP客戶端收到的json數據(根據業務可以在服務器端定義),需json_decode if (empty($input_data['channel']) || empty($input_data['amount'])) { echo 'channel or amount is empty'; //檢驗支付參數 exit();} $channel = strtolower($input_data['channel']); //支付渠道:支付寶$amount = $input_data['amount']; //支付金額10塊錢$orderNo = substr(md5(time()), 0, 12); //訂單號,必須唯一。根據支付渠道不同,長度要求也不一樣,請查看文檔https://www.pingxx.com/api#api-c-new\Pingpp\Pingpp::setPrivateKeyPath(VENDOR_PATH . '/pingpp/rsa_private_key.pem'); //引入你的簽名私鑰//$extra用于設置支付渠道所需的額外參數,額外參數多數是可選,請根據需求來決定。詳情看參考文檔// $extra = array( // 'success_url' => 'http://example.com/success', // 'cancel_url' => 'http://example.com/cancel' // );\Pingpp\Pingpp::setApiKey($api_key); //設置API-KEYtry { $ch = \Pingpp\Charge::create( //create方法表示發送支付請求到ping++平臺,$ch表示請求成功時返回的charge對象(json格式),服務器端如果發起請求成功,此時只需要把charge對象傳遞給APP客戶端,交給客戶端處理 array( 'subject' => 'Your Subject', //關于這些參數的意義,請參考文檔https://www.pingxx.com/api#api-c-new 'body' => 'Your Body', 'amount' => $amount, 'order_no' => $orderNo, 'currency' => 'cny', // 'extra' => $extra, 'channel' => $channel, 'client_ip' => $_SERVER['REMOTE_ADDR'], 'app' => array('id' => $app_id) ) ); echo $ch;} catch (\Pingpp\Error\Base $e) { //如果發起支付請求失敗,則拋出異常 // 捕獲報錯信息 if ($e->getHttpStatus() != NULL) { header('Status: ' . $e->getHttpStatus()); echo $e->getHttpBody(); } else { echo $e->getMessage(); }}//代碼到此處,如果你向ping++平臺請求支付成功,并且把charge對象傳遞給了客戶端,那么接下來客戶端如果成功完成了支付,那么//平臺將會請求你填寫的Webhooks回調url,在該url里,接收 Webhooks 通知,根據數據的結果做出邏輯判斷:如果支付成功....,如果支付失敗...
如果此時,能在瀏覽器返回一串json數據,那么你的初步調試就通過了。
第四步:填寫你的webhook的回調地址。如果客戶端發起的支付,已經完成交易,那么交易成功的json消息,會
返回到該回調地址,你根據json消息,對自己的數據庫和業務作出相應的回應或者拋出支付錯誤信息。webhook的填
寫,請到個人中心去填寫,很容易的,不再贅述。
與50位技術專家面對面20年技術見證,附贈技術全景圖總結
以上是生活随笔為你收集整理的ping php支付,thinkphp框架中引出ping++支付server SDK的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: php弱类型变量是什么,php弱类型变量
- 下一篇: 怎么把php的文件链接成html,怎么把