AllPay 歐付寶 支付介面整合

2022-02-03 11:43:46 字數 4387 閱讀 7298

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去支付

public

actionresult 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();

}

支付確認介面實現:

public

void 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 ...