由于項目需要,所以需要開發支付寶支付與微信支付,支付部分采用了
yansongda/pay https://packagist.org/packages/yansongda/pay https://yansongda.gitbooks.io/pay/(文檔說明地址)第三方擴展包 , 簡單配置一下就可以使用,沒有遇到什么問題
但是由于業務需要, 需要用到提現業務,也就是支付寶支付的
alipay.fund.trans.toaccount.transfer(單筆轉賬到支付寶賬戶接口)找了很久也沒有找到很簡單的集成支付寶單筆轉賬接口的擴展包,所以沒辦法只能自己來用支付寶給的SDK進行開發
首先下載了支付寶服務端SDK PHP版 下載地址https://docs.open.alipay.com/54/103419/
然后解壓添加進項目目錄 app/Libs/Alipay Libs為自己建的目錄,用來裝第三方類庫
之后打開composer.json文件 在autoload里面的html' target='_blank'>classmap里面添加入新添加的SDK
autoload : { classmap : [ database/seeds , database/factories , app/Libs/Alipay-php-sdk psr-4 : { App// : app/ 。。。。。。
之后再執行composer dump-autoload 這樣第三方的SDK就引入成功了
然后在控制器或者自己定義的業務層中就可以直接use這個SDK了 在new 類的時候會在前面出現 / 屬于正常
然后將給出的PHP示例粘貼進自己的業務代碼中 點擊查看官方請求示例https://docs.open.alipay.com/api_28/alipay.fund.trans.toaccount.transfer#s4
注意事項:
1、粘貼到自己的業務邏輯中之后 所有new的類必須刪除自己手打引入 比如: AopClient() 、 AlipayFundTransToaccountTransferRequest() 否則會爆出class not found 等錯誤
2、按照說明配置所有參數之后,請求會爆出 “ 文件編碼:[UTF-8] 與表單提交編碼:[GBK]兩者不一致!”錯誤,只要將復制的代碼中 $aop- postCharset 值的GBK修改成為UTF-8即可
3、支付寶SDK與Laravel都自定義了encrypt與decrypt函數,所以會產生沖突,只要將支付寶SDK中的 /aop/AopClient.php /aop/AopEncrypt.php /lotusphp_runtime/Cookie/Cokkie.php 下的這兩個函數全部重新命名即可,注意所有的 包括引用函數 直接在編輯器中查找替換也可以。
然后根據自己的業務來進行修改就可以了
如果爆出 “$sign”錯誤,請檢查自己的公鑰、私鑰、AppID等是否正確,如果使用沙箱測試,請將網關修改為
$aop- gatewayUrl = https://openapi.alipaydev.com/gateway.do
最后貼上自己的代碼,歡迎指教
/* *支付寶提現接口 */ public function toTransfer($orderNo, $account, $amount, $payName, $payeeRealName, $remark) { $aop = new /AopClient(); $aop- gatewayUrl = https://openapi.alipaydev.com/gateway.do $aop- appId = config( Alipay.AppId $aop- rsaPrivateKey = config( Alipay.PriKey $aop- alipayrsaPublicKey = config( Alipay.PubKey $aop- apiVersion = 1.0 $aop- signType = RSA2 $aop- postCharset = UTF-8 $aop- format = json $request = new /AlipayFundTransToaccountTransferRequest (); $request- setBizContent( { . / out_biz_no/ :/ $orderNo/ , . / payee_type/ :/ ALIPAY_LOGONID/ , . / payee_account/ :/ $account/ , . / amount/ :/ $amount/ , . / payer_show_name/ :/ $payName/ , . / payee_real_name/ :/ $payeeRealName/ , . / remark/ :/ $remark/ . } $result = $aop- execute($request); $responseNode = str_replace( . , _ , $request- getApiMethodName()) . _response $resultCode = $result- $responseNode- code; if (!empty($resultCode) $resultCode == 10000) { echo 成功 } else { echo 失敗 }
以上就是本文的全部內容,希望對大家的學習有所幫助,更多相關內容請關注PHP !
相關推薦:
Laravel 學習的基礎知識
php bug 調試助手 debug_print_backtrace()的介紹
以上就是Laravel 開發支付寶支付與提現轉賬的方法的詳細內容,PHP教程
鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。
新聞熱點
疑難解答