官方說的有夠爛,底下是模擬的方式:
請先登入 官方模擬後台,請查詢官方連結、帳密。
有分兩個部份:
一、是訂單成不成立
二、模擬付款
這兩個分開測的,不是連在一起的,一開始以為是連在一起的。
一、訂單成不成立:在後台->一般訂單查詢->全方位金流訂單(AIO)
如果你是購物車發出訂單,這裡面得到,那就是訂單有成立了,但這樣的模擬付款是不行用的。
二、模擬付款:要能用請,到後台->系統開發管理->模擬交易
利用這個功能開出來的訂單才能進行模擬交易。
所以整個開發測試,請分開測試:
一、先測訂單成不成立,成立後,就沒問題。
二、這時候主力是測 ReturnURL這支程式,模擬付款後,呼叫此程式來進行DB處理,可能成功或失敗。
模擬交易開立的訂單會有輸入MerchantTradeNO,這是自己系統的單號,那在AIO進行模擬時,會(可以)重覆這個MerchantTradeNO模擬付款,建議就直接把DB內的TradeNO改掉,這樣按下模擬付款。
按下模擬付款,兩個部份要處理:A、有真的連到ReturnURL?B、DB有把資料寫進去嗎?
A、ReturnURL 看不到有沒有呼叫到?很簡單,再程式最前面,直接呼叫DB寫入某個欄位,如果有寫入,就那至少知道有呼叫到這支程式。
B、DB寫的不完整,或是欄位有Error等等,反正就是沒寫進去,很簡單,把error_code寫到DB某欄位,這樣也知道錯誤訊息是什麼。
以上大概是歐付寶 模擬、測試方式。
PS:模擬付款成功,很多對應欄位資料是無值的
htm5 form javascript validation
http://www.sitepoint.com/html5-forms-javascript-constraint-validation-api/
1. progressive enhancement: http://jsfiddle.net/trixta/ru7...
http://jsfiddle.net/trixta/ru7jt/
http://stackoverflow.com/questions/12470622/how-can-i-check-the-validity-of-an-html5-form-that-does-not-contain-a-submit-but
form.checkValidity()
1. progressive enhancement: http://jsfiddle.net/trixta/ru7...
http://jsfiddle.net/trixta/ru7jt/
http://stackoverflow.com/questions/12470622/how-can-i-check-the-validity-of-an-html5-form-that-does-not-contain-a-submit-but
form.checkValidity()
https://html.spec.whatwg.org/multipage/forms.html#dom-form-checkvalidity
https://html.spec.whatwg.org/multipage/forms.html#statically-validate-the-constraints
=====
var form = document.getElementById("purchaser_form");
form.noValidate = true;
form.onsubmit = validateForm;
// set handler to validate the form
// onsubmit used for easier cross-browser compatibility
function validateForm(event) {
if (form.checkValidity()) {
return true;
} else {
field = form.querySelector('input:invalid, select:invalid, textarea:invalid');
field.focus();
if (field.checkValidity()) {
removeInvalid(field);
} else {
setInvalid(field);
}
return false;
}
}
function setInvalid(element) {
var message;
var parent = element.parentNode;
if (!parent.classList.contains('has-error')) {
message = document.createElement('div');
message.className = 'help-block';
message.innerHTML = element.validationMessage;
parent.classList.add('has-error');
parent.appendChild(message);
} else {
parent.querySelector('.help-block').innerHTML = element.validationMessage;
}
}
function removeInvalid(element) {
var parent = element.parentNode;
if (parent.classList.contains('has-error')) {
parent.classList.remove('has-error');
parent.removeChild(parent.querySelector('.help-block'));
}
}
form.noValidate = true;
form.onsubmit = validateForm;
// set handler to validate the form
// onsubmit used for easier cross-browser compatibility
function validateForm(event) {
if (form.checkValidity()) {
return true;
} else {
field = form.querySelector('input:invalid, select:invalid, textarea:invalid');
field.focus();
if (field.checkValidity()) {
removeInvalid(field);
} else {
setInvalid(field);
}
return false;
}
}
function setInvalid(element) {
var message;
var parent = element.parentNode;
if (!parent.classList.contains('has-error')) {
message = document.createElement('div');
message.className = 'help-block';
message.innerHTML = element.validationMessage;
parent.classList.add('has-error');
parent.appendChild(message);
} else {
parent.querySelector('.help-block').innerHTML = element.validationMessage;
}
}
function removeInvalid(element) {
var parent = element.parentNode;
if (parent.classList.contains('has-error')) {
parent.classList.remove('has-error');
parent.removeChild(parent.querySelector('.help-block'));
}
}
php allpay 歐付寶
http://www.webteach.tw/?p=591
https://github.com/allpay/AllPayAioExample/blob/master/Allpay_AIO_CreateOrder.php
https://github.com/allpay/AllPayAioExample/blob/master/Allpay_AIO_CreateOrder.php
訂閱:
文章 (Atom)