最近改用智付寶串金流,有依照他們提供的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();
}
}
1.付款方式有設定信用卡一次付款,但是到了支付頁面卻還是出現其他全部的付款方式
這是需要問他們工程師。一般能判斷的就是你可能少了什麼參數沒送。導致無法判斷。
2.依照文件設定ReturnURL但是付款完畢後卻沒重導向指定網址
回傳的域名需要是https,要不然有機會會回傳不回來。只要對方是用js的方式。
一般比較常用的爛招就用框架來處理。不過已經有部份銀行跟信用卡相關的頁面有防制框架頁。
會變成框架會被強迫轉換。
當初我為了這個問題搞很久。目前是自已用一個https的頁面轉回來後再轉回去客戶的頁面暫時解決。
3.依照文件設定NotifyURL吃不到支付寶POST回來的參數
試試用get接值看看。如果是特殊數據流可以用
$post_data = file_get_contents('php://input');
以上的方式接看看。
4.已經讓EmailModify等於0,表示我不想讓使用者在支付頁面可以再填寫一次Email,可是卻沒效,使用者仍然還是要再填一次
這也需要問他們工程師。不過我碰過的很多是不能取消的。一般我會用一個mail去代替處理。
不過當然也要客戶能接受就是了。
這個問題,
直接問智富寶比較快吧,
問他們有沒有範例,
比較有名的廠商應該會提供範例吧...