1. 程式人生 > >ASP.NET實現支付寶接口功能

ASP.NET實現支付寶接口功能

接口 系統 func error 程序 dex ges img user

最近做系統,需要實現在線支付功能,毫不猶豫,選擇的是支付寶的接口支付功能。這裏我用的是即時到帳的接口,具體實現的步驟如下:
一、下載支付寶接口包
下載地址:
https://b.alipay.com/order/productDetail.htm?productId=2012111200373124&tabId=4#ps-tabinfo-hash
具體如何下載,我就不在羅嗦了~~
很多人反映,用支付寶的接口到最後面會出現驗證錯誤。其實,這裏需要對接口程序進行一下改造。需要添加幾個自定義函數。為了讓大家以後避免出現同樣的問題,我把我改造好的支付寶接口程序上傳了( --> 猛戳這裏下載附件 )。大家可以下載下來,解壓後放到框架的Vendor目錄中即可~
二、重新整理接口包文件,這一步應該算是比較關鍵的(個人認為)
下載下來的接口包文件有很多語言的源碼,
技術分享


我們選擇 create_direct_pay_by_user-PHP-UTF-8 這個名稱的接口文件。裏面包括如下文件:
技術分享
images文件裏是支付寶相關的一些標誌的圖片,我們暫不管他,lib文件很重要,是整個接口的核心類文件;
alipay.config.php是相關參數的配置文件
alipayapi.php 是支付寶接口入口文件
notify_url.php 是服務器異步通知頁面文件;
return_url.php 是頁面跳轉同步通知文件;
在ThinkPHP的框架文件下,找到Extend 進入,再進入Vendor,在Vendor文件夾下,新建文件夾Alipay,把支付寶作為第三方類庫引入。然後,復制支付寶接口文件包中lib文件裏的所有文件。一共4個文件,如下:
技術分享

現在對以上文件進行重命名,
alipay_core.function.php重命名為:Corefunction.php;
alipay_md5.function.php重命名為:Md5function.php;
alipay_notify.class.php重命名為:Notify.php;
alipay_submit.class.php重命名為:Submit.php;
然後,打開Submit.php文件,把以下代碼去掉;

1 require_once("alipay_core.function.php");
2 require_once("alipay_md5.function.php");

同樣,打開Notify.php文件,把以下兩段代碼去掉

1 require_once("alipay_core.function.php");
2 require_once("alipay_md5.function.php");

為什麽要去掉以上兩個文件中的這兩段代碼,因為在項目中調用接口文件的時候,我把所有4個核心文件都通過vendor來進行引入。所以,這不再需要導入。
到此,支付寶接口包相關核心類庫的整理基本完成。現在開始在項目中調用;
三、在項目中調用支付寶接口
調用分兩步:
1、在配置文件中Conf/Config.php文件中對支付寶相關參數進行配置:

//支付寶配置參數
‘alipay_config‘=>array(
        ‘partner‘ =>‘20********50‘,   //這裏是你在成功申請支付寶接口後獲取到的PID;
     ‘key‘=>‘9t***********ie‘,//這裏是你在成功申請支付寶接口後獲取到的Key
     ‘sign_type‘=>strtoupper(‘MD5‘),
     ‘input_charset‘=> strtolower(‘utf-8‘),
     ‘cacert‘=> getcwd().‘\\cacert.pem‘,
     ‘transport‘=> ‘http‘,
       ),
      //以上配置項,是從接口包中alipay.config.php 文件中復制過來,進行配置;
     
‘alipay‘   =>array(
  //這裏是賣家的支付寶賬號,也就是你申請接口時註冊的支付寶賬號
‘seller_email‘=>[email protected],

//這裏是異步通知頁面url,提交到項目的Pay控制器的notifyurl方法;
‘notify_url‘=>‘http://www.xxx.com/Pay/notifyurl‘, 

//這裏是頁面跳轉通知url,提交到項目的Pay控制器的returnurl方法;
‘return_url‘=>‘http://www.xxx.com/Pay/returnurl‘,

//支付成功跳轉到的頁面,我這裏跳轉到項目的User控制器,myorder方法,並傳參payed(已支付列表)
‘successpage‘=>‘User/myorder?ordtype=payed‘,   

//支付失敗跳轉到的頁面,我這裏跳轉到項目的User控制器,myorder方法,並傳參unpay(未支付列表)
‘errorpage‘=>‘User/myorder?ordtype=unpay‘, 
),

參考網址
: http://www.thinkphp.cn/code/240.html

ASP.NET實現支付寶接口功能