thinkphp框架中引入ping++支付server SDK
ping++支付平臺整合了支付寶,微信支付,百度錢包,銀聯(lián)支付等主流支付方式。而且其開發(fā)文檔,也很容易理解和上手,所以想寫篇博客,記錄下來(thinkphp)服務(wù)器端使用其sdk的步驟【test模式下】。
? ? 開始之前 最好先看一看官方文檔對于支付過程的解釋:
立即學(xué)習(xí)“PHP免費(fèi)學(xué)習(xí)筆記(深入)”;
第一步:去www.pingxx.com新注冊一個賬號。注冊完成進(jìn)入個人中心后,你將會得到一些參數(shù):
①Test Secret Key:(該參數(shù)在server端配置,用于和客戶端的Test Publishable Key配合使用)
②ping++公鑰:(支付完成后,平臺往server端返回webhooks,此參數(shù)用于驗證交易安全性)
③Test Publishable Key:(該參數(shù)用于客戶端,與上面server端的的Test Serect Key配合使用)
④商戶公鑰:(用于server端和平臺交易時,RSA簽名的驗證),至于如何產(chǎn)生商戶公鑰對,根據(jù)圖中藍(lán)色字的引導(dǎo),很容易就完成了,此處不再贅述。產(chǎn)生了公鑰對之后,把公鑰填寫在下圖中的textarea中,私鑰留著先,后面有用。
第二步:下載官方的server端SDK,PHP的下載鏈接是https://github.com/PingPlusPlus/pingpp-php
下載好了之后,加壓出來,放在thinkphp第三方庫擴(kuò)展目錄里面:
如左圖所示,lib文件夾,init.php,還有第一步④產(chǎn)生的公鑰對中的
私鑰放進(jìn)去。至于data文件夾里的文件,是使用HTTPS時用的安全證書,暫時也拿過來。
第三步:在代碼中使用上面的參數(shù),看看引入是否成功:(示例代碼如下)
public function index(){ $api_key = '請?zhí)顚懽约旱腡est Serect Key'; //API-KEY,注冊ping++時自動生成 $app_id = '請?zhí)顚懽约旱腁PP的ID'; //APP_ID,注冊時自動生成 Vendor('pingpp.init'); //引入類庫初始化文件 //以支付寶,支付10塊錢。注意amount為1000,單位是”分錢“ $input_data = array('channel'=>'alipay', 'amount'=>1000); //$input_data應(yīng)該是你從APP客戶端收到的json數(shù)據(jù)(根據(jù)業(yè)務(wù)可以在服務(wù)器端定義),需json_decode if (empty($input_data['channel']) || empty($input_data['amount'])) { echo 'channel or amount is empty'; //檢驗支付參數(shù) exit(); } $channel = strtolower($input_data['channel']); //支付渠道:支付寶 $amount = $input_data['amount']; //支付金額10塊錢 $orderNo = substr(md5(time()), 0, 12); //訂單號,必須唯一。根據(jù)支付渠道不同,長度要求也不一樣,請查看文檔https://www.pingxx.com/api#api-c-new \Pingpp\Pingpp::setPrivateKeyPath(VENDOR_PATH . '/pingpp/rsa_private_key.pem'); //引入你的簽名私鑰 //$extra用于設(shè)置支付渠道所需的額外參數(shù),額外參數(shù)多數(shù)是可選,請根據(jù)需求來決定。詳情看參考文檔 // $extra = array( // 'success_url' => 'http://example.com/success', // 'cancel_url' => 'http://example.com/cancel' // ); \Pingpp\Pingpp::setApiKey($api_key); //設(shè)置API-KEY try { $ch = \Pingpp\Charge::create( //create方法表示發(fā)送支付請求到ping++平臺,$ch表示請求成功時返回的charge對象(json格式),服務(wù)器端如果發(fā)起請求成功,此時只需要把charge對象傳遞給APP客戶端,交給客戶端處理 array( 'subject' => 'Your Subject', //關(guān)于這些參數(shù)的意義,請參考文檔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) { //如果發(fā)起支付請求失敗,則拋出異常 // 捕獲報錯信息 if ($e->getHttpStatus() != NULL) { header('Status: ' . $e->getHttpStatus()); echo $e->getHttpBody(); } else { echo $e->getMessage(); } } //代碼到此處,如果你向ping++平臺請求支付成功,并且把charge對象傳遞給了客戶端,那么接下來客戶端如果成功完成了支付,那么 //平臺將會請求你填寫的Webhooks回調(diào)url,在該url里,接收 Webhooks 通知,根據(jù)數(shù)據(jù)的結(jié)果做出邏輯判斷:如果支付成功....,如果支付失敗...
第四步:填寫你的webhook的回調(diào)地址。如果客戶端發(fā)起的支付,已經(jīng)完成交易,那么交易成功的json消息,會
返回到該回調(diào)地址,你根據(jù)json消息,對自己的數(shù)據(jù)庫和業(yè)務(wù)作出相應(yīng)的回應(yīng)或者拋出支付錯誤信息。webhook的填
寫,請到個人中心去填寫,很容易的,不再贅述。
立即學(xué)習(xí)“PHP免費(fèi)學(xué)習(xí)筆記(深入)”;
立即學(xué)習(xí)“PHP免費(fèi)學(xué)習(xí)筆記(深入)”;
立即學(xué)習(xí)“PHP免費(fèi)學(xué)習(xí)筆記(深入)”;
立即學(xué)習(xí)“PHP免費(fèi)學(xué)習(xí)筆記(深入)”;
PHP怎么學(xué)習(xí)?PHP怎么入門?PHP在哪學(xué)?PHP怎么學(xué)才快?不用擔(dān)心,這里為大家提供了PHP速學(xué)教程(入門到精通),有需要的小伙伴保存下載就能學(xué)習(xí)啦!
微信掃碼
關(guān)注PHP中文網(wǎng)服務(wù)號
QQ掃碼
加入技術(shù)交流群
Copyright 2014-2025 http://www.miracleart.cn/ All Rights Reserved | php.cn | 湘ICP備2023035733號