allpay,歐付寶是台灣知名的第三方支付公司,擁有豐富的支付模式(支援和支付寶、財付通),只需要一次對接,各種支付模式均可使用。
介面編寫sdk:
官方提供了比較完整的sdk,裡面有豐富的**,這裡只講需要注意的地方:
1.歐付寶提供若干支付模式,可以再介面中指定(不給使用者選擇的機會);也可以在介面中設定all,等到付款的時候讓使用者選擇
2.確定支付模式後,便可以生成訂單,然後等待支付
3.支付結果的確認是server靜默方式通知的,非url跳轉的方式,這點類似paypal的classic模式
4.提供沙箱模式使用者名稱stagetest,密碼test1234,在沙箱中可以任意下訂單,模擬支付等等
5.正式模式的後台同樣支援模擬付款的方式
6.支付結果接收service,注意需要驗證**,也就是checkmacvalue,驗證方法後面給出
7.如果介面中不指定支付模式,opayment.send.choosepayment = paymentmethod.all; 即使客戶不選擇支付寶支付,那麼也需要將支付寶的支付選項填入
opayment.sendextend.phoneno = "";opayment.sendextend.email = ""
;opayment.sendextend.username = "";
因為這三項是必填字段,注意是sendextend。
8.returnurl 為server 端的回應,歐付寶server會直接將付款結果送到您指定的returnurl
orderresulturl 則為 client 端的回應,我們會將使用者的畫面轉導到您指定的orderresulturl
clientbackurl 主要的功能,是在交易完成的頁面中,若廠商端有設定網址,則在該頁面上會出現「返回商店」的按鈕,當消費者點選後,會導到所設定的網址。
9.merchanttradeno測試的時候如果兩筆都是一樣的,會導致第二次建立訂單失敗,這個要注意,每次最好用隨機數
下面是支付介面,傳入訂單編號,通過呼叫allpay介面,會預設跳轉到allpay去支付
publicactionresult paymentbyallpay(guid billcode)
com_bill bill =list.first();
ilist
billsub = wmsfactory.com_billsub.findbycondition("
billcode='
" + billcode.tostring() + "'"
);
/*基本引數
*/string baseuri = request.url.scheme + "
://" + request.url.authority + "
/order/";
//以後臺服務通知的形式傳送到該url
opayment.send.returnurl = baseuri + "
allpayresult/
"+billcode.tostring().replace("
-","
_");//
完成付款,注意這裡有嚴格的url限制,不能傳遞-
opayment.send.clientbackurl =baseuri;
opayment.send.merchanttradeno = bill.id.tostring()+datetime.parse(bill.createtime).tostring("
yyyymmddhhmmss
") + new random().next(0, 9999
).tostring();
opayment.send.merchanttradedate = datetime.now;
opayment.send.totalamount = (int)(bill.totalamount + bill.shippingfee -bill.vouchermoney);
opayment.send.tradedesc = "
物流費:
" +bill.shippingfee.tostring();
opayment.send.choosepayment =paymentmethod.all;
opayment.send.choosesubpayment =paymentmethoditem.none;
opayment.send.needextrapaidinfo =extrapaymentinfo.no;
opayment.send.devicesource =devicetype.pc;
//例(排除支付寶與財富通): alipay#tenpay
opayment.send.ignorepayment = ""
;
//加入選購商品資料。
foreach (com_billsub sb in
billsub)
//物流費用
allpay.payment.integration.item shippingfeeitm = new
allpay.payment.integration.item();
shippingfeeitm.name = "
shipping";
shippingfeeitm.currency = "
新台幣"
; shippingfeeitm.price =bill.shippingfee;
shippingfeeitm.quantity = 1
; opayment.send.items.add(shippingfeeitm);
+= "1";
+= "shipping";
+= bill.shippingfee.tostring();
//獲取物流資訊
com_address address =wmsfactory.com_address.findbyid(bill.shippingid.tostring());
opayment.sendextend.phoneno =address.telphone;
opayment.sendextend.email =member.email;
opayment.sendextend.username = address.lastname +address.firstname;
/*產生訂單
*/enerrors.addrange(opayment.checkout());
/*產生產生訂單 html code 的方法
*/enerrors.addrange(opayment.checkoutstring(
refszhtml));
session.add(billcode.tostring(), opayment.send.merchanttradeno);}}
catch
(exception ex)
finally
//扣庫存
datatable dt = wmsfactory.com_billsub.updatestore(billcode, 2
);
if (dt != null && dt.rows.count > 0 && dt.rows[0][0].tostring() != "0"
) );
}viewbag.allpayredirect =szhtml;
return
view();
}
支付確認介面實現:
publicvoid allpayresult(string
id)
string scheckmacvalue =sbuilder.tostring();
log.debug(
"mine:
" + scheckmacvalue + "
;param:
" +szcheckmacvalue);
if (szrtncode == "
1" && szsimulatepaid == "
0" && scheckmacvalue ==szcheckmacvalue)}}
catch
(exception ex)
finally
", string.join("
\\r\\n
", enerrors)));
this
.response.flush();
this
.response.end();
}}
AllPay 歐付寶 支付介面整合
allpay,歐付寶是台灣知名的第三方支付公司,擁有豐富的支付模式 支援和支付寶 財付通 只需要一次對接,各種支付模式均可使用。介面編寫sdk 官方提供了比較完整的sdk,裡面有豐富的 這裡只講需要注意的地方 1.歐付寶提供若干支付模式,可以再介面中指定 不給使用者選擇的機會 也可以在介面中設定al...
二 支付寶即時到帳介面和TP框架整合
將核心方法和加密方法放在thinkphp框架裡 home common function.php中即可,方便呼叫 將兩個類放在thinkphp專案裡的 thinkphp library think下,並修改名字 alipaynotify.class.php alipaysubmit.class.ph...
整合 支付寶支付
第一步,看官方文件 戳這裡 第二步,就是上圖,比如要匯入哪些內容.其中,總結一點自己一直的錯誤資訊 查了很多資料,沒管用,最後終於找到良方。解決辦法 把openssl這個檔案匯入到了這個工程目錄下 專案名稱 公共類 工具 第三方 支付寶sdk openssl 中間隔了三個資料夾,那麼在header ...