欧美成人片一区二区三区,久久碰人妻一区二区三区,久久婷婷激情综合色综合俺也去,狂野欧美性猛交免费视频,久久夜色精品国产亚洲

19
2018/05

技術型問題,支付寶支付成功以后,如何對返回的數(shù)據進行安全驗證?

發(fā)布時間:2018-05-19 11:29:02
發(fā)布者:pengyifeng
瀏覽量:
0

alipay的支付通知有兩類。異步通知(notify_url)與return_url.前面是post異步通知,后面的return_url 是get返回url只返回一次。

A服務器通知,對應的參數(shù)為notify_url,支付寶通知使用POST方式 

B頁面跳轉通知,對應的參數(shù)為return_url,支付寶通知使用GET方式 (通知地址不需要像以前一樣去賬戶內設置,而是由客戶在支付的時候通過參數(shù)傳遞給我地址)。 

類似 notify_url=http://m.xcyouyuan.com.cn/notify_alipay.php 注意:m.xcyouyuan.com.cn是您網站的域名,也可以用ip地址代替。對于服務器通知,ip地址一定是公網的,私有地址獲取不到alipay的返回數(shù)據

一、 文件結構

1 由兩部分組成,支付接口與支付成功返回接口部分。支付寶快捷支付接口一般為url直接發(fā)起網頁支付。返回就是支付寶服務器對該筆訂單處理完畢后,通知與返回該筆訂單的詳細信息到你填寫的notify_url地址,服務器接收到后,對返回數(shù)據處理對應訂單狀態(tài)。 

2 以PHP代碼中的程序為例。 

接入部分的頁面文件包含:配置頁alipay_Config.php、方法詳細頁alipay/Alipay_Payto.php、程序入口頁index.php以及MD5加密方法類頁alipayto/Alipay_md5.php。通知返回部分的頁面文件包含:方法詳細頁alipay/Alipay_Payto.php、MD5加密方法類頁alipayto /Alipay_md5.php、支付完成后(支付寶處理完畢后)自動跳轉回的自定義頁面return_Alipay_Notify.php、兩方服務器間相互交互(無法直接看到)通知頁Alipay_Notify.php。  

----------------------------------------------------------------- 

工作原理 

對結構有所了解之后,就可以開始研究具體是如何運行的了 

a) 接入部分原理 

i. 第一步——配置文件參數(shù)信息: 

public function config()
{
    $alipay_config = array();

    $alipay_config['partner'] = '2088***********';

//收款支付寶賬號,以2088開頭由16位純數(shù)字組成的字符串,一般情況下收款賬號就是簽約賬號
   $alipay_config['seller_id'] = '2088***********';

// MD5密鑰,安全檢驗碼,由數(shù)字和字母組成的32位字符串,查看地址:https://b.alipay.com/order/pidAndKey.htm
    $alipay_config['key'] = '12345679810111213141516';

// 服務器異步通知頁面路徑  需http://格式的完整路徑,不能加?id=123這類自定義參數(shù),必須外網可以正常訪問
   $alipay_config['notify_url'] = "http://m.xcyouyuan.com.cn/notify_url";

// 頁面跳轉同步通知頁面路徑 需http://格式的完整路徑,不能加?id=123這類自定義參數(shù),必須外網可以正常訪問
   $alipay_config['return_url'] = "http://m.xcyouyuan.com.cn/return_url";

//簽名方式
    $alipay_config['sign_type'] = strtoupper('MD5');

//字符編碼格式 目前支持 gbk 或 utf-8
    $alipay_config['input_charset'] = strtolower('utf-8');

//ca證書路徑地址,用于curl中ssl校驗
//請保證cacert.pem文件在當前文件夾目錄中
   $alipay_config['cacert'] = getcwd() . '\\cacert.pem';

//訪問模式,根據自己的服務器是否支持ssl訪問,若支持請選擇https;若不支持請選擇http
    $alipay_config['transport'] = 'http';

// 支付類型 ,無需修改
    $alipay_config['payment_type'] = "1";

// 產品類型,無需修改
    $alipay_config['service'] = "create_direct_pay_by_user";

//↑↑↑↑↑↑↑↑↑↑請在這里配置您的基本信息↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑


//↓↓↓↓↓↓↓↓↓↓ 請在這里配置防釣魚信息,如果沒開通防釣魚功能,為空即可 ↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓

// 防釣魚時間戳  若要使用請調用類文件submit中的query_timestamp函數(shù)
    $alipay_config['anti_phishing_key'] = "";

// 客戶端的IP地址 非局域網的外網IP地址,如:221.0.0.1
    $alipay_config['exter_invoke_ip'] = "";

//↑↑↑↑↑↑↑↑↑↑請在這里配置防釣魚信息,如果沒開通防釣魚功能,為空即可 ↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑
    return $alipay_config;
}

