在PB實現(xiàn)支付寶當面付的功能,需要先在支付寶進行商戶簽約,并設(shè)置相關(guān)的公鑰信息(具體參考支付寶文檔)。
然后使用對應的私鑰文件對參數(shù)進RSAWithSha1前面計算。具體代碼如下:
string ls_pubFileName,ls_priFileNamen_pbfunc_cryp lnv_crypls_priFileName ="D:/pbfunclib_pri.pem"http://私鑰文件string ls_strstring ls_appId,ls_secret,ls_biz_contentls_appId ="3434343"http://改成你的appidls_biz_content='{"out_trade_no": "2015020011","scene": "bar_code","auth_code": "'+sle_1.Text+'","subject": "當面付條碼支付","total_amount": "0.01"}'ls_str ="app_id="+ls_appIdls_str +='&biz_content='+ls_biz_contentls_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_sigStrblob utf8Rutf8R =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.pemIF 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_httplnv_http.of_clear()//清空參數(shù)string ls_datals_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_datastring ls_errorIF 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_encodestring ls_content,ls_reserved//指明不需要編碼的字符ls_reserved =""http://都需要編碼string ls_sigStrblob utf8Rutf8R =lnv_encode.of_str2utf8(ls_str)lnv_encode.of_URIEncode2(utf8R,ls_content)return ls_content
以上所述是小編給大家介紹的使用PBFunc在Powerbuilder中支付寶當面付款功能,希望對大家有所幫助,如果大家有任何疑問歡迎給我留言,小編會及時回復的。
新聞熱點
疑難解答