phpt5支付寶登陸支付介面解析
下面的原始碼來源網路,自己對照修改。
放入一個外掛庫中,方便管理
建立支付類
1.發起支付
public function init() {
$order_id = $_REQUEST['order_id'];
$order_info = $this->order_db->get_one(array('id'=>$order_id));
$product_info = $this->product_db->get_one(array('id'=>$order_info['product_id']));
// 發起支付寶支付
require_once("./phpcms/plugin/alipay/alipay.config.php");
require_once("./phpcms/plugin/alipay/lib/alipay_submit.class.php");
/**************************請求引數**************************/
//商戶訂單號,商戶網站訂單系統中唯一訂單號,必填
$out_trade_no = $order_info['orderno']; // 訂單orderno
//訂單名稱,必填
$subject = '預訂'.$product_info['name'].'訂單'; // 訂單名稱
//付款金額,必填
$total_fee = $order_info['payprice']; // 訂單金額
//商品描述,可空
$body = $product_info['name']; // 可空
/************************************************************/
//構造要請求的引數陣列,無需改動
$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']))
//其他業務引數根據線上開發文件,新增引數.文件地址:https://doc.open.alipay.com/doc2/detail.htm?spm=a219a.7629140.0.0.kiX33I&treeId=62&articleId=103740&docType=1
//如"引數名"=>"引數值"
);
//建立請求
$alipaySubmit = new AlipaySubmit($alipay_config);
$html_text = $alipaySubmit->buildRequestForm($parameter,"get", "確認");
echo $html_text;
}
2.處理支付後的動作,比如更改訂單狀態為支付,跳轉到支付成功頁面等等
a.處理同步通知
// 同步通知處理
public function return_url() {
$this->ilog_db->addLog('return_url');
require_once("./phpcms/plugin/alipay/alipay.config.php");
require_once("./phpcms/plugin/alipay/lib/alipay_notify.class.php");
//計算得出通知驗證結果
$alipayNotify = new AlipayNotify($alipay_config);
$verify_result = $alipayNotify->verifyReturn();
if($verify_result) {//驗證成功
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//請在這裡加上商戶的業務邏輯程式程式碼
//——請根據您的業務邏輯來編寫程式(以下程式碼僅作參考)——
//獲取支付寶的通知返回引數,可參考技術文件中頁面跳轉同步通知引數列表
//商戶訂單號
$out_trade_no = $_GET['out_trade_no'];
//支付寶交易號
$trade_no = $_GET['trade_no'];
//交易狀態
$trade_status = $_GET['trade_status'];
if($_GET['trade_status'] == 'TRADE_FINISHED' || $_GET['trade_status'] == 'TRADE_SUCCESS') {
//判斷該筆訂單是否在商戶網站中已經做過處理
//如果沒有做過處理,根據訂單號(out_trade_no)在商戶網站的訂單系統中查到該筆訂單的詳細,並執行商戶的業務程式
//如果有做過處理,不執行商戶的業務程式
}
else {
echo "trade_status=".$_GET['trade_status'];
}
//——請根據您的業務邏輯來編寫程式(以上程式碼僅作參考)——
$this->_afterPay($out_trade_no);
}
else {
//驗證失敗
//如要除錯,請看alipay_notify.php頁面的verifyReturn函式
echo "驗證失敗";
}
}
b.處理非同步通知
// 非同步通知處理
public function notify_url() {
$this->ilog_db->addLog('notify_url');
require_once("./phpcms/plugin/alipay/alipay.config.php");
require_once("./phpcms/plugin/alipay/lib/alipay_notify.class.php");
//計算得出通知驗證結果
$alipayNotify = new AlipayNotify($alipay_config);
$verify_result = $alipayNotify->verifyNotify();
if($verify_result) {//驗證成功
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//請在這裡加上商戶的業務邏輯程式代
//——請根據您的業務邏輯來編寫程式(以下程式碼僅作參考)——
//獲取支付寶的通知返回引數,可參考技術文件中伺服器非同步通知引數列表
//商戶訂單號
$out_trade_no = $_POST['out_trade_no'];
//支付寶交易號
$trade_no = $_POST['trade_no'];
//交易狀態
$trade_status = $_POST['trade_status'];
if($_POST['trade_status'] == 'TRADE_FINISHED') {
//判斷該筆訂單是否在商戶網站中已經做過處理
//如果沒有做過處理,根據訂單號(out_trade_no)在商戶網站的訂單系統中查到該筆訂單的詳細,並執行商戶的業務程式
//請務必判斷請求時的total_fee、seller_id與通知時獲取的total_fee、seller_id為一致的
//如果有做過處理,不執行商戶的業務程式
//注意:
//退款日期超過可退款期限後(如三個月可退款),支付寶系統傳送該交易狀態通知
//除錯用,寫文字函式記錄程式執行情況是否正常
//logResult("這裡寫入想要除錯的程式碼變數值,或其他執行的結果記錄");
}
else if ($_POST['trade_status'] == 'TRADE_SUCCESS') {
//判斷該筆訂單是否在商戶網站中已經做過處理
//如果沒有做過處理,根據訂單號(out_trade_no)在商戶網站的訂單系統中查到該筆訂單的詳細,並執行商戶的業務程式
//請務必判斷請求時的total_fee、seller_id與通知時獲取的total_fee、seller_id為一致的
//如果有做過處理,不執行商戶的業務程式
//注意:
//付款完成後,支付寶系統傳送該交易狀態通知
//除錯用,寫文字函式記錄程式執行情況是否正常
//logResult("這裡寫入想要除錯的程式碼變數值,或其他執行的結果記錄");
}
//——請根據您的業務邏輯來編寫程式(以上程式碼僅作參考)——
$this->_afterPay($out_trade_no);
}
else {
//驗證失敗
echo "fail";
//除錯用,寫文字函式記錄程式執行情況是否正常
//logResult("這裡寫入想要除錯的程式碼變數值,或其他執行的結果記錄");
}
}
c.處理成功後的訂單資料處理與成功提示
private function _afterPay($orderno) {
// 獲取訂單資訊
$order_info = $this->order_db->get_one(array('orderno'=>$orderno));
if ($order_info['pay_status'] != '1') {
$data['pay_status'] = '1';
$data['pay_type'] = 'alipay';
$data['pay_code'] = '';
$data['paytime'] = time();
$data['order_status']= 3; // 已支付
$r = $this->order_db->update($data,array('orderno'=>$orderno));
if ($r !== FALSE)
{
// 處理支付資訊
header("Location:?m=home&c=order&a=payDone&orderno=".$orderno);
} else {
showmessage('系統異常','blank');
}
} else {
// 處理支付資訊
header("Location:?m=home&c=order&a=payDone&orderno=".$orderno);
}
}
支付配置
<?php
/* *
* 配置檔案
* 版本:3.4
* 修改日期:2016-03-08
* 說明:
* 以下程式碼只是為了方便商戶測試而提供的樣例程式碼,商戶可以根據自己網站的需要,按照技術文件編寫,並非一定要使用該程式碼。
* 該程式碼僅供學習和研究支付寶介面使用,只是提供一個參考。
* 安全校驗碼檢視時,輸入支付密碼後,頁面呈灰色的現象,怎麼辦?
* 解決方法:
* 1、檢查瀏覽器配置,不讓瀏覽器做彈框遮蔽設定
* 2、更換瀏覽器或電腦,重新登入查詢。
*/
//↓↓↓↓↓↓↓↓↓↓請在這裡配置您的基本資訊↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
//合作身份者ID,簽約賬號,以2088開頭由16位純數字組成的字串,檢視地址:https://b.alipay.com/order/pidAndKey.htm
// $alipay_config['partner'] = '2088811285662645';
$alipay_config['partner'] = '2088221883850827'; // jim
//收款支付寶賬號,以2088開頭由16位純數字組成的字串,一般情況下收款賬號就是簽約賬號
$alipay_config['seller_id'] = $alipay_config['partner'];
// MD5金鑰,安全檢驗碼,由數字和字母組成的32位字串,檢視地址:https://b.alipay.com/order/pidAndKey.htm
// $alipay_config['key'] = 'behulcppuzrok5k7a9jikl9u2bmvsisr';
$alipay_config['key'] = '4t3m3qnwiq4lzqvv66sfu2vy9r3skkcn'; // jim
// 伺服器非同步通知頁面路徑 需http://格式的完整路徑,不能加?id=123這類自定義引數,必須外網可以正常訪問
$alipay_config['notify_url'] = "http://local.duanzu.com/?m=ipay&c=alipay&a=notify_url";
// 頁面跳轉同步通知頁面路徑 需http://格式的完整路徑,不能加?id=123這類自定義引數,必須外網可以正常訪問
$alipay_config['return_url'] = "http://local.duanzu.com/?m=ipay&c=alipay&a=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函式
$alipay_config['anti_phishing_key'] = "";
// 客戶端的IP地址 非區域網的外網IP地址,如:221.0.0.1
$alipay_config['exter_invoke_ip'] = "";
//![](http://images2015.cnblogs.com/blog/422101/201609/422101-20160906162103863-1845970975.png)
↑↑↑↑↑↑↑↑↑↑請在這裡配置防釣魚資訊,如果沒開通防釣魚功能,為空即可 ↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑
相關推薦
phpt5支付寶登陸支付介面解析
先看效果圖 下面的原始碼來源網路,自己對照修改。 放入一個外掛庫中,方便管理 建立支付類 1.發起支付 public function init() { $order_id = $_REQUEST['order_id']; $order_info = $this->
支付寶客戶端架構解析:iOS 容器化框架初探
1. 前言 由本章節開始,我們將從支付寶客戶端的架構設計方案入手,細分拆解客戶端在“容器化框架設計”、“網路優化”、“效能啟動優化”、“自動化日誌收集”、“RPC 元件設計”、“移動應用監控、診斷、定位”等具體實現,帶領大家進一步瞭解支付寶在客戶端架構上的迭代與優化歷程。 本節將介紹支付寶 iOS 容器化
支付寶客戶端架構解析:Android 客戶端啟動速度優化之「垃圾回收」
前言 《支付寶客戶端架構解析》系列將從支付寶客戶端的架構設計方案入手,細分拆解客戶端在“容器化框架設計”、“網路優化”、“效能啟動優化”、“自動化日誌收集”、“RPC 元件設計”、“移動應用監控、診斷、定位”等具體實現,帶領大家進一步瞭解支付寶在客戶端架構上的迭代與優化歷程。 本節將介紹支付寶 Andro
支付寶 App 構建優化解析:通過安裝包重排布優化 Android 端啟動效能
1. 前言 本章節我們將圍繞《支付寶 App 構建優化解析》另啟新系列,細分拆解客戶端在“程式碼管理”、“證書管理”、“版本管理”、“構建打包”等維度的具體實現方案展開討論,帶領大家進一步瞭解支付寶在 App 構建模組下的持續優化。 本節將主要記錄通過對支付寶 Android Apk 檔案的重新佈局,來改
支付寶 App 構建優化解析:Android 包大小極致壓縮
前言 本章節我們將圍繞《支付寶 App 構建優化解析》另啟新系列,細分拆解客戶端在“程式碼管理”、“證書管理”、“版本管理”、“構建打包”等維度的具體實現方案展開討論,帶領大家進一步瞭解支付寶在 App 構建模組下的持續優化。 本節將主要記錄通過對支付寶 Android 包大小進行壓縮,來改善執行效率和質
支付寶客戶端架構解析:iOS 客戶端啟動效能優化初探
前言 《支付寶客戶端架構解析》系列將從支付寶客戶端的架構設計方案入手,細分拆解客戶端在“容器化框架設計”、“網路優化”、“效能啟動優化”、“自動化日誌收集”、“RPC 元件設計”、“移動應用監控、診斷、定位”等具體實現,帶領大家進一步瞭解支付寶在客戶端架構上的迭代與優化歷程。 啟動應用是使用者使用任何一款
呼叫支付寶第三方支付介面詳解(沙箱環境)
首發地址:Java知音 注:這裡的支付是沙箱模擬支付 註冊螞蟻金服開放平臺 螞蟻金服開放平臺註冊地址 支付寶掃碼登陸 -> 註冊為自主研發者 2. 配置你的沙箱支付寶 支付寶提供一鍵生成工具便於開發者生成一對RSA2金鑰:https:
Python3.6+Django1.11.3安裝支付寶SDK呼叫支付寶線上支付介面
準備工作 首先需要註冊成為螞蟻金服的開發者 https://openhome.alipay.com/platform/manageHome.htm 接著就是下載支付寶的祕鑰生成工具。 RSA簽名驗籤工具windows_V1.4 教程支付
Java SpringMVC 支付寶-即時支付介面-ping++支付
一. 前言介紹: 前幾天突然要做支付寶的支付功能,因為以前一直沒有做過支付功能,所以比較茫然,但是後來經過不斷摸索和前輩指導,終於做了出來;後來發現,其實做支付寶的支付功能也並不難。 二.正文: 首先你要搞到商家的支付寶賬號,合作者ID  
PHP支付寶APP支付介面
1-1:首先下載支付寶官方SDK,我的是PHP版的,起名“alipay” 1-2:配置檔案 config.php // 支付寶 'ALIPAY_CONFIG' =>[ 'app_id' =>'12345678', /
支付寶批量轉賬介面使用全過程 一一介紹
關於支付寶批量轉賬介面,我覺得有寫點什麼的必要了,畢竟在裡面走了很多彎路%>_<%,而且網上關於這個的資料少之又少,甚至有人都不知道有這個,寶寶真是快哭了(;′⌒`),下面我來一一
Java web整合支付寶電腦支付介面(沙箱環境)
前言 這是博主的第一篇部落格,剛剛畢業,打算把工作中遇到的一些比較普遍的問題記錄下來,如果有寫的不好的地方或者寫錯的地方歡迎指出,一定會改!嘿嘿嘿。先來立個flag,我希望三年之後能夠成為一名不怕bug,熱愛生活,健康快樂的富婆! 這篇部落格主要介紹如何在Jav
第一章 仿支付寶芝麻信用介面製作(需要自定義View的相關知識)
//構造器//ondraw 方法是專門負責View的繪製方法,用畫筆畫出的圖形 都是在這個方法裡繪畫出來的;@Overrideprotected void onDraw(Canvas canvas) {// TODO Auto-generated method stubsuper.onDraw(canvas)
支付寶APP支付介面-PHP
最近做了一個基於微信,alipay的支付功能,主要包括alipay的wap(喚醒支付寶APP),pc,APP支付,前兩者基於MD5簽名,後者基於RSA簽名; 微信的內部瀏覽器支付,APP支付,至於wap,需要申請,達到一定的條件才能審批通過,目前只有京東,1號
支付寶新版支付介面Java後臺簽名
一、APP支付 支付寶更新了支付介面,同時也給出了服務端SDK供下載使用。該SDK提供了一系列的工具類和部分請求的實現。提供了一個AlipaySignature類來提供統一的簽名工具類來幫助使用者快速實現簽名。在SDK下載的文件最後一個部分,提示使用者在簽名的時候使用 St
Java後臺使用支付寶進行支付實現---使用阿里提供的對應服務的支付寶介面
開發專案中使用到了財務支付:選擇支付寶進行支付。在java後臺實現支付寶支付,當初自己接受到這個專案時,也很迷茫,沒有什麼方向。經過自己研究之後,將自己的經驗同大家分享,希望對大家有所幫助。 1.專案中肯定有商家使用者,我們使用相應的阿里提供的介面時
Asp.Net整合支付寶當面付介面報ISV許可權不足
在使用C#開發支付寶當面付介面時,下載了[官網的Demo] 使用公司的支付寶商家賬號替換好引數後,報了以下的錯誤: 配置或網路異常,請檢查後重試 在除錯的過程當中,發現了真實的錯誤問題:ISV許可權不足 { "alipay_tra
支付寶線上支付介面開發教程與總結
1.什麼是第三方支付 所謂第三方支付,就是一些和各大銀行簽約、並具備一定實力和信譽保障的第三方獨立機構提供的交易支援平臺。在通過第三方支付平臺的交易中,買方選購商品後,使用第三方平臺提供的賬戶進行貨款支付,由第三方通知賣家貨款到達。 目前提供第三方支付的機構很
支付寶客戶端架構解析:Android 容器化框架初探
摘要: 本文將介紹支付寶 Android 容器化框架設計的基本思路。 1. 前言 由本章節開始,我們將從支付寶客戶端的架構設計方案入手,細分拆解客戶端在“容器化框架設計”、“網路優化”、“效能啟動優化”、“自動化日誌收集”、“RPC 元件設計”、“移動應用監控、診
除錯支付寶離線認證介面遇到的問題總結
通過 android的JNI呼叫支付寶離線認證庫本地介面時,我欲返回一個類的例項,但是卻報了幾個錯,最後查出來了原因。在此總結下。 錯誤一 :E/dalvikvm﹕JNI ERROR (app bug): accessed stale local reference ,j