支付寶即時到賬支付全解析

2021-09-11 12:35:04 字數 3912 閱讀 9098

簡單介紹了支付寶即時到賬支付-即pc端支付的申請、接入、使用、確認支付結果等相關流程

系列五 支付寶即時到賬支付全解析

系列七 支付寶退款全解析

系列八 支付寶開放平台支付更新公升級全解析

登入支付寶商家服務,進入即時到賬支付。簽約。

簽約通過後,一共需要以下引數可以完成支付:

partnerid

sellerid

rsa私鑰

支付寶公鑰

1.1 partnerid

商戶合作者身份。

進入我的商家服務

獲取pid

paste_image.png

1.2 sellerid

登入支付寶賬戶,一般為郵箱或者手機號

1.3 rsa私鑰和支付寶公鑰

rsa私鑰公鑰是自己生成,然後將公鑰上傳支付寶,私鑰自己儲存。

詳見官網文件

paste_image.png

參考支付寶移動支付接入文件

主要幾個步驟:

生成支付位址(放在服務端,需要生成簽名)

開啟位址跳轉支付寶收銀台進行掃碼或者輸入密碼支付

服務端非同步接收支付結果

2.1 生成支付位址

$partner = "";  //你的pid

$seller_id = ""; //seller_id

$subject = "支付寶移動支付測試"; //交易主題

$body = "支付寶移動支付測試detail"; //交易詳細說明

$total_fee = "0.01"; //支付金額 單位是元

$out_trade_no = ""; //自己業務系統生成的交易no,可以唯一標識

$rsa_path = ""; //rsa私鑰路徑

$notify_url = ""; //接收支付結果通知url

$mapi_gateway = ""; //mapi 入口 路由

$data = array();

$data['service'] = "create_direct_pay_by_user";

$data['partner'] =$partner;

$data['_input_charset'] = "utf-8";

$data['notify_url'] = $notify_url;

$data['out_trade_no'] = $out_trade_no;

$data['subject'] = $subject;

$data['payment_type'] = "1";

$data['seller_id'] = seller_id;

$data['total_fee'] = $total_fee;

$data['body'] = $body;

//簽名

$unsign_str =createlinkstring(argsort($data));

$sign =rsasign($unsign_str, $rsa_path);

$params = createlinkstringurlencode($data);

$url = $mapi_gateway . '?' . $params;複製**

一些函式:

/**

* 把陣列所有元素,按照「引數=引數值」的模式用「&」字元拼接成字串

* @param $para mixed 需要拼接的陣列

* @return string 拼接完成以後的字串

*/public

static

function

createlinkstring

($para)

$arg.=$key."=".$val."&";

}

//去掉最後乙個&字元

$arg = substr($arg,0,count($arg)-2);

//如果存在轉義字元,那麼去掉轉義

if(get_magic_quotes_gpc())

return $arg;

}/**

* 把陣列所有元素,按照「引數=引數值」的模式用「&」字元拼接成字串 並對字串做urlencode編碼

* @param $para mixed 需要拼接的陣列

* @return string 拼接完成以後的字串

*/public

static

function

createlinkstringurlencode

($para)

$arg.=$key."=".urlencode($val)."&";

}

//去掉最後乙個&字元

$arg = substr($arg,0,count($arg)-2);

//如果存在轉義字元,那麼去掉轉義

if(get_magic_quotes_gpc())

return $arg;

}/**

* 陣列排序 按照ascii字典公升序

* @param $para mixed 排序前陣列

* @return mixed 排序後陣列

*/public

static

function

argsort

($para)

/** * rsa簽名

* @param $data string 待簽名資料

* @param $private_rsa_path string 使用者私鑰位址

* @return mixed

* 失敗:false

* 成功:簽名結果

*/public

static

function

rsasign

($data, $private_rsa_path)

openssl_sign($data, $sign, $res);

openssl_free_key($res);

//base64編碼

$sign = base64_encode($sign);

return $sign;

}複製**

注:尤其要注意通知結果驗證成功後要能正確處理重複通知,放置多次發貨造成資金損失

開啟其中服務端demo將裡面驗證通知部分取出來使用。

$$alipay_partnerid = "";  //你的pid

$$alipay_public_key_path = ""; //支付寶公鑰路徑

$alipaynotify = new alipaynotify($alipay_partnerid, $alipay_public_key_path);

$verify_result = $alipaynotify->verifynotify();

if(!$verify_result)

//成功接收並驗證了通知

echo("success");

if($_post['trade_status'] !== "trade_success" && $_post['trade_status'] !== "trade_finished") else

if($_post['trade_status'] === "trade_closed" && $_post['refund_status'] === "refund_success") else

}//支付成功處理 發貨

//todo

複製**

客戶端收到同步支付結果後建議一段時間內輪詢檢查服務端,獲取服務端的結果,支付最終狀態以服務端為準

支付寶App支付全解析

系列五 支付寶即時到賬支付全解析 系列七 支付寶退款全解析 系列八 支付寶開放平台支付更新公升級全解析 登入支付寶商家服務,進入移動支付。簽約。簽約通過後,一共需要以下引數可以完成支付 partnerid sellerid rsa私鑰 支付寶公鑰 1.1 partnerid 商戶合作者身份。進入我的...

ThinkPHP中支付寶即時到賬介面的開發過程

首先說在thinkphp中如何使用介面。我們需要在配置檔案中寫好支付寶各個引數,例如 arr1 include config.ini.php arr2 array 支付寶配置引數 alipay config array partner 成功申請支付寶介面後獲取到的pid key 成功申請支付寶介面後...

支付寶支付

1 呼叫支付寶介面 具體 i 呼叫alipaysubmit.buildrequestpara 方法生成要請求給支付寶的引數陣列。呼叫alipaycore.parafilter sparatemp 除去陣列中的空值和簽名引數。之後,呼叫buildrequestmysign spara 生成簽名結果。最...