使用PBFunc在Powerbuilder中支付寶當(dāng)面付款功能
在PB實現(xiàn)支付寶當(dāng)面付的功能,需要先在支付寶進行商戶簽約,并設(shè)置相關(guān)的公鑰信息(具體參考支付寶文檔)。
然后使用對應(yīng)的私鑰文件對參數(shù)進RSAWithSha1前面計算。具體代碼如下:
string ls_pubFileName,ls_priFileName n_pbfunc_cryp lnv_cryp ls_priFileName ="D:\pbfunclib_pri.pem"http://私鑰文件 string ls_str string ls_appId,ls_secret,ls_biz_content ls_appId ="3434343"http://改成你的appid ls_biz_content='{"out_trade_no": "2015020011","scene": "bar_code","auth_code": "'+sle_1.Text+'","subject": "當(dāng)面付條碼支付","total_amount": "0.01"}' ls_str ="app_id="+ls_appId ls_str +='&biz_content='+ls_biz_content ls_str +='&charset=utf-8' ls_str +='&method=alipay.trade.pay' ls_str +='&sign_type=RSA' ls_str +='×tamp=2016-05-08 11:27:15' ls_str +='&version=1.0' string ls_sigStr blob utf8R utf8R =lnv_cryp.of_str2utf8(ls_str) if lnv_cryp.of_sha1withRsa(ls_priFileName,utf8R,lnv_cryp.HASH_RESULT_DEFAULT,ls_sigStr) then MessageBox("提示","簽名成功:"+ls_sigStr) Else MessageBox("提示","簽名失敗") end if /*驗證簽名可以不需要調(diào)用*/ ls_pubFileName ="D:\pbfunclib_pub.pem"http://在D盤生成公鑰文件pbfunclib_pub.pem IF Not lnv_cryp.of_RSAVerifyFileSHA1(ls_pubFileName,utf8R,ls_sigStr,lnv_cryp.HASH_RESULT_DEFAULT) Then MessageBox("提示","驗證簽名失敗") else messagebox("","驗證簽名成功") End IF //ls_str +='' n_pbfunc_http lnv_http lnv_http.of_clear()//清空參數(shù) string ls_data ls_data = "app_id="+wf_alipay_urlencode(ls_appId) ls_data += "&biz_content="+wf_alipay_urlencode(ls_biz_content) ls_data += "&charset="+wf_alipay_urlencode("utf-8") ls_data += "&method="+wf_alipay_urlencode("alipay.trade.pay") ls_data += "&sign_type="+wf_alipay_urlencode("RSA") ls_data += "&sign="+wf_alipay_urlencode(ls_sigStr) ls_data += "×tamp="+wf_alipay_urlencode("2016-05-08 11:27:15") ls_data += "&version="+wf_alipay_urlencode("1.0") lnv_http.of_set_URL("https://openapi.alipay.com/gateway.do?"+ls_data) Blob lblb_data string ls_error IF lnv_http.of_post(lblb_data,ls_error) Then string gbkData gbkData = lnv_cryp.of_utf8ToGbk(lblb_data)//由于返回來的是utf-8編碼,直接顯示會亂碼 MessageBox("提示",gbkData+" "+string(lblb_data)) Else MessageBox("提示","執(zhí)行失敗") End IF
其中wf_alipay_urlencode函數(shù)代碼如下:
//ls_str為參數(shù) n_pbfunc_encode lnv_encode string ls_content,ls_reserved//指明不需要編碼的字符 ls_reserved =""http://都需要編碼 string ls_sigStr blob utf8R utf8R =lnv_encode.of_str2utf8(ls_str) lnv_encode.of_URIEncode2(utf8R,ls_content) return ls_content
以上所述是小編給大家介紹的使用PBFunc在Powerbuilder中支付寶當(dāng)面付款功能,希望對大家有所幫助,如果大家有任何疑問歡迎給我留言,小編會及時回復(fù)的。
相關(guān)文章
javascript獲取網(wǎng)頁中指定節(jié)點的父節(jié)點、子節(jié)點的方法小結(jié)
如何獲取要更新的這些元素呢?用JavaScript獲取這些節(jié)點的方法有很多種,下面是總結(jié)的一些方法,感興趣的朋友可以參考下哈2013-04-04JavaScript程序員應(yīng)該知道的45個實用技巧
在這篇文章中,我將分享一組JavaScript的技巧、竅門和最佳實踐,這些都是JavaScript程序員應(yīng)該知曉的,不管他們是使用在瀏覽器/引擎上,還是服務(wù)器端(SSJS——Service Side JavaScript)JavaScript解釋器上2014-03-03javascript中String對象的slice()方法分析
這篇文章主要介紹了javascript中String對象的slice()方法,以實例形式分析了slice()方法的定義、參數(shù)與具體用法,具有一定的參考借鑒價值,需要的朋友可以參考下2014-12-12