PB實現微信、支付寶、新大陸星POS掃碼支付接口

PB調用C#動態庫實現新大陸星POS掃碼支付接口。

實例下載地址:https://download.csdn.net/download/weixin_41317666/12418679

 

string ls_url
string ls_data
string ls_dd
string ls_zfqd
//【交易類型--傳入平臺用】
if rb_1.checked = true then
    ls_zfqd = "WXPAY"
end if
if rb_2.checked = true then
    ls_zfqd = "ALIPAY"
end if
if rb_3.checked = true then
    ls_zfqd = "YLPAY"
end if
//【生成請求地址===從配置參數中維護請求地址的一部分】
ls_url = gs_pos_requesturl + "sdkBarcodePay.json"
//【判斷輸入金額是否符合要求】
if dec(em_1.text) <= 0.00 then
    messagebox("系統提示【MYSOFT】","所輸金額不正確!~r~n請重新輸入!")
    em_1.setfocus()
    return
end if
//【判斷商戶訂單號是否爲空】
if sle_4.text = "" then
    messagebox("系統提示【MYSOFT】","訂單號不能爲空!")
    return
end if
//【判斷是否掃描付款碼】
if sle_code.text = "" then
    messagebox("系統提示【MYSOFT】","付款碼不能爲空!")
    sle_code.setfocus()
    return
end if
//【判斷是否掃描付款碼】
if len(sle_code.text) = 0 then
    messagebox("系統提示【MYSOFT】","請掃描服務對象付款碼... ...")
    sle_code.setfocus()
    return -1
end if
//【判斷訂單號是否爲空】
if len(sle_4.text) = 0 then
    messagebox("系統提示【MYSOFT】","訂單號不能爲空!")
    sle_4.setfocus()
    return -1
end if
 //【初始化僞隨機數發生器,讓應用程序每次運用不同的僞隨機數序列。】
randomize(0)
//【清除is_keys[] is_value[]】
inv_wxpay.of_clear()
//====================生成公共請求參數==============================================================
//【操作系統:3-直連】
inv_wxpay.of_add_pos("opSys","3")
//【字符集:00-GBK】
inv_wxpay.of_add_pos("characterSet","00")
//【機構號,從配置參數維護】
inv_wxpay.of_add_pos("orgNo",gs_pos_orgno)
//【商戶號,從配置參數維護】
inv_wxpay.of_add_pos("mercId",gs_pos_mercid)
//【設備號,從配置參數維護】
inv_wxpay.of_add_pos("trmNo",gs_pos_trmno)
//【商戶單號,不能重複,若重複則返回:數據庫錯誤】
inv_wxpay.of_add_pos("tradeNo",sle_4.text)
//【設備端交易時間:yyyymmddhhmmss】
inv_wxpay.of_add_pos("txnTime",string(now(),"yyyymmddhhmmss"))
//【簽名方式:MD5】
inv_wxpay.of_add_pos("signType","MD5")
//【版本號:默認V1.0.0】
inv_wxpay.of_add_pos("version","V1.0.0")
//==================生成商戶主掃請求參數============================================================
//【實付金額:分爲單位】
inv_wxpay.of_add_pos("amount",string(long(dec(em_1.text) * 100)))
//【訂單總金額:分爲單位】
inv_wxpay.of_add_pos("total_amount",string(long(dec(em_1.text) * 100)))
//【掃碼支付授權碼】
inv_wxpay.of_add_pos("authCode",sle_code.text)
//【支付渠道:WXPAY,ALIPAY,YLPAY】
inv_wxpay.of_add_pos("payChannel",ls_zfqd)
//【請求參數數據簽名,並生成JSON格式數據】
mle_1.text = inv_wxpay.of_get_json()
ls_data = trim(mle_1.text)
mle_2.text = ""
//【POST數據到平臺,並接收返回數據:JSON格式】
mle_2.text = inv_wxpay.of_post_pos(ls_url,ls_data)
//【返回JSON數據轉換爲XML數據,用於交易解析】
mle_2.text = inv_wxpay.of_json_to_xml(mle_2.text)
//===================================以下判斷訂單交易情況=============================================
if gf_xml_resolve_pos(mle_2.text,"returnCode") = "000000" and gf_xml_resolve_pos(mle_2.text,"result") = "S" then
   
    if dw_2.rowcount() = 1 then
        //【請求數據XML】
        dw_2.object.in_xml[1] = mle_1.text
        //【交易金額】
        dw_2.object.amount[1] = dec(em_1.text)
        //【交易時間】
        dw_2.object.zf_date_wx[1] = gf_xml_resolve_pos(mle_2.text,"sysTime")
        //【訂單狀態--保存本地數據庫】
        dw_2.object.trade_state[1] = "支付成功"
        //【支付渠道訂單號,可用於退款】
        dw_2.object.dd_code[1] = gf_xml_resolve_pos(mle_2.text,"orderNo")
        //【付款碼】
        dw_2.object.fk_code[1] = sle_code.text
        dw_2.object.zffs[1] = 1
      //【更新交易到數據庫】
        if dw_2.update() = 1 then
            commit using sqlca;
            dw_2.retrieve(trim(sle_4.text))
        else
            rollback using sqlca;
        end if

    end if
   //【執行查單操作】
    cb_21.triggerevent(clicked!)
    //【刷新本地數據】
    cb_7.triggerevent(clicked!)
    return