配置完成之后,直接調用封裝好的執(zhí)行代碼: 

a) 以php程序代碼為例: 

        $out_trade_no = $_POST['WIDout_trade_no'];

        //訂單名稱,必填
        $subject = $_POST['WIDsubject'];

        //付款金額,必填
        $total_fee = '0.01';

        //商品描述,可空
        $body = $_POST['WIDbody'];

/************************************************************/

//構造要請求的參數(shù)數(shù)組,無需改動
$parameter = array(
      "service"       => $alipay_config['service'],
      "partner"       => $alipay_config['partner'],
      "seller_id"  => $alipay_config['seller_id'],
      "payment_type" => $alipay_config['payment_type'],
      "notify_url"   => $alipay_config['notify_url'],
      "return_url"   => $alipay_config['return_url'],
      
      "anti_phishing_key"=>$alipay_config['anti_phishing_key'],
      "exter_invoke_ip"=>$alipay_config['exter_invoke_ip'],
      "out_trade_no" => $out_trade_no,
      "subject"  => $subject,
      "total_fee"    => $total_fee,
      "body" => $body,
      "_input_charset"   => trim(strtolower($alipay_config['input_charset']))
      
);

//建立請求
$alipaySubmit = new AlipaySubmit($alipay_config);
$html_text = $alipaySubmit->buildRequestForm($parameter,"get", "確認");
echo $html_text;

封裝的demo中已經將對應的方法封裝成了PHP函數(shù),demo中直接調用就可以發(fā)起alipay支付請求。

a) 不可缺少的參數(shù) 

i. service服務參數(shù),這個是用來區(qū)別這個接口是用的什么接口,所以絕對不能修改。 

ii. partner合作身份者ID、key安全校驗碼或稱私鑰這一組參數(shù)是簽約合同生效后才能拿的到,partner是來鑒別是哪個商家與支付寶簽約,而這個Key它如同鑰匙般相當重要。

iii. seller_email收款人支付寶賬號,支付寶中有手機類型、電子郵件類型的支付寶賬號是都可以用這個參數(shù)的。 

iv. subject在支付寶的收銀臺里是直接與商品名稱關聯(lián)在一起的,但是說的更準確些的話,這個參數(shù)是這筆交易的名稱,因為這筆交易不一定只買一件商品。它的作用不僅是在收銀臺里可以清晰的顯示出來,而且在支付寶的賬

-------------------------------------------------------- 

通知返回 

a) 返回頁 

傳遞給支付寶時的return_url參數(shù)所對應的頁面文件。

具備的屬性: 

1、發(fā)起支后,買家已經成功付款以后流,頁面會自動跳轉回配置文件中填寫的 return_url 地址中。 

2、支付完成后跳轉 

3、參數(shù)以get方式傳輸。 

4、網址只跳轉一次,不能重復跳轉。 

b) 通知頁 

傳遞給支付寶時的notify_url參數(shù)所對應的頁面文件 

具備的屬性: 

1、被支付寶調用才能啟動。 

2、服務器間的傳遞,看不見執(zhí)行操作。 

3、參數(shù)以post方式傳輸。 

4、支付寶中的該筆交易存在,且該筆交易狀態(tài)發(fā)生了變更,就會被調用。

5、被調用程序判斷(if(sign = mysign and responseTxt = true)),若我們自己在該判斷中有做程序編寫,成功則不再被調用,不成功則會反復被調用。

6、異步的,第一次收到訂單信息(以下都稱之為“通知”)是與返回頁近乎等同或等同的同步時間,在判斷不成功的情況下,會收到第二次第三次等次數(shù)的通知,時間間隔從最先的一兩分鐘,到后面的幾個小時。失效時間是4

8小時。 

7、程序必須在服務器上調試、運行。 

8、程序編寫時必須采用程序執(zhí)行成功,才寫頁面echo(“success”);,不成功則寫頁面echo(“fail”); 支付寶根據success來判定是否要重新再次發(fā)送通知該頁面的Html頁面中必須是空白、無任何Html標簽、無任何空格、不允許做頁面跳轉。

返回列表