日志最近使用支付寶網頁充值功能,記錄下使用的過程,用的是php yii框架。因為時間緊,文檔沒有詳細的看過,按照給的例子直接移過來使用,后續了解深入了可以完善。
1、文檔的地址https://docs.open.alipay.com/203,可以直接下載php版本的支付寶文件。
2、把下載下來的文件放到項目vendor下面,新建alipay文件,把一下文件復制過去。
把.DS_Store的文件刪除掉,其余的可以不用修改。再在新的項目中添加一個配置文件,配置app_id,公鑰,私鑰,異步和同步地址等。可以寫在config文件夾中如下:
在params文件中引入alipay.php,然后復制給一個參數
這樣訪問alipay_config就可以訪問到配置的公鑰,私鑰,同步異步地址,app_id等信息,格式如下:
Controller和view頁面按照正常的流程創建,渲染。調用ali支付的時候寫一個AlipayController文件,來處理阿里的回調函數等。
<?php namespace app\modules\webpay\controllers; use Yii; use yii\db\Query; use yii\filters\AccessControl; use yii\filters\VerbFilter; use yii\web\Controller; use app\models\Curl; require_once Yii::$app->basePath."/vendor/alipay/wappay/buildermodel/AlipayTradeWapPayContentBuilder.php"; require_once Yii::$app->basePath."/vendor/alipay/wappay/service/AlipayTradeService.php"; ?>
首先要引入阿里的文件,一個是服務器處理一個是網頁支付 主要代碼如下
<?php /** * 支付寶 */ public function Zhifubao($data){ //實例化Builder對象 $alipay = new \AlipayTradeWapPayContentBuilder(); //商品描述,可空 $order_desc = "充值"; //訂單名稱,必填 $order_name = "充值"; //商戶訂單號,商戶網站訂單系統中唯一訂單號,必填 //$order_id = date("YmdHis",time()).$serid; $order_id = $data['order_id']; //付款金額,必填 $order_amount = $data['money']; //超時時間 $order_timeout = "1m"; //給Builder對象賦值 $alipay->setBody($order_desc); $alipay->setSubject($order_name); $alipay->setOutTradeNo($order_id); $alipay->setTotalAmount($order_amount); $alipay->setTimeExpress($order_timeout); //配置信息 $config = Yii::$app->params['alipay_config']; //實例化service對象,需傳入配置信息 $serverObj = new \AlipayTradeService($config); //執行支付 $result = $serverObj->wapPay($alipay,$config['return_url'],$config['notify_url']); return; } ?>
這樣就可以調起支付寶頁面。前提是配置一定要配置好,接下來就是異步處理函數和同步函數處理的邏輯。
注:放到線上ngnix服務器,出現的意外事件
默認的日志路徑沒權利寫,解決辦法:修改路徑,寫一個有權限的路徑文件。
異步處理有一個支付寶驗證函數,可以驗證是否是本人支付
<?php //異步通知 public function actionNotifyinfo(){ $data = Yii::$app->request->post(); //配置信息 $config = Yii::$app->params['alipay_config']; //實例化service對象,需傳入配置信息 $serverObj = new \AlipayTradeService($config); //驗證是否為支付寶返回結果 $rst = $serverObj->check($data); if ($rst){ //處理邏輯 echo "success"; }else{ echo "fail"; } } ?>
以上這些都是網頁充值流程,有空以后完善。知其然也要知其所以然。。。。歡迎各位前來拍磚。