Laravel串接緣界的問題

sam
請問我在付款完成通知回傳的網址要更新訂單的付款狀態,但一直都無法更新成功,也不知是ReturnURL的這支程式沒有執行或是沒有接收到訂單編號,所以沒有更新訂單的狀態

// 送出訂單的程式碼
        try{	           

          include(app_path().'/ecpay/ECPay_AllInOne.php');          
          
          $obj=new ECPay();        
          
          // 測試環境
          $obj->ServiceURL  = 'https://payment-stage.ecpay.com.tw/Cashier/AioCheckOut/V5';        
          $obj->HashKey     = '5294y06JbISpM5x9';
          $obj->HashIV      = 'v77hoKGq4kWxNNIS';
          $obj->MerchantID  = '2000132';                    
          $obj->EncryptType = '1';  //CheckMacValue加密類型,請固定填入1,使用SHA256加密

          $obj->Send['ReturnURL']=$dname.'/onepageshop/callback';                   
          //$obj->Send['PeriodReturnURL']=$dname."/onepageshop/callback" ;    //付款完成通知回傳的網址
          //$obj->Send['ClientBackURL'] =$dname."/onepageshop/paysuccess";    //付款完成通知回傳的網址

          $obj->Send['MerchantTradeNo']=$ordernumber;
          $obj->Send['MerchantTradeDate']=date('Y/m/d H:i:s');
          $obj->Send['TotalAmount']=$price;
          $obj->Send['TradeDesc']='ecpay';
          $obj->Send['CustomField1']=$comment;          
          $obj->Send['NeedExtraPaidInfo']='Y';          
          $obj->Send['ChoosePayment']='Credit';
          $obj->Send['EncryptType']=1;          
          // $obj->Send['OrderResultURL']=$dname.'/onepageshop/chuikanghandle';          
          $obj->Send['ClientBackURL']=$dname.'/onepageshop';     // 新增返回商店的按鈕

          // 訂單的商品資料
          for($i=0;$i<count($goods)-1;$i++){
            array_push($obj->Send['Items'], array(
              'Name'=>$goods[$i],
              'Price'=>$goods_price[$i],
              'Currency'=>'元',
              'Quantity'=>(int)$amount[$i],
              'URL'=>''
            ));
          }
          Session::forget('buy_array');
          $obj->CheckOut();
        }catch(Exception $e){
          echo $e->getMessage();
        }
      }


// callback的程式碼
      public function callback(Request $request){                

        $ordernumber=$_POST['MerchantTradeNo'];        
        $transstate=$_POST['RtnCode'];
        if($transstate == 1){
          DB::update('update oneshop_orderlist set status="1" where ordernumber="'.$ordernumber.'"');   // 將訂單更新為已付款          
        }

      }

缺氧的羊:窒息
綠界的廠商專區(後台),
可以模擬繳費成功, 人工觸發通知

你可以一直觸發, 一直觸發, 一直觸發, 一直觸發
然後看看平台上的訊息是什麼
浩瀚星空
我只想問,你真的是用 laravel 開發的?

$dname 是你的網址沒錯吧。不會是localhost這東西吧。
是的話會很想k你。

api連接善用一下postman。
並不一定一直需要對方送資料過來的。
等你自已測試ok後,再去要求對方。

而且我記得綠界是有測試區才對的。連信用卡都可以測的。
sam
認真用laravel開發的,只是剛入門不久還在摸索中,$dname是有實際上線的網址,postman這個關鍵字,好像在測試時會方便很多,就不需要一直填信用卡資料,收簡訊
迷路
我在串API碰到問題的時候會用笨方法測試
把接收到的值輸出到一個文字檔儲存起來
然後去看看內容是否符合預期
另外,綠界在接收成功的時候應該要回傳「1|OK」
測試後台觸發時就可以知道有沒有順利接收
還有,你都不驗證一下就直接修改狀態嗎?
綠界有驗證機制的吧
最後,我上次綠界API收不到資料,就是網址301導致的......
回到頂部