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

首頁 > 編程 > PHP > 正文

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

2019-11-06 10:02:33
字體:
來源:轉載
供稿:網友

之前寫過支付寶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的時候都平心靜氣一些,理智的找問題才會更快的找到問題 ( 如果實在不行就去找支付寶的人工支持,他會為你調試你的代碼,會給出一個差不多的結論,然后你再去改就會容易很多 :) ).

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


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美俄罗斯性视频| 成人午夜在线视频一区| 美女撒尿一区二区三区| 亚洲男人天堂网| 日韩精品极品视频免费观看| 亚洲性视频网站| 国产精品久久999| 亚洲成人性视频| 在线视频日韩精品| 久久精品一本久久99精品| 欧美激情网站在线观看| 欧美专区在线观看| 日韩激情av在线免费观看| 精品在线观看国产| 国产男女猛烈无遮挡91| 成人免费观看49www在线观看| 国产成人精品视频在线观看| 久久青草福利网站| 有码中文亚洲精品| 91天堂在线视频| 大荫蒂欧美视频另类xxxx| 97精品国产aⅴ7777| 亚洲人成网站777色婷婷| 久久国内精品一国内精品| 97在线视频免费| 中文字幕av一区中文字幕天堂| 国产精品一区二区三区久久久| 久久视频在线看| 精品无人区太爽高潮在线播放| 成人日韩av在线| 亚洲精品aⅴ中文字幕乱码| 中文字幕日韩在线播放| 成人h视频在线| 国产高清在线不卡| 欧美性猛交丰臀xxxxx网站| 欧美精品18videos性欧美| 欧洲亚洲女同hd| 国产裸体写真av一区二区| 久久久精品一区二区| 日韩美女写真福利在线观看| 欧美激情视频在线观看| 日韩精品在线影院| 国产精品免费久久久久影院| 亚洲天堂av女优| 日本高清+成人网在线观看| 91精品国产高清久久久久久| 91久久国产精品| 日韩黄在线观看| 国产成人精品一区二区在线| 欧美日韩在线第一页| 国产精品无av码在线观看| 久久久国产在线视频| 91亚洲国产成人久久精品网站| 成人欧美在线视频| 91av视频导航| 久久久久久com| 欧美另类极品videosbest最新版本| 久久久久久久久久久久久久久久久久av| 一区二区三区视频免费在线观看| 亚洲人成电影网站色www| 成人免费看片视频| 成人精品久久一区二区三区| 久久久久久国产三级电影| 久久久精品2019中文字幕神马| 欧美激情精品久久久久| 久久久www成人免费精品张筱雨| 国产精品电影在线观看| 亚洲韩国青草视频| 亚洲国产免费av| 亚洲第一中文字幕在线观看| 91成人在线观看国产| 精品毛片网大全| 亚洲人成电影网站色…| 91在线观看免费高清完整版在线观看| 亚洲日韩欧美视频一区| 日韩中文字幕视频在线| 国产激情视频一区| 综合136福利视频在线| 色综合久久精品亚洲国产| 性色av一区二区咪爱| 国产精品夜间视频香蕉| 38少妇精品导航| 91九色精品视频| 日韩一区二区三区在线播放| 日韩精品免费在线视频| 午夜精品一区二区三区在线视频| 国产精品视频一区国模私拍| 欧美高清视频在线| 色综合久久久888| 亚洲精品久久久久中文字幕二区| 97免费中文视频在线观看| 日韩一区二区久久久| 26uuu国产精品视频| 亚洲国产精品成人va在线观看| 91精品国产自产在线老师啪| 亚洲精品大尺度| 精品自拍视频在线观看| 宅男66日本亚洲欧美视频| 国产精品老牛影院在线观看| 亚洲成人精品视频在线观看| 午夜精品视频在线| 亚洲精品电影久久久| 亚洲国产精品va在线看黑人| 中文字幕国产精品久久| 欧美xxxx14xxxxx性爽| 日韩电影在线观看永久视频免费网站| 国语自产精品视频在线看抢先版图片| 欧美日韩国产第一页| 欧美日韩国产中文字幕| xxxx性欧美| 中文字幕日韩在线视频| 91最新在线免费观看| 久久久久久亚洲精品不卡| 国产精品劲爆视频| 国产精品视频久久久| 亚洲自拍另类欧美丝袜| 国产性猛交xxxx免费看久久| 欧美日韩亚洲精品内裤| 欧美性做爰毛片| 亚洲第一av网| 亚洲网站视频福利| 欧美性色19p| 欧美成人一区在线| 45www国产精品网站| 97视频在线观看免费| 欧美xxxx14xxxxx性爽| 国产精品视频久久久久| 在线视频日本亚洲性| 亚洲欧洲一区二区三区在线观看| 欧美精品在线免费播放| 欧美视频在线免费看| 福利视频导航一区| 狠狠久久亚洲欧美专区| 91九色综合久久| 精品夜色国产国偷在线| 狠狠做深爱婷婷久久综合一区| 国产欧美最新羞羞视频在线观看| 国产成人免费av| 国产精品国产三级国产专播精品人| 精品久久久久久久久中文字幕| 欧美黄色免费网站| 亚洲国产精品va在线观看黑人| 狠狠综合久久av一区二区小说| 亚洲级视频在线观看免费1级| 色999日韩欧美国产| 精品欧美国产一区二区三区| 亚洲最大成人在线| 国产女人18毛片水18精品| 国产精品高潮呻吟久久av无限| 青草青草久热精品视频在线网站| 久久国产精品久久久久久久久久| 欧美日韩国产中文精品字幕自在自线| 久久精品国产亚洲| 精品香蕉一区二区三区| 欧美丝袜美女中出在线| 精品日韩中文字幕| 国产日韩在线视频| 97香蕉超级碰碰久久免费软件| 国产在线999| 福利二区91精品bt7086| 国产欧美一区二区三区在线| 九九九热精品免费视频观看网站| 国产精品视频xxx| 91精品视频免费|