使用PBFunc在Powerbuilder中支付宝当面付款功能_javascript技巧

在PB实现支付宝当面付的功能,需要先在支付宝进行商户签约,并设置相关的公钥信息(具体参考支付宝文档)。

然后使用对应的私钥文件对参数进RSAWithSha1前面计算。具体代码如下:

string ls_pubFileName,ls_priFileName
n_pbfunc_cryp lnv_cryp
ls_priFileName ="D:\pbfunclib_pri.pem"//私钥文件
string ls_str
string ls_appId,ls_secret,ls_biz_content
ls_appId ="3434343"//改成你的appid
ls_biz_content='{"out_trade_no": "2015020011","scene": "bar_code","auth_code": "'+sle_1.Text+'","subject": "当面付条码支付","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 +='&timestamp=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
/*验证签名可以不需要调用*/
ls_pubFileName ="D:\pbfunclib_pub.pem"//在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()//清空参数
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 += "&timestamp="+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("提示","执行失败")
End IF

  其中wf_alipay_urlencode函数代码如下:

//ls_str为参数
n_pbfunc_encode lnv_encode
string ls_content,ls_reserved//指明不需要编码的字符
ls_reserved =""//都需要编码
string ls_sigStr
blob utf8R
utf8R =lnv_encode.of_str2utf8(ls_str)
lnv_encode.of_URIEncode2(utf8R,ls_content)
return ls_content

以上所述是小编给大家介绍的使用PBFunc在Powerbuilder中支付宝当面付款功能,希望对大家有所帮助,如果大家有任何疑问欢迎给我留言,小编会及时回复的。

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索powerbuilder
支付宝当面付
powerbuilder12与pb9、powerbuilder pborca、pbfunc.dll、pbfunc.dll下载、pbfunc,以便于您获取更多的相关知识。

时间: 2024-09-24 17:12:42

使用PBFunc在Powerbuilder中支付宝当面付款功能_javascript技巧的相关文章

不错的asp中显示新闻的功能_javascript技巧

复制代码 代码如下: <div style="display:none "> <form name="sxdm" method="post"> <input type="hidden" name="newsclassid"> <input type="hidden" name="newsid"> </form>

javascript中不提供sleep功能如何实现这个功能_javascript技巧

javascript中不提供sleep功能,而我们时长会用到这个功能. 有一种思路是跑一段循环体,让程序空耗CPU的时间来实现延时.这有一个不足,不同的机器CPU的执行速度是不一样的,这很容易导致的慢的机器会SLEEP很久. 笔者从别的论坛看到一种机智的解决方法,在不同的机器上的执行速度是一致的.在此与大家共享. 复制代码 代码如下: function sleep(n) { var start=new Date().getTime(); while(true) if(new Date().get

Win7系统中的控制面板三大功能应用技巧介绍

控制面板是Windows图形用户界面一部分,允许用户查看并操作基本的系统设置和控制,也是大家接触较多的系统界面.在win7操作系统中,微软对控制面板有着较多的改进设计,很多刚开始使用win7的用户多少有点生疏.今天,我们来介绍一下win7控制面板方面的使用技巧. 在win7系统中,控制面板一般以类别的形式来显示功能菜单,分为系统和安全.用户帐户和家庭安全.网络和Internet.外观和个性化.硬件和声音.程序等类别,在每个类别下显示一些常用功能. 一.巧妙利用查看方式 对于习惯XP系统的用户,刚

Excel2010中按照颜色筛选功能使用技巧

  操作方法 1.原始数据表如图所示,其中分别在一些单元格中标注了黄色和红色. 2.单击"产品名称"列上的筛选按钮,选择"按颜色筛选",并挑选颜色,例如"黄色". 3.最终结果如图所示.

快速恢复Win8中win+x快捷键功能的技巧

  Win+X快捷键的功能: 在桌面左下角弹出一个菜单里面包含常用到的系统工具:程序与功能.网络连接.电源选项.事件查看器.系统.设备管理器.磁盘管理器.计算机管理.命令提示符.任务管理器.控制面板.Windows资源管理器.搜索.运行.桌面- Win+X快捷键失效的原因: 因为用了非完美支持Win8的优化软件导致的,注册表关键值被删掉了. 解决Win8中Win+X快捷键失效方法: 快捷键Win+R – 输入regedit – HKEY_CLASSES_ROOT – lnkfile - 右健 –

JavaScript中setTimeout的那些事儿_javascript技巧

一.setTimeout那些事儿之单线程  一直以来,大家都在说Javascript是单线程,浏览器无论在什么时候,都且只有一个线程在运行JavaScript程序.  但是,不知道大家有疑问没--就是我们在编程过程中的setTimeout(类似的还有setInterval.Ajax),不是异步执行的吗?!!  例如: <!DOCTYPE html> <head> <title>setTimeout</title> <meta http-equiv=&q

JS中数组重排序方法_javascript技巧

1.数组中已存在两个可直接用来重排序的方法:reverse()和sort(). reverse()和sort()方法的返回值是经过排序后的数组.reverse()方法会反转数组项的顺序: var values=[1,2,3,4,5]; values.reverse(); alert(values); //5,4,3,2,1 在默认情况下,sort()方法按升序排列数组,sort()方法会调用每个数组项的toString()转型方法,然后比较得到字符串,确定如何排序.即使数组中的每一项都是数值,s

使用JavaScript获取Request中参数的值方法_javascript技巧

假设现在有一个URL,如下. http://www.jb51.net 如何通过JS访问到id和name里面的值呢,实现我们来分析一下思路. 先获取当前页面的URL,通过window.location.href. 提取该URL?后面的部分,通过slice()方法. 把获取到的Request对象分割成字符串数组,通过split() 方法. 接下来看代码. function getUrlVars() { var vars = [], hash; var hashes = window.location

javascript Discuz代码中的msn聊天小功能_javascript技巧

javascript中添加以下2个函数 function msnoperate(action, msn) {    var actionArray = new Array();    actionArray = {    'add' : 'http://go.discuz.com/?app=msn&linkid=5&msn=' + msn,    'chat' : 'http://go.discuz.com/?app=msn&linkid=6&msn=' + msn