iT邦幫忙

0

金流串智付寶的問題

最近改用智付寶串金流,有依照他們提供的API文件做串接,但是不知道為甚麼還是有很多地方出現問題。

以下列出我遇到的問題:
1.付款方式有設定信用卡一次付款,但是到了支付頁面卻還是出現其他全部的付款方式
2.依照文件設定ReturnURL但是付款完畢後卻沒重導向指定網址
3.依照文件設定NotifyURL吃不到支付寶POST回來的參數
4.已經讓EmailModify等於0,表示我不想讓使用者在支付頁面可以再填寫一次Email,可是卻沒效,使用者仍然還是要再填一次

使用串接API文件:https://cwww.newebpay.com/website/Page/content/download_api#1

我的Form程式碼:

<form name="newebpay" method="post" action="https://ccore.newebpay.com/MPG/mpg_gateway" id="newebpay" class="d-none">
    <input type="hidden" name="MerchantID" value="...">
    <input type="hidden" name="RespondType" value="JSON">
    <input type="hidden" name="TimeStamp" value="1561712191">
    <input type="hidden" name="Version" value="1.5">
    <input type="hidden" name="MerchantOrderNo" value="926x58834852">
    <input type="hidden" name="Amt" value="335">
    <input type="hidden" name="ItemDesc" value="冰山紅火焰">
    <input type="hidden" name="TradeLimit" value="900">
    <input type="hidden" name="ReturnURL" value="http://yeshealth.fanswoo.com/admin/my/order/order/edit/view?id=926">
    <input type="hidden" name="NotifyURL" value="http://yeshealth.fanswoo.com/shop/order/pay/catchPay?orderId=926&type=back">
    <input type="hidden" name="Email" value="terry@fanswoo.com">
    <input type="hidden" name="EmailModify" value="0">
    <input type="hidden" name="LoginType" value="0">
    <input type="hidden" name="OrderComment" value="...">
    <input type="hidden" name="TradeInfo" value="...">
    <input type="hidden" name="TradeSha" value="...">
    <input type="hidden" name="CREDIT" value="1">
    <input type="submit" value="submit">
</form>

回傳參數接收程式碼:

public function catch($arg = []) //接收回傳參數的function
{
    $json = $_POST['JSONData'];
    $enjson = json_decode($json);

    $orderId = $arg['orderId'];
    $type = $arg['type'];

    $OrderField = OrderField::orm( $orderId );

    if( $enjson->Status == 'SUCCESS' )
    {
        $OrderField->responseStatus = $enjson->Status;
        $OrderField->responseMsg = $enjson->Message;
        $OrderField->amt = $enjson->Amt;
        $OrderField->tradeNo = $enjson->TradeNo;
        $OrderField->payTypeRespond = $enjson->PaymentType;
        $OrderField->PayTime = $enjson->PayTime;
        $OrderField->cardFourNo = $enjson->Card4No;
        $OrderField->creditAmountRespond = $enjson->Inst;
        $OrderField->stast = $enjson->InstFirst;
        $OrderField->staed = $enjson->InstEach;
        $OrderField->paycheckStatus = 1;
        $OrderField->save();
    }
    else
    {
        $OrderField->paycheckStatus = 3;
        $OrderField->save();
    }
}
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

2 個回答

0
㊣浩瀚星空㊣
iT邦大神 1 級 ‧ 2019-07-01 14:18:52
最佳解答

1.付款方式有設定信用卡一次付款,但是到了支付頁面卻還是出現其他全部的付款方式
這是需要問他們工程師。一般能判斷的就是你可能少了什麼參數沒送。導致無法判斷。

2.依照文件設定ReturnURL但是付款完畢後卻沒重導向指定網址
回傳的域名需要是https,要不然有機會會回傳不回來。只要對方是用js的方式。
一般比較常用的爛招就用框架來處理。不過已經有部份銀行跟信用卡相關的頁面有防制框架頁。
會變成框架會被強迫轉換。
當初我為了這個問題搞很久。目前是自已用一個https的頁面轉回來後再轉回去客戶的頁面暫時解決。

3.依照文件設定NotifyURL吃不到支付寶POST回來的參數
試試用get接值看看。如果是特殊數據流可以用

$post_data = file_get_contents('php://input');

以上的方式接看看。

4.已經讓EmailModify等於0,表示我不想讓使用者在支付頁面可以再填寫一次Email,可是卻沒效,使用者仍然還是要再填一次
這也需要問他們工程師。不過我碰過的很多是不能取消的。一般我會用一個mail去代替處理。
不過當然也要客戶能接受就是了。

謝囉 我知道原因了 因為我沒有把其他參數加入陣列中加密 所以他們沒取得我送過去的參數

0
小魚
iT邦大師 1 級 ‧ 2019-07-01 11:44:28

這個問題,
直接問智富寶比較快吧,
問他們有沒有範例,
比較有名的廠商應該會提供範例吧...

我有問過,他們表示因為是免費提供API,所以沒有辦法直接聯絡到他們工程師,然後他們說要幫我轉達,到目前都還沒回覆我,但是有點急 =_=

小魚 iT邦大師 1 級 ‧ 2019-07-01 12:31:57 檢舉

你可能不是公司單位吧,
他們大概覺得賺不到錢...

我要發表回答

立即登入回答