PB微信支付【刷卡支付】【扫码支付】【订单查询】

微信支付是集成在微信客户端的支付功能,用户可以通过手机完成快速的支付流程。微信支付以绑定银行卡的快捷支付为基础,向用户提供安全、快捷、高效的支付服务。用户只需在微信中关联一张银行卡,并完成身份认证,即可将装有微信app的智能手机变成一个全能钱包,之后即可购买合作商户的商品及服务,用户在支付时只需在自己的智能手机上输入密码,无需任何刷卡步骤即可完成支付,整个过程简便流畅。

对于PowerBuilder老的开发人员就麻烦了,官网不提供PB能够调用的接口

下面是我的通用性强的解决办法,PB负责组织数据,通过其它语言来进行数据上传和接收数据

目前支持,刷卡付,扫码付能够满足大多数企业需求

刷卡付传参

 
 

inv_wxpay.of_add("appid","")inv_wxpay.of_add("auth_code",sle_code.text)//授权码inv_wxpay.of_add("body",'刷卡支付测试')//商品描述 商品字段规则 店名-销售商品类目 样例 天虹南山店-超市inv_wxpay.of_add("mch_id","")inv_wxpay.of_add("nonce_str",of_rand(32))//随机字符串of_rand(32)inv_wxpay.of_add("out_trade_no",sle_4.text)//产生随机的商户订单号 of_rand(32)inv_wxpay.of_add("spbill_create_ip","8.8.8.8")//终端ipinv_wxpay.of_add("total_fee",string(long(dec(em_1.text)*100)))//总金额单位为分,只能为整数

 
传参 
 

inv_wxpay.of_add("appid","")
inv_wxpay.of_add("body",'刷卡支付测试')//商品描述 商品字段规则 店名-销售商品类目 样例 天虹南山店-超市
inv_wxpay.of_add("mch_id","")
inv_wxpay.of_add("nonce_str",of_rand(32))//随机字符串of_rand(32)
inv_wxpay.of_add("out_trade_no",sle_4.text)//产生随机的商户订单号 of_rand(32)
inv_wxpay.of_add("spbill_create_ip","8.8.8.8")//终端ip
inv_wxpay.of_add("total_fee",string(long(dec(em_1.text)*100)))//总金额单位为分,只能为整数
inv_wxpay.of_add("notify_url","http://www.weixin.qq.com/wxpay/pay.php")
inv_wxpay.of_add("trade_type","NATIVE")

两种方式只是参数不同,扫付码得到返回值后,需要根据返回的二维码地址,并显示给顾客扫描

inv_wxpay.of_MakeQRBarcode(inv_wxpay.is_codeurl,p_1)


只需要向inv_wxpay传入参数即可,其它工作交给它就可以了

下载源码 QQ:88954322 

20171110 修正不生成二维码bug

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
PB新大陆星POS扫码支付源码,调用C#动态库,简单实现接口,采用POWERBUILDER9.0开发 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
开发微信扫码登录程序是一项非常有挑战性的任务。首先,我们需要了解微信扫码登录的工作原理。 微信扫码登录是一种基于OAuth 2.0协议的认证方式。下面是开发微信扫码登录程序的基本步骤: 1. 注册开发者账号:在微信开放平台注册一个开发者账号,并创建一个应用。 2. 配置开发环境:将微信提供的开发工具包集成到开发环境中。可以选择使用Java、Python等编程语言来开发。 3. 获取授权地址:在后台配置应用的授权回调地址。用户扫码登录后,微信会将授权码返回到该地址。 4. 生成二维码调用微信提供的API生成用户扫码登录所需的二维码。 5. 监听回调:在后台实现一个回调接口,监听微信回调的授权码。 6. 获取用户信息:通过授权码,调用微信提供的API获取用户的基本信息,如昵称、头像等。 7. 实现登录逻辑:将获取到的用户信息与本地系统用户进行关联,实现用户的登录逻辑。 开发微信扫码登录程序需要对微信开放平台的文档进行深入研究,并掌握相关的API调用所需的参数和格式。此外,需要具备网络编程、接口开发等相关的技能。 开发微信扫码登录程序对于企业来说有很多好处。首先,可以提供一种方便快捷的登录方式,避免用户需要记忆过多的账号和密码。其次,可以增加用户粘性,提高用户的黏性和活跃度。最后,可以帮助企业获取用户的基本信息,便于个性化推送和精准营销。 总结来说,开发微信扫码登录程序是一项复杂的任务,需要充分了解微信扫码登录的工作原理和开发流程。通过合理的开发和配置,可以提供一种便捷的登录方式,增加用户黏性,并为企业实现个性化推送和精准营销提供基础数据。
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值