日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

omnipay支付--支付宝支付

發布時間:2023/12/9 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 omnipay支付--支付宝支付 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

  最近負責的項目事關支付寶APP支付 也踩了一些坑? ?這邊記錄下

以下代碼基于laravel框架下:

?

生成APP支付參數:

    $gateway = $this->getGateway();$request = $gateway->purchase();$request->setBizContent(['subject' => '',//產品描述'out_trade_no' => '',//本地訂單號'total_amount' => '',//支付金額 這里無需處理分位問題'product_code' => 'QUICK_MSECURITY_PAY',//銷售產品碼,商家和支付寶簽約的產品碼,為固定值 ]);//發送請求$response = $request->send();//獲取支付路徑$orderString = $response->getOrderString();/**這里獲取的參數 傳給app前端由它去調用支付*/

?

回調處理:

官方文檔是這樣寫的:

$request = $gateway->completePurchase(); $request->setParams($request);/*** @var LegacyCompletePurchaseResponse $response*/ try {$response = $request->send();if($response->isPaid()){/*** Payment is successful*/die('success'); //The response should be 'success' only}else{/*** Payment is not successful*/die('fail');} } catch (Exception $e) {/*** Payment is not successful*/die('fail'); }

然而我這樣寫后? 一直導致回調過來無法執行相應代碼? 看了下日志? 一直報函數錯誤? 說setParams參數有問題? ?無奈到處百度? 最后是在composer包里查看測試示例? 查看到這樣寫法:

$response = $gateway->completePurchase(['params' => $request])->send();

這樣改正以后 再不會報語法問題了? 回調也成功同步了?

順帶說一下,這里的isPaid方法里面的代碼是這樣的:

if (array_get($this->data, 'trade_status')) {if (array_get($this->data, 'trade_status') == 'TRADE_SUCCESS') {return true;} elseif (array_get($this->data, 'trade_status') == 'TRADE_FINISHED') {return true;} else {return false;}} elseif (array_get($this->data, 'code') == '10000') {return true;} else {return false;}

說明它已經驗證了支付狀態? 所以可以以此判斷是否支付成功.

?

查詢:

$options = ['out_trade_no' => $data['order_no']];//用本地訂單號查詢$options = ['trade_no' => $data['trade_no']];//支付寶訂單號查詢//查詢訂單 $request = $gateway->query();$request->setBizContent($options);$response = $request->send();//查詢成功獲取返回信息數據if($response->isSuccessful()) {return $response->getAlipayResponse();} else {return FALSE;}

這一段在github說明里是不存在的,是在tests\AopF2FGatewayTest類下testQuery方法才看到是這樣用的 醉了...

每次調用都是要創建相應的gateway(網關) 的,這里封裝成公用方法 創建網關的時候會指定支付方式。目前只做了App支付這一種 后續做其他的支付方式再記錄吧

轉載于:https://www.cnblogs.com/tudou1223/p/9758762.html

總結

以上是生活随笔為你收集整理的omnipay支付--支付宝支付的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。