end if
//========================================以下判斷交易執行情況==================================================
if gf_xml_resolve_pos(mle_2.text,"returnCode") = "000000" and gf_xml_resolve_pos(mle_2.text,"result") = "A" then
    messagebox("支付提示【MYSOFT】","狀態:【A-等待授權】~n~n【特別注意】:請等候服務對象輸入密碼確認成功後點[確定]...~n~n還可通過【查詢訂單狀態】檢查訂單支付情況!")

    if dw_2.rowcount() = 1 then
        dw_2.object.in_xml[1] = mle_1.text
        dw_2.object.amount[1] = dec(em_1.text)
        dw_2.object.dd_code[1] = ""
        dw_2.object.fk_code[1] = sle_code.text
        dw_2.object.zffs[1] = 1
        dw_2.object.trade_state[1] = "訂單未支付"

        if dw_2.update() = 1 then
            commit using sqlca;
            dw_2.retrieve(trim(sle_4.text))
        else
            rollback using sqlca;
        end if

    end if

    cb_21.triggerevent(clicked!)
    cb_7.triggerevent(clicked!)
    return
end if

if gf_xml_resolve_pos(mle_2.text,"returnCode") = "000000" and gf_xml_resolve_pos(mle_2.text,"result") = "A" then
    messagebox("支付提示【MYSOFT】","訂單等待授權~n~n支付單號:【" + gf_xml_resolve_pos(mle_2.text,"orderNo") + "】~n~n支付狀態:【" + gf_xml_resolve_pos(mle_2.text,"result") + "】~n~nA-等待授權,S-交易成功,F-交易失敗,Z-交易未知,D-訂單已撤銷!~n~n請重新支付!~n~n系統返回message:" + inv_wxpay.of_utf8togb3212(gf_xml_resolve_pos(mle_2.text,"message")))
    return
end if

if gf_xml_resolve_pos(mle_2.text,"returnCode") = "000000" and gf_xml_resolve_pos(mle_2.text,"result") = "F" then
    messagebox("支付提示【MYSOFT】","訂單交易失敗~n~n支付單號:【" + gf_xml_resolve_pos(mle_2.text,"orderNo") + "】~n~n支付狀態:【" + gf_xml_resolve_pos(mle_2.text,"result") + "】~n~nA-等待授權,S-交易成功,F-交易失敗,Z-交易未知,D-訂單已撤銷!~n~n請重新支付!~n~n系統返回message:" + inv_wxpay.of_utf8togb3212(gf_xml_resolve_pos(mle_2.text,"message")))
    return
end if

if gf_xml_resolve_pos(mle_1.text,"returnCode") = "000000" and gf_xml_resolve_pos(mle_1.text,"result") = "D" then
    messagebox("支付提示【MYSOFT】","訂單已撤銷~n~n支付單號:【" + gf_xml_resolve_pos(mle_2.text,"orderNo") + "】~n~n支付狀態:【" + gf_xml_resolve_pos(mle_2.text,"result") + "】~n~nA-等待授權,S-交易成功,F-交易失敗,Z-交易未知,D-訂單已撤銷!~n~n請重新支付!~n~n系統返回message:" + inv_wxpay.of_utf8togb3212(gf_xml_resolve_pos(mle_2.text,"message")))
    return
end if

if gf_xml_resolve_pos(mle_1.text,"returnCode") = "000000" and gf_xml_resolve_pos(mle_1.text,"result") = "Z" then
    messagebox("支付提示【MYSOFT】","訂單交易未知~n~n支付單號:【" + gf_xml_resolve_pos(mle_2.text,"orderNo") + "】~n~n支付狀態:【" + gf_xml_resolve_pos(mle_2.text,"result") + "】~n~nA-等待授權,S-交易成功,F-交易失敗,Z-交易未知,D-訂單已撤銷!~n~n請重新支付!~n~n系統返回message:" + inv_wxpay.of_utf8togb3212(gf_xml_resolve_pos(mle_2.text,"message")))
    return
end if

if gf_xml_resolve_pos(mle_2.text,"returnCode") <> "000000" and gf_xml_resolve_pos(mle_2.text,"result") <> "S" then
    messagebox("系統提示【MYSOFT】","訂單未成功~n~n支付狀態:【" + gf_xml_resolve_pos(mle_2.text,"result") + "】~n~n A-等待授權,S-交易成功,F-交易失敗,Z-交易未知,D-訂單已撤銷!~n~n系統返回message:" + inv_wxpay.of_utf8togb3212(gf_xml_resolve_pos(mle_2.text,"message")))
    return
end if

if gf_xml_resolve_pos(mle_2.text,"returnCode") <> "000000" then
    messagebox("支付提示【MYSOFT】","支付不成功!~n~n~n~n請重新生成訂單並掃碼... ...~n~n系統返回message:" + inv_wxpay.of_utf8togb3212(gf_xml_resolve_pos(mle_2.text,"message")))
    sle_code.text = ""
    sle_code.setfocus()
    return
end if

return

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章