亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 語言 > PHP > 正文

php app支付寶回調(異步通知)詳解

2024-05-05 00:04:43
字體:
來源:轉載
供稿:網友

之前寫過支付寶app支付的支付的后臺代碼,現在來說一下異步通知:

個人感覺支付寶的異步通知,步驟比微信簡單點,但里面的坑可是沒少多少,就一個驗簽就把我整的快瘋了….

異步通知:

1,先確定在支付的時候寫的回調地址的正確性!!!!!!

2.找到支付寶封裝的驗簽類,rsaCheckV1(這個也是在app2.0接口里面)

3.驗證回調參數

*4.檢驗訂單

先確定在支付的時候寫的回調地址的正確性!!!!!!

一定要確定回調地址的寫的是否指到是你寫回調驗證的那個放里面,別到時候在回頭找錯誤的時候,抓耳撓腮..

找到支付寶封裝的驗簽類,rsaCheckV1(這個也是在app2.0接口里面)

這是支付寶已經封裝好的類:

 

/** rsaCheckV1 & rsaCheckV2  * 驗證簽名  * 在使用本方法前,必須初始化AopClient且傳入公鑰參數。  * 公鑰是否是讀取字符串還是讀取文件,是根據初始化傳入的值判斷的。  **/ public function rsaCheckV1($params, $rsaPublicKeyFilePath,$signType='RSA') {  $sign = $params['sign'];  $params['sign_type'] = null;  $params['sign'] = null;  $this->alipayrsaPublicKey = $rsaPublicKeyFilePath;  return $this->verify($this->getSignContent($params), $sign, $rsaPublicKeyFilePath,$signType); } public function rsaCheckV2($params, $rsaPublicKeyFilePath, $signType='RSA') {  $sign = $params['sign'];  $params['sign'] = null;  return $this->verify($this->getSignContent($params), $sign, $rsaPublicKeyFilePath, $signType); } function verify($data, $sign, $rsaPublicKeyFilePath, $signType = 'RSA') {  if($this->checkEmpty($this->alipayPublicKey)){   $pubKey= $this->alipayrsaPublicKey;   $res = "-----BEGIN PUBLIC KEY-----/n" .    wordwrap($pubKey, 64, "/n", true) .    "/n-----END PUBLIC KEY-----";  }else {   //讀取公鑰文件   $pubKey = file_get_contents($rsaPublicKeyFilePath);   //轉換為openssl格式密鑰   $res = openssl_get_publickey($pubKey);  }  ($res) or die('支付寶RSA公鑰錯誤。請檢查公鑰文件格式是否正確');   //調用openssl內置方法驗簽,返回bool值  if ("RSA2" == $signType) {   $result = (bool)openssl_verify($data, base64_decode($sign), $res, OPENSSL_ALGO_SHA256);  } else {   $result = (bool)openssl_verify($data, base64_decode($sign), $res);  }  if(!$this->checkEmpty($this->alipayPublicKey)) {   //釋放資源   openssl_free_key($res);  }  return $result; }

還有就是別把這兩個方法混淆了,前者需要傳signtype,后者不需要(前面兩個方法都會調用第三個方法),還有一點很重要,就是這個方法的本身是從文件里面提取公鑰的的,但是本人是直接傳的,就把這個方法稍加改動了一下,讓它直接讀取我傳的公鑰.這個驗簽方法返回的是(bool)true或者(bool)false,來判斷驗簽是否成功.

在這里要注意三點: 

1—注意公鑰的正確性,還有用的是支付寶公鑰不是你當初生成的公鑰 
2—區別這里的方法和支付寶接口本身方法的公鑰獲取方式 
3—注意接口方法本身的注釋,很重要

驗證回調參數

支付寶的回調參數是以post的方式回傳的,但是我們在測試的時候可以直接把回調url直接寫在地址欄里面,然后用get方式接受,這樣就不用拼參數了,結果是一樣的(回調url可以記錄在log文件里面),還有就是驗簽的時候需要所有的回傳參數原封不動的去驗簽,而這里自己需要什么參數就接收什么參數就可以,這里就不多說了,就是正常的接受參數的問題.下面給出我在驗證參數時,檢驗訂單金額和商家編號的代碼,僅做參考(我用的tp5):

public function check($receipt_amount,$buyer_pay_amount,$order_price,$app_id,$seller_email){  if($receipt_amount !== $order_price || $buyer_pay_amount !== $order_price){//    echo 1;   return $this->log('訂單支付金額有誤!');  }  //支付寶支付的所有參數  $alipay_config = Config::get('alipay_config');  if($app_id !== $alipay_config['appid']){//   echo 2;    return $this->log('商家編號有誤!');  }  //驗證收款商家是否正確  if($seller_email !== $alipay_config['seller_id']){//   echo 3;   return $this->log('收款商家有誤!');  }  return 'success'; }

檢驗訂單

這里主要就是檢驗庫存,這里最好用事物處理,(雖然你的訂單量可能不一定回到這個地步),下面給出我的代碼,僅做參考(tp5):

public function index($order_sn='') {  if(isset($_POST['order_sn']) && empty($order_sn)){   $order_sn = $_POST['order_sn'];  }  $table = self::order_info($order_sn);  if($table == 'failure'){return 'false';}  $oid = $table['order_id'];  //通過訂單id $oid 查詢出訂單中物品的id  $goodsTable = Db::name('goods');  $allgoods = Db::name("test1")->where('o_id', $oid)->field('g_id,g_num')->select();  foreach ($allgoods as $k => $v) {   //事務處理   $goodsTable->startTrans();//事物開始   try {    //判斷庫存數量    $goodsTable->query('update test2 set g_num = g_num-' . $v['g_num'] . ' where g_num >= ' . $v['g_num'] . ' and gid =' . $v['g_id']);   } catch (/Exception $e) {    $goodsTable->rollBack();//事物回滾   }   $goodsTable->commit();// 事物提交  }  //修改訂單  $res = Db::name('test3')->where('order_sn',$order_sn)->update(['order_state' => '1','pay_time'=>time()]);  if($res != 0){   return 'success';  } }

接下來就是把結果返回給支付寶就可以,失敗:return ‘failure';成功:return ‘success';到這里就結束了.

還有就是在出錯后和在找bug的時候都平心靜氣一些,理智的找問題才會更快的找到問題 ( 如果實在不行就去找支付寶的人工支持,他會為你調試你的代碼,會給出一個差不多的結論,然后你再去改就會容易很多 :) ).

最后希望大家支付,回調都可以成功!

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持VeVb武林網。


注:相關教程知識閱讀請移步到PHP教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
日韩中文字幕网址| 国产欧美精品久久久| 欧美有码在线视频| 欧美日韩性生活视频| 秋霞av国产精品一区| 亚洲老头老太hd| 欧美黑人性视频| 国内精品久久久久影院 日本资源| 国产午夜精品视频免费不卡69堂| 久久在线观看视频| 97香蕉久久超级碰碰高清版| 国产精品美女午夜av| 亚洲人成电影在线| 久久99精品久久久久久琪琪| 中文字幕亚洲欧美一区二区三区| 日韩av影视在线| 日韩在线观看网站| 亚洲色图17p| 亚洲成人网久久久| 欧美国产日韩xxxxx| 久久人人爽人人爽人人片av高清| 久久精品国产免费观看| 国产精品第一视频| 亚洲成人av在线| 欧美成人国产va精品日本一级| 久久久久久国产精品| 91久久久久久| www日韩中文字幕在线看| 日韩av电影手机在线观看| 日本成人在线视频网址| 亚洲欧美日韩爽爽影院| 精品欧美激情精品一区| 亚洲一区二区三区四区在线播放| 国产精品自产拍在线观| 午夜精品福利视频| 在线中文字幕日韩| 911国产网站尤物在线观看| 98精品在线视频| 成人av在线网址| www.欧美精品| 97人人爽人人喊人人模波多| 在线播放国产一区二区三区| 国产性猛交xxxx免费看久久| 国产精品27p| 国产一区二区久久精品| 欧美精品福利视频| 成人激情视频免费在线| 亚洲高清久久网| 久久av.com| 国产精品久久999| 青草青草久热精品视频在线网站| 成人精品一区二区三区电影黑人| 亚洲国产一区二区三区在线观看| 国产精品揄拍500视频| 91影视免费在线观看| 91精品国产成人| 国内精品久久久久久中文字幕| www.日本久久久久com.| 欧美午夜片在线免费观看| 国产欧美va欧美va香蕉在线| 亚洲国产成人久久综合| 久久久久久国产三级电影| 欧美日韩中国免费专区在线看| 亚洲欧美精品伊人久久| 色综合91久久精品中文字幕| 日韩av大片免费看| 日韩精品中文字幕久久臀| 亚洲精品suv精品一区二区| 久久久精品电影| 亚洲性无码av在线| 亚洲黄页视频免费观看| 欧美日韩国产一区中文午夜| 日韩av在线导航| 日韩激情第一页| 国产偷国产偷亚洲清高网站| 一区二区日韩精品| 亚洲人高潮女人毛茸茸| 国产一区二区三区在线观看网站| 日韩欧美在线免费观看| 欧美中文字幕第一页| 亚洲日韩中文字幕| 欧美一级片免费在线| 中文字幕亚洲无线码a| 国产91精品久久久久| 亚洲综合在线中文字幕| 亚洲视频一区二区| 亚州av一区二区| 国a精品视频大全| 日韩在线中文视频| 精品视频在线播放| 性夜试看影院91社区| 中文字幕亚洲欧美在线| 国产精品视频公开费视频| 韩剧1988在线观看免费完整版| 欧美性xxxxxxxxx| 久久成人亚洲精品| 91极品女神在线| 久久人91精品久久久久久不卡| 欧美老妇交乱视频| 高清欧美性猛交xxxx黑人猛交| 国产精品wwwwww| 国产精品久久久久久久久久久新郎| 91青草视频久久| 日韩有码在线电影| 亚洲国产小视频在线观看| 久久久亚洲国产| 亚洲一区国产精品| 亚洲国产精品悠悠久久琪琪| 欧美巨猛xxxx猛交黑人97人| 日韩av第一页| 精品中文字幕视频| 欧美一级电影久久| 久久av红桃一区二区小说| 日韩欧美中文第一页| 久久理论片午夜琪琪电影网| 欧美高清不卡在线| 日韩色av导航| 欧美一级高清免费| 国产一区二中文字幕在线看| 亚洲三级 欧美三级| 欧美精品一本久久男人的天堂| 国产一区二区三区精品久久久| 久久精品国产69国产精品亚洲| 欧美日韩国产激情| 午夜精品一区二区三区在线视| 国产精品日韩欧美综合| 在线精品国产成人综合| 一区二区欧美亚洲| 欧美专区在线播放| 正在播放欧美一区| 国产欧美精品久久久| 亚洲欧洲美洲在线综合| 91精品综合久久久久久五月天| 日韩av免费在线播放| 一本久久综合亚洲鲁鲁| 亚洲国产免费av| 欧美日韩xxx| 欧美激情视频一区二区三区不卡| 97精品欧美一区二区三区| 国产欧洲精品视频| 欧美激情视频在线观看| 久久亚洲私人国产精品va| 色综合天天综合网国产成人网| 免费不卡在线观看av| 8x海外华人永久免费日韩内陆视频| 超在线视频97| 精品一区二区三区四区| 亚洲精品色婷婷福利天堂| 欧美精品中文字幕一区| 国产精品影片在线观看| 国产精品色悠悠| 久久精品国产综合| 亚洲va欧美va在线观看| 久久精品国产免费观看| 久久久99久久精品女同性| 国产精品青草久久久久福利99| 91人人爽人人爽人人精88v| 大伊人狠狠躁夜夜躁av一区| 国产日韩精品综合网站| 97人人爽人人喊人人模波多| 国产精品久久久久9999| 一区二区三区美女xx视频| 日韩精品视频在线观看免费| 亚洲免费视频观看|