支付寶的手機網站支付介面的應用
1.首先下載介面包
解壓下載的檔案可以看到資料夾的結構如下圖:
我使用的是RSA簽名方式,PHP-UTF-8的資料夾
2.readme.txt的文件說明
紅色字型的檔案是最重要的檔案,也是必需的!
│
├lib┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈類資料夾
│ │
│ ├alipay_core.function.php ┈┈┈┈┈┈支付寶介面公用函式檔案
│ │
│ ├alipay_notify.class.php┈┈┈┈┈┈┈支付寶通知處理類檔案
│ │
│ ├alipay_submit.class.php┈┈┈┈┈┈┈支付寶各介面請求提交類檔案
│ │
│ └alipay_rsa.function.php┈┈┈┈┈┈┈支付寶介面RSA函式檔案
│
├log.txt┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈日誌檔案
│
├alipay.config.php┈┈┈┈┈┈┈┈┈┈┈┈基礎配置類檔案
│
├alipayapi.php┈┈┈┈┈┈┈┈┈┈┈┈┈┈支付寶介面入口檔案
│
├notify_url.php ┈┈┈┈┈┈┈┈┈┈┈┈┈伺服器非同步通知頁面檔案
│
├return_url.php ┈┈┈┈┈┈┈┈┈┈┈┈┈頁面跳轉同步通知檔案
│
├key┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈私鑰公鑰資料夾(用法見下方※注意※)
│ │
│ ├rsa_private_key.pem┈┈┈┈┈┈┈┈┈商戶的私鑰檔案
│ │
│ └alipay_public_key.pem┈┈┈┈┈┈┈┈支付寶的公鑰檔案
│
├openssl┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈預設dll檔案(用法見下方※注意※)
│ │
│ ├libeay32.dll
│ │
│ ├ssleay32.dll
│ │
│ └php_openssl.dll
│
├cacert.pem ┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈用於CURL中校驗SSL的CA證書檔案
│
└readme.txt ┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈使用說明文字
3. 把必需的檔案整合到框架裡(我當時用的是thinkPHP框架)
(1)在 裡新建一個資料夾叫AliMobilePay,
把上圖裡的4個檔案拷貝到AliMobilePay資料夾裡,
對以上檔案進行重新命名,
alipay_core.function.php重新命名為:Corefunction.php
alipay_notify.class.php重新命名為:Notify.php
alipay_rsa.function.php重新命名為:Rsafunction.php
alipay_submit.class.php重新命名為:Submit.php
開啟Notify.php,去掉一下程式碼,
require_once("alipay_core.function.php");
require_once("alipay_rsa.function.php");
同樣的道理去掉其他3個檔案裡的包含檔案。
(2)在根目錄下建立一個資料夾key
在key資料夾裡放入商戶的私鑰檔案、支付寶的公鑰檔案、CA證書檔案
◆商戶的私鑰
1、不需要對剛生成的(原始的)私鑰做pkcs8編碼
2、不需要去掉去掉“-----BEGIN RSA PRIVATE KEY-----”、“-----END RSA PRIVATE KEY-----”
簡言之,只要維持用openssl工具剛生成出來的私鑰的內容即可。
◆支付寶公鑰
1、須保留“-----BEGIN PUBLIC KEY-----”、“-----END PUBLIC KEY-----”這兩條文字。
簡言之,支付寶公鑰只需要維持demo裡的原樣即可。
(3)alipay_config.php 配置檔案
把alipay_config.php 配置檔案整合到thinkPHP框架的配置檔案裡
<?php
/**
* Created by PhpStorm.
* User: zhangxiaoliu
* Date: 16/4/15
* Time: 上午10:39
*/
//支付寶商家服務中心連結:https://b.alipay.com/login.htm?goto=https://b.alipay.com:443/newIndex.htm
return array(
'ALIMOBILEPAY_CONFIG'=>array(
//合作身份者id,以2088開頭的16位純數字, (合作身份者id的檢視連結:https://b.alipay.com/order/pidAndKey.htm)
'partner' => '2088XXXXXXXXXXXX',
//收款支付寶賬號,與partner的值一樣
'seller_id' => '2088XXXXXXXXXXXX',
//商戶的私鑰(字尾是.pem)檔案相對路徑
'private_key_path'=> NEW_PORTAL_DOMAIN.'key/rsa_private_key.pem',
//支付寶公鑰(字尾是.pem)檔案相對路徑
'ali_public_key_path'=> NEW_PORTAL_DOMAIN.'key/alipay_public_key.pem',
//簽名方式 不需修改
'sign_type' => strtoupper('RSA'),
//字元編碼格式 目前支援 gbk 或 utf-8
'input_charset'=> 'utf-8',
//ca證書路徑地址,用於curl中ssl校驗
'cacert' => NEW_PORTAL_DOMAIN.'key/cacert.pem',
//訪問模式,根據自己的伺服器是否支援ssl訪問,若支援請選擇https;若不支援請選擇http
'transport' => 'http',
//這裡是非同步通知頁面url,提交到專案的Payment控制器的notifyurl方法;
//需http://格式的完整路徑,不能加?id=123這類自定義引數
'notify_url'=> NEW_PORTAL_DOMAIN.'portal.php/AliMobilePay/notify_url.php',
//這裡是頁面跳轉通知url,提交到專案的Payment控制器的returnurl方法;
//需http://格式的完整路徑,不能加?id=123這類自定義引數
'return_url'=> NEW_PORTAL_DOMAIN.'portal.php/AliMobilePay/return_url.php',
//支付成功跳轉到的頁面
'successpage'=>NEW_PORTAL_DOMAIN.'portal.php/Success/index',
//支付失敗跳轉到的頁面
'errorpage'=>NEW_PORTAL_DOMAIN.'portal.php/Error/index',
//商品展示地址
'product_url'=>NEW_PORTAL_DOMAIN.'portal.php/Product/index',
)
);
(4)支付寶幫助中心
4.呼叫支付寶介面
(1)新建一個AliMobilePay控制器