利用PBFunc在Powerbuilder中支付宝当面付功能
在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 +='×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 /*验证签名可以不需要调用*/
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 += "×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("提示","执行失败")
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
demo代码详见w_rsa窗体的SHA1WithRSA按钮下载地址:
http://download.csdn.net/detail/my_aa/9644084
利用PBFunc在Powerbuilder中支付宝当面付功能的更多相关文章
- 利用PBFunc在Powerbuilder中解析Json对象
		利用PBFunc工具在Powerbuilder解析json,只需要调用getattribute方法来获取 解析unicode格式的json: n_pbfunc_json lnv_json lnv_js ... 
- 利用PBfunc在Powerbuilder中使用https获取微信的AccessToken
		在前篇中讲解了使用PBFunc在Powerbuilder自己进行http的GET和POST操作. 本篇简单用代码演示下https的微信AccessToken的获取: n_pbfunc_http lnv ... 
- 利用PBFunc在Powerbuilder中进行图片格式转换
		利用PBFunc的n_pbfunc_image对象可以方便的进行图片格式的转换与大小转换 支持相互转换的格式有以下几种: FORMAT_BMP //bmp格式FORMAT_GIF //gif格式FO ... 
- 支付宝当面付功能demo运行解读
		下载java版本的sdk的demo: 然后拷入idea中: 准备工作: (1)验签工具下载:蚂蚁金服上面下载: https://openclub.alipay.com/read.php?tid=955 ... 
- 利用PBFunc在Powerbuilder中进行FTP操作
		PBFunc.dll包含了FTP的操作,使用FTP时主要需要以下步骤: 1.调用of_Login函数登录Ftp服务器 2.调用FTP的各种方法 3.Ftp操作完毕后调用of_LoginOut方法进行注 ... 
- 支付宝当面付开发(java)
		支付宝当面付开发(java) 业务流程: 接入准备: 直接下载demo: https://doc.open.alipay.com/doc2/detail.htm?spm=a219a.7 ... 
- ASP.NET Core 2.0 支付宝当面付之扫码支付
		前言 自从微软更换了CEO以后,微软的战略方向有了相当大的变化,不再是那么封闭,开源了许多东西,拥抱开源社区,.NET实现跨平台,收购xamarin并免费提供给开发者等等.我本人是很喜欢.net的,并 ... 
- 开源WHMCS支付宝当面付和即时到账插件
		开源WHMCS支付宝当面付和即时到账插件 链接: https://pan.baidu.com/s/1i5HU4hn 密码: crq7 
- 由支付宝当面付引发的NatApp方便调试回调
		http://blog.csdn.net/xunxianren007/article/details/54954520 这篇文章写的很好,很详细. 回调理解: 所谓回调:就是A类中调用B类中的某个方法 ... 
随机推荐
- Atitit dsl对于数组的处理以及main函数的参数赋值
			Atitit dsl对于数组的处理以及main函数的参数赋值 1.1. 词法解析..添加了[] 方括号的解析支持1 1.2. Ast建立.添加了数组参数的支持..使用了递归下降法..getparam ... 
- 常用Math 方法
			/** * * @authors Your Name (you@example.org) * @date 2016-11-18 11:26:44 * @version $Id$ */ Math.pow ... 
- Netty学习一:基本知识
			1. Netty基础知识 1.1 Netty出现的原因 Java NIO 太难用,存在BUG(如Epoll-Bug) 基于第一点,大多数高性能服务器被C和C++盘踞 同样基于第一点,Java NIO编 ... 
- MemCached add命令的用法详解
			增加: add 往内存增加一条数据 命令格式: add key flag expiretime bytes\r\n data\r\n //跨行所加的一些数据 1)key: 给这个值起一个固定的名字 / ... 
- OpenCascade Tcl vs. ACIS Scheme
			OpenCascade Tcl vs. ACIS Scheme eryar@163.com 摘要Abstract:本文通过OpenCascade的Tcl/Tk和ACIS的Scheme的对比来说明脚本语 ... 
- 深入理解javascript函数系列第二篇——函数参数
			× 目录 [1]arguments [2]内部属性 [3]函数重载[4]参数传递 前面的话 javascript函数的参数与大多数其他语言的函数的参数有所不同.函数不介意传递进来多少个参数,也不在乎传 ... 
- 深入理解CSS径向渐变radial-gradient
			× 目录 [1]定义 [2]椭圆圆心 [3]椭圆类型 [4]椭圆大小 [5]色标 [6]重复渐变 [7]其他 前面的话 上篇介绍了线性渐变,本文接着介绍径向渐变的内容 定义 径向渐变,实际上就是椭圆渐 ... 
- JavaWeb:Web与HTTP协议简介
			JavaWeb:Web与HTTP协议简介 Web的概念 什么是Web: Web是网络上使用最广泛的分布式应用架构. 旨在共享分布在网络上的各个Web服务器中的所有互相连接的信息. 三个特征: 用HTM ... 
- jQuery判断当前元素显示状态并控制元素的显示与隐藏
			1.jQuery判断一个元素当前状态是显示还是隐藏 $("#id").is(':visible'); //true为显示,false为隐藏 $("#id") ... 
- web接口开发与测试
			最近一直在学习和整理web开发与接口测试的相关资料.接口测试本身毫无任何难度,甚至有很多工具和类库来帮助我们进行接口测试.大多测试人员很难深入了解web接口测试的原因是对web开发不太了解,当你越了解 ... 
