支付寶退款 (新版)
阿新 • • 發佈:2017-12-04
浪費 ret conf fun open pre 測試 開始 name
實現支付寶退款
http://www.upwqy.com/details/85.html
想要實現退款,前提是有支付的訂單。所以這裏也列舉出來了支付
1 支付寶配置
2 支付寶支付
3 支付寶退款
1 支付寶配置
可以查看 支付寶(新版)配置
2 支付
文章待更新。。
3 退款
官方文檔 https://docs.open.alipay.com/api_1/alipay.trade.refund
把配置弄好 基本是直接成功了。
需要註意的是 在文檔上說的 商戶的操作編號還有下面的幾個參數 是可選的,但其實是不能刪除的
我開始是直接把 operator_id store_id terminal_id 參數刪除掉了。測試的結果一直是返回參數錯誤,請教了一個QQ談論群的人 才知道,雖然這裏說的是可選的 但是不能夠直接刪除掉,還是需要在參數中展現。。坑死我了快,白白浪費了兩天的時間。。
這裏非常感謝 幫助我解決這個坑的朋友,,真的是太感謝,要不然還不知道要弄多久呢。
其中 trade_no 支付寶交易號可以 去掉。
/** * 支付寶 退款 * @user 一秋 * @param $out_trade_no * @param $refund_amount * @return bool * @throws Exception */ public static function AliPayPlaceRefund($out_trade_no,$refund_amount){$refund_order = generateOrderId(9); $aop = new \AopClient (); $aop->gatewayUrl = config(‘alipay.gatewayUrl‘); $aop->appId = config(‘alipay.appId‘); $aop->rsaPrivateKey = config(‘alipay.rsaPrivateKey‘); $aop->alipayrsaPublicKey = config(‘alipay.alipayrsaPublicKey‘);$aop->apiVersion = ‘1.0‘; $aop->signType = ‘RSA2‘; $aop->postCharset=‘utf-8‘; $aop->format=‘json‘; $request = new \AlipayTradeRefundRequest(); $request->setBizContent("{" . // "\"trade_no\":\"2017112821001004030523090753\"," . "\"out_trade_no\":\"$out_trade_no\"," . "\"refund_amount\":$refund_amount," . "\"refund_reason\":\"正常退款\"," . "\"out_request_no\":\"$refund_order\"," . "\"operator_id\":\"OP001\"," . "\"store_id\":\"NJ_S_001\"," . "\"terminal_id\":\"NJ_T_001\"" . " }"); $result = $aop->execute ( $request ); $responseNode = str_replace(".", "_", $request->getApiMethodName()) . "_response"; $resultCode = $result->$responseNode->code; if(!empty($resultCode)&&$resultCode == 10000){ // echo "成功"; return true; } else { // echo "失敗"; throw new Exception($result->$responseNode->sub_msg); } }
支付寶退款 (新版)