支付寶網頁支付方法


 

日志最近使用支付寶網頁充值功能,記錄下使用的過程,用的是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";
        }
    }
?>                

以上這些都是網頁充值流程,有空以后完善。知其然也要知其所以然。。。。歡迎各位前來拍磚。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM