1. 微信支付控件概述

在开发公众号、小程序、网站等过程中,经常需要使用到微信支付,而微信支付又涉及到繁琐的签名加密,验证签名、回调等,需要熟读官方API,特别费神。因此就专门开发了微信支付控件(delphi),使用该控件,以后需要微信支付功能就可以通过简单设置几个参数直接使用,无需再进行繁琐开发(从此不再受那奴役苦)。

控件下载及演示程序请见(需要注册):https://www.abitsoft.com

微信支付控件图标:

微信控件开发语言:delphi

微信控件名称:TWX_PAY_Component

1.1 TWX_PAY_Component 功能

支持同一商户拥有 n个公众号,n个小程序同时支持支付功能,使用一个控件即可完成!

1.支持公众号、小程序、网站等支付;

2.支持属性一次设置即可;

3.支持MD5和HMAC-SHA256签名;

4.支持支付完成结果通知回调响应功能;

5.支持退单回调响应功能;

6.自身包含Web服务功能(支持 HTTPs);

7.支持付款码支付(micropay);

8.支持JSAPI支付(公众号、小程序等);

9.支持Native支付(模式一、模式二);

10.下载交易账单

11.下载资金账单

12.拉取订单评价数据

13.所有微信平台返回和回调都进行了验签,保证是微信平台返回。

1.2 微信支付回调知识

关于微信支付回调,就是说用户支付完成后,微信平台会回调商户平台,通过HTTP协议回调商户平台,这就需要商户平台必须有满足微信平台回调的 Web 地址,如果商户平台没有Web服务器,导致微信平台回调商户失败,无法通知到用户付款结果,此时商户平台需要查询用户的付款结果。
回调就需要商户平台提供Web服务,供微信平台访问回调,这些Web服务器在控件中都已经实现,无需单独建立Web服务器,而且所有实现细节不必关注,自动实现了。
具体的微信回调亲参阅官方文档:微信回调官方文档。

1.3 微信支付几种支付模式的区别

标注红色【已实现】的,表示控件已经完全实现!

本博客将手把手教你实现【付款码支付】、【JSAPI支付】、【Native支付】、【小程序支付】功能。其中【付款码支付】、【Native支付】无需任何编程即可实现,【JSAPI支付】、【小程序支付】自然需要有前端的公众号和小程序配合,控件后端也不需要书写代码,这个在后续博客中会介绍。

2. 控件属性、方法、事件、接口

2.1 控件属性

2.1.1 AppID

微信支付是依赖于公众号、小程序、APP等的,所以需要公众号等平台的AppID。如果是在公众号中支付,则这个AppID表示的是公众号的AppID,如果是在小程序中支付,则这个是对应小程序的AppID,其它类推。

如何获取AppID?

  1. 公众号AppID的获取,登录微信.公众平台:https://mp.weixin.qq.com/ ,进入</>开发 【基本配置】中可以看到 公众号开发信息。
  2. 小程序AppID获取,登录微信.公众平台:https://mp.weixin.qq.com/ (使用自己对应的小程序的账号,一般是邮件地址和密码),进入</>开发栏目,在【开发配置】中可以查询到 开发者ID。

2.1.2 API_Key

支付密钥,这个需要在微信商户平台后台获取,支付的时候是需要的,必要参数,该参数应该注意保密!

如何获取到支付密钥(API_KEY)?
登录微信商户平台:https://pay.weixin.qq.com/index.php/core/home/login?return_url=%2F,进入【账户中心】的【API安全】中参看 API 密钥 (只有设置的时候可以看到,以后如果忘记,只能重新设置)

2.1.3 Merchant_Number

支付商户编号,使用微信支付,必须在微信商户平台申请支付,如果申请成功,则微信商户平台会给申请者一个唯一的支付商户号,以后任何微信支付相关命令都需要这个参数。
如何获取商户号(Merchant_Numer)?
以下操作假定已经在微信商户平台申请完成了,我们只需要查询具体的商户号。
1.登录微信商户平台:https://pay.weixin.qq.com/index.php/core/home/login?return_url=%2F
2.在【账户中心】的【个人信息】中可以查询到

2.1.4 SignType_MD5

微信支付中的签名方式:MD5 或者 HMAC_SHA256。True 表示 MD5,否则表示 HMAC_SHA256,该参数默认值:MD5。

2.1.5 Web_Host

web主机域名,按照微信商户平台约定,不能使用IP地址,只能使用域名。不能为空。需要和Web_Host、Web_Path、Web_UseSSL 共同组成 URL 地址。

2.1.6 Web_Path

Web服务器的起始路径,这个参数是必须的。通过这个地址,可以在一个服务器上支持多个支付账号。不能为空。需要和Web_Host、Web_Path、Web_UseSSL 共同组成 URL 地址。

2.1.7 Web_UseSSL

True: 表示使用SSL ,访问时必须使用 HTTPS
False:表示不使用SLL,访问时必须使用HTTP

2.1.8 Native_Path

微信支付中 Native支付需要进行回调,该参数表示的是回调路径,如果使用Native支付,就必须设置这个参数!
需要和Web_Host、Web_Path、Web_UseSSL 共同组成 URL 地址。组成的URL地址必须和微信商户平台上设置的一致。
这个地址应该设置在 微信商户平台 - 【产品中心】 -【 开发配置】 - 【Native 支付】 字段中。否则 Native 支付无法正常回调。

举例说明如下:
假如微信商户平台上的地址是:http://sensor.ABC.com/wxh/Pay/native_notify
那么对应的控件的相关参数如下:
Web_UseSSL :False
Web_Host :sensor.ABC.com
Web_Path :wxh/Pay
本属性应该是 :native_notify
注意属性前后都不包括 /
对于Native 支付,如果不能正确设置回调,用户支付后,商户后台无法知道是否支付成功。

2.1.9 Result_Path

支付完成结果回调地址,支付、退单完成后,微信商户平台会通过这个地址通知结果。需要和Web_Host、Web_Path、Web_UseSSL 共同组成 URL 地址。

举例如下:
Web_UseSSL = ’ False ’
Web_Host = ’ wx.a3650.com ’
Web_Path = ’ WX_PAY ’
Result_Path = ’ Result ’
这最后得到的结果回调地址为:http://wx.a3650.com/WX_PAY/Result

特别提醒:
支付结果通知地址在统一下单的命令中告诉微信商户平台,具体参数是:notify_url
申请退款命令中也存在这个参数:notify_url,本控件已做处理,公用一个 notify_url 即可,也就是本参数Result_Path

2.1.10 UseIndyClient

该参数表示是否使用indy的HTTP客户端和微信后台通信。事实上是不需要使用Indy的客户端的,但是由于delphi 的原生的TNetHTTPClient 的认证事件在主程序是服务(Service)模式下无法使用,这应该是个bug。所以增加了使用Indy客户端的功能。

其中 CertFile 和 KeyFile 都是配合indy客户端使用需要的。

只有在主程序是Service服务模式时才使用 Indy

2.1.11 CertFile

微信支付客户端认证文件,这个文件以及KeyFile文件是微信商户后台发布的,如果申请了微信支付,就可以得到这个文件。
该属性表示了文件在本地的存放位置,是一个包含路径的文件名。

该文件只有在 UseIndyClient 属性为True时才有用,否则可以忽略!

2.1.12 KeyFile

微信支付客户端密钥文件,这个文件以及CertFile文件是微信后台发布的,如果申请了微信支付,就可以得到这个文件。
该属性表示了文件在本地的存放位置,是一个包含路径的文件。

该文件只有在 UseIndyClient 属性为True时才有用,否则可以忽略!

2.1.13 Log

表示是否自动记录日志的属性。逻辑型,默认是True,表示记录日志。关于记录日志的说明:
假如应用程序的名称是:WX_PAY_Demo,在程序中使用的控件名称叫WX_PAY,那么日志将会自动记录在当前目录的log目录下,按照日期记录,文件名称为:WX_PAY_Demo(WX_PAY)]2020-08-19(1).txt。这样保证一个程序中有多个支付控件,日志文件不会交叉。

2.2 控件方法

以下方法函数简明列表,详细使用说明参见控件 帮助文档。

序号 方法 说明
1 StartServer 打开微信支付服务,使用支付功能首先需要打开服务
2 StopServer 关闭微信支付服务
3 unifiedorder_JSAPI JSAPI统一下单命令,调用该命令完成JSAPI统一下单。
4 orderquery_XML 订单查询函数。该函数返回微信支付平台原生的XML字符串。
5 Xorderquery_XML 订单查询函数。该函数返回微信支付平台原生的XML字符串,需要独立提供 AppID
6 refundquery_transaction_id_XML 按照微信支付订单号transaction_id查询退单信息,并返回微信平台返回的原生XML信息。
7 Xrefundquery_transaction_id_XML 按照微信支付订单号transaction_id查询退单信息,并返回微信平台返回的原生XML信息。需要独立提供 AppID
8 refundquery_out_trade_no_XML 按照商户订单号(out_trade_no)查询退单信息,并返回微信平台返回的原生XML信息。
9 Xrefundquery_out_trade_no_XML 按照商户订单号(out_trade_no)查询退单信息,并返回微信平台返回的原生XML信息。需要独立提供 AppID
10 refundquery_out_refund_no_XML 按照商户退单号(out_refund_no)查询退单信息,并返回微信平台返回的原生XML信息。
11 Xrefundquery_out_refund_no_XML 按照商户退单号(out_refund_no)查询退单信息,并返回微信平台返回的原生XML信息。需要独立提供 AppID
12 refundquery_refund_id_XML 按照微信平台退单号(refund_id)查询退单信息,并返回微信平台返回的原生XML信息。
13 Xrefundquery_refund_id_XML 按照微信平台退单号(refund_id)查询退单信息,并返回微信平台返回的原生XML信息。需要独立提供 AppID
14 downloadbill_ALL 下载交易账单 - 全部。参见:官方文档 ,查询全部账单!
15 Xdownloadbill_ALL 下载交易账单 - 全部。参见:官方文档 ,查询全部账单!需要独立提供 AppID
16 downloadbill_SUCCESS 下载交易账单 - 支付成功。参见:官方文档 ,查询交易成功账单!该命令需要双向证书验证。
17 Xdownloadbill_SUCCESS 下载交易账单 - 支付成功。参见:官方文档 ,查询交易成功账单!该命令需要双向证书验证。需要独立提供 AppID
18 downloadbill_REFUND 下载交易账单 - 退单。参见:官方文档 ,查询交易退单账单!该命令需要双向证书验证。
19 Xdownloadbill_REFUND 下载交易账单 - 退单。参见:官方文档 ,查询交易退单账单!该命令需要双向证书验证。需要独立提供 AppID
20 downloadbill_RECHARGE_REFUND 返回当日充值退款订单!
21 Xdownloadbill_RECHARGE_REFUND 返回当日充值退款订单!需要独立提供 AppID
22 downloadfundflow_Basic 下载资金账单 - 基本账户。 参见:官方文档
23 Xdownloadfundflow_Basic 下载资金账单 - 基本账户。 参见:官方文档,需要独立提供 AppID
24 downloadfundflow_Operation 下载资金账单 - 运营账户。 参见:官方文档
25 Xdownloadfundflow_Operation 下载资金账单 - 运营账户。 参见:官方文档,需要独立提供 AppID
26 downloadfundflow_Fees 下载资金账单 - 手续费账户。 参见:官方文档
27 Xdownloadfundflow_Fees 下载资金账单 - 手续费账户。 参见:官方文档,需要独立提供 AppID
28 batchquerycomment 拉取订单评价数据 参见:官方文档
29 Xbatchquerycomment 拉取订单评价数据 参见:官方文档,需要独立提供 AppID
30 PAY_Native_Mode1_QRCode Native 支付模式一
31 XPAY_Native_Mode1_QRCode Native 支付模式一,需要独立提供 AppID
32 PAY_Native_Mode2_URL Native 支付模式二
33 XPAY_Native_Mode2_URL Native 支付模式二,需要独立提供 AppID
34 Get_Native_URL 根据属性Web_Host,Web_Path,Web_UseSSL,Native_Path等, 返回微信支付平台需要设置的Native回调地址。
35 Get_Result_URL 根据属性Web_Host,Web_Path,Web_UseSSL,Result_Path等, 返回微信支付平台需要设置的Native回调地址。
36 PAY_micropay 付款码支付,就是用户显示自己的付款码,商户通过扫描枪扫描用户二维码,从而实现支付。
37 XPAY_micropay 付款码支付,就是用户显示自己的付款码,商户通过扫描枪扫描用户二维码,从而实现支付。需要独立提供 AppID
38 PAY_reverse 撤销订单,对于付款码支付(micaopay),才支持撤销订单。
39 XPAY_reverse 撤销订单,对于付款码支付(micaopay),才支持撤销订单。需要独立提供 AppID
40 PAY_authcodetoopenid 通过付款码查询用户openid,在付款码支付的时候需要使用这个函数,控件内部已经使用,外部无需使用。
41 XPAY_authcodetoopenid 通过付款码查询用户openid,在付款码支付的时候需要使用这个函数,控件内部已经使用,外部无需使用。需要独立提供 AppID
42 Create_QR_File 创建链接的QR图片,把一个链接地址转换为二维码图片。二维码图片将位于执行文件目录下的QR_Code目录下。
43 Create_QR_Bytes 创建链接的QR图片,把一个链接地址转换为二维码图片。返回二维码图片的字节流。
44 Get_JSAPI_URL1 根据属性Web_Host,Web_Path,Native_Path等, 返回前端需要进行JSAPI支付时的调用地址。参数模式!
45 XGet_JSAPI_URL1 根据属性Web_Host,Web_Path,Native_Path等, 返回前端需要进行JSAPI支付时的调用地址。参数模式!需要独立提供 AppID
46 Get_JSAPI_URL2 根据属性Web_Host,Web_Path,Web_UseSSL等, 返回前端需要进行JSAPI支付时的调用地址。路径模式!
47 XGet_JSAPI_URL2 根据属性Web_Host,Web_Path,Web_UseSSL等, 返回前端需要进行JSAPI支付时的调用地址。路径模式!需要独立提供 AppID
48 Get_orderquery_URL 返回前端查询订单状态的URL地址
49 XGet_orderquery_URL 返回前端查询订单状态的URL地址。需要独立提供 AppID
50 Get_refund_URL 返回前端进行退单需要调用的URL地址
51 XGet_refund_URL 返回前端进行退单需要调用的URL地址。需要独立提供 AppID
52 Get_micropay_URL 返回前端进行付款码支付需要调用的URL地址
53 XGet_micropay_URL 返回前端进行付款码支付需要调用的URL地址。需要独立提供 AppID
54 Format_JSON 格式化JSON字符串,便于阅读
55 Format_XML 格式化XML,以便查看。
56 writelog 书写日志

2.3 控件事件

2.3.1 JSAPI 统一下单前事件:OnPAY_before_unifiedorder

微信支付流程第一步要执行统一下单,执行JSAPI统一下单前会前触发这个事件,在这个事件中可以构造商户订单号,如果商户订单号空,则系统自动生成商户订单号。

TOnPAY_before_unifiedorder = procedure(AppID,Merchant_number,openid,trade_type,total_fee,body : PChar; var out_trade_no,attach : PChar; Stop : Boolean = False) of object;
序号 参数 方向 说明
1 AppID 支付平台的AppID,告知是小程序还是公众号的AppID,以此可以记录日志
2 Merchant_number 支付商户号
3 openid 支付用户相对于平台的openid,知道是哪个用户支付的
4 trade_type 统一下单的类型:JSAPI 或者 NATIVE,这个事件只触发JSAPI下单
5 total_fee 订单金额,单位:分
6 body 订单实体描述,是什么商品等等
7 out_Trade_no 商户支付订单号,最大不能超过32个字符,在平台中必须唯一,要求在这个事件中完成赋值,如果事件中没有赋值,则使用系统定义的通用商户订单号生成规则
8 attach 商户附加数据,平台回调的时候会原封不动的送回来,可以为空
9 stop 统一下单是否停止标志,默认是False,表示继续完成支付,如果传True表示立即停止

通用商户订单号规则(out_trade_no):PAY + YYYY_MM_DD-hhmmss000001( 最后面是6位数字序列号)。

2.3.2 JSAPI 统一下单后事件:OnPAY_after_unifiedorder

JSAPI统一下单完成后触发的事件,此时已经向平台下单完成。在这个事件中可以做一些后续事务处理,比如回写数据库等等。

TOnPAY_after_unifiedorder  = procedure(AppID,Merchant_number,openid,trade_type,total_fee,body,out_trade_no,err_code,err_code_des,prepay_id {,code_url} : PChar; return_Result : Boolean) of object;
序号 参数 方向 说明
1 AppID 支付平台的AppID,告知是小程序还是公众号的AppID,以此可以记录日志
2 Merchant_number 支付商户号
3 openid 支付用户相对于平台的openid,知道是哪个用户支付的
4 trade_type 统一下单的类型:JSAPI 或者 NATIVE,这个事件只触发JSAPI下单
5 total_fee 订单金额,单位:分
6 body 订单实体描述,是什么商品等等
7 out_Trade_no 商户支付订单号,最大不能超过32个字符,在平台中必须唯一,要求在这个事件中完成赋值,如果事件中没有赋值,则使用系统定义的通用商户订单号生成规则
8 err_code 统一下单错误码(平台数据)
9 err_code_des 统一下单错误描述(平台数据)
10 prepay_id 统一下单返回的预支付码 --------这个参数是重点,系统已经返回给下单者,无需进行处理
11 return_Result 返回的结果,True 表示统一下单成功,否则表示失败,失败的具体原因查看:err_code 和 err_code_des

2.3.3 NATIVE 统一下单前事件:OnPAY_before_unifiedorder_NATIVE

用户打开微信扫一扫,扫描商户二维码发起支付,按照支付流程,需要先进行统一下单,在统一下单前会触发这个事件。在这个事件中可以输入商户订单号、调整订单金额(一般不需要调整)等。

TOnPAY_before_unifiedorder_NATIVE = procedure(AppID,Merchant_number,openid,product_id,trade_type : PChar; var out_trade_no,body,total_fee,attach : PChar; var Stop_PAY : Boolean) of object;

2.3.4 NATIVE 统一下单后事件:OnPAY_after_unifiedorder_NATIVE

NATIVE 统一下单后触发这个事件,可以回写数据库等

TOnPAY_after_unifiedorder_NATIVE  = procedure(AppID,Merchant_number,openid,trade_type,total_fee,body,out_trade_no,err_code,err_code_des,prepay_id,code_url : PChar; return_Result : Boolean) of object;

2.3.5 micropay 统一下单前事件:OnPAY_before_micropay

micaropay支付,也就是付款码支付,商户扫描手机支付二维码。按照流程也需要统一下单,在统一下单前会触发这个事件。

TOnPAY_before_micropay  = procedure(auth_code, body, total_fee : PChar; var out_trade_no, attach : PChar) of object;

2.3.6 micropay 统一下单后事件:OnPAY_after_micropay

付款码支付统一下单后触发这个事件。

TOnPAY_after_micropay = procedure(auth_code,out_trade_no,body,total_fee,attach, openid, transaction_id,time_end,is_subscribe, err_code,err_code_des : PChar) of object;

2.3.7 支付结果通知事件:OnPAY_Result_notify

微信平台支付完成后,会把结果异步告知商家平台,商家平台收到微信支付结果告知后,就会触发这个事件。

TOnPAY_Result_notify = procedure(return_code,return_msg,appid,mch_id,openid,is_subscribe,trade_type,total_fee,cash_fee,transaction_id,out_trade_no,attach,time_end, XMLStr_original_notify : PChar) of object;


PAY_Result_notify_Rec :微信回调信息记录,里边包含支付结果信息
XMLStr_original_notify : 微信平台返回的原始XML数,仅作参考,已经转换成了极了PAY_Result_notify_Rec

在这个事件中可以进行相关的支付流程完善处理。

2.3.8 退款结果通知事件:OnPAY_Refund_notify

出现退款后,微信平台会异步通知商户平台,商户平台收到微信平台的通知会触发这个事件

TOnPAY_Refund_notify = procedure(return_code,return_msg,appid,mch_id,transaction_id,out_trade_no,refund_id,out_refund_no,total_fee,refund_fee,settlement_refund_fee,refund_status,success_time,refund_recv_accout,refund_account,refund_request_source,XMLStr_original_notify : PChar) of object;

2.4 控件 Web 接口

2.4.1 Web JSAPI 统一下单接口

该接口给公众号或者小程序提供统一下单接口,通过该接口公众号和小程序可以快速实现支付。

说明:
前端通过调用地址,发送调用参数
服务端会返回结果JSON参数
前端收到返回结果后可以发起 JSAPI 支付,具体示例代码如下:

function onBridgeReady(){WeixinJSBridge.invoke('getBrandWCPayRequest', {"appId":"wx2421b1c4370ec43b",     //公众号名称,由商户传入    "timeStamp":"1395712654",         //时间戳,自1970年以来的秒数    "nonceStr":"e61463f8efa94090b1f366cccfbbb444", //随机串    "package":"prepay_id=u802345jgfjsdfgsdg888",    "signType":"MD5",         //微信签名方式:    "paySign":"70EA570631E4BB79628FBCA90534C63FF7FADD89" //微信签名},function(res){if(res.err_msg == "get_brand_wcpay_request:ok" ){// 使用以上方式判断前端返回,微信团队郑重提示://res.err_msg将在用户支付成功后返回ok,但并不保证它绝对可靠。}});
}
if (typeof WeixinJSBridge == "undefined"){if( document.addEventListener ){document.addEventListener('WeixinJSBridgeReady', onBridgeReady, false);}else if (document.attachEvent){document.attachEvent('WeixinJSBridgeReady', onBridgeReady);document.attachEvent('onWeixinJSBridgeReady', onBridgeReady);}
}else{onBridgeReady();
}

2.4.2 XWeb JSAPI 统一下单接口

参见 2.4.1 只是调用接口参数中增加了 AppID。

2.4.3 Web 查询订单状态

如果在服务器端查询订单状态,请参见 Get_orderquery_State 方法。为了前端操作方便,该命令提供前端调用接口。

接口调用地址:PAY_orderquery
接口调用参数(JSON):
{
“out_trade_no”:“TT2100”
}
返回结果成功:
{
“status”:“0”
}

返回的是一个结果码,含义如下:
tsSUCCESS = 0,
tsREFUND = 1,
tsNOTPAY = 2,
tsCLOSED = 3,
tsREVOKED = 4,
tsUSERPAYING = 5,
tsPAYERROR = 6,
tsSYSTEMERROR = 7

实际的调用地址可以通过函数:Get_orderquery_URL 获取到。

2.4.4 XWeb 查询订单状态

参见 2.4.3 调用参数增加 AppID。

2.4.5 Web 付款码支付

如果在服务器端操作付款码支付,请参见 PAY_micropay 方法。为了前端操作方便,该命令提供前端调用接口。

接口调用地址:PAY_micropay
接口调用参数(JSON):
{
“auth_code”:“T100”,
“out_trade_no”:“TT2100”,
“body”:“2”,
“total_fee”:“2”,
“attach”:“附加信息”
}
返回结果成功:
{
“openid”:“To00281093098”,
“transaction_id”:“u1028088809”,
“time_end”:“2020-08-09 12:30:00”,
“is_subscribe”:“Y”
}
返回结果失败:
{
“errcode”:“FAIL”,
“errmsg”:“参数不能为空”
}

实际的调用地址可以通过函数:Get_micropay_URL 获取到。

2.4.6 XWeb 付款码支付

参见 2.4.5 增加参数 AppID。

2.4.7 Web 退单命令

如果在服务器端操作退单,请参见 refund 方法。为了前端操作方便,给前端提供了退单的API退单接口。

接口调用地址:PAY_refund
接口调用参数(JSON):
{
“out_trade_no”:“T100”,
“out_refund_no”:“TT2100”,
“total_fee”:“2”,
“refund_fee”:“2”
}
返回结果成功:
{
“refund_id”:“To00281093098”
}
4. 返回结果失败:
{
“errcode”:“FAIL”,
“errmsg”:“参数不能为空”
}

实际的调用地址可以通过函数:Get_refund_URL 获取到。

2.4.8 XWeb 退单命令

参见 2.4.7 增加参数 AppID。

如有任何问题请加微信:

***未完,请看下一篇… 有建议请QQ:910731685 ***

【Delphi】微信支付控件(一)(半小时让您系统拥有支付功能)源代码、帮助文件、演示程序相关推荐

  1. 【Delphi】微信支付控件(二)(半小时让您系统拥有支付功能)源代码、帮助文件、演示程序

    3.控件 Demo 详细说明 控件及演示程序下载(需要注册):https://www.abitsoft.com 3.1 演示程序主界面 3.2 公共功能 3.2.1 编辑控件属性 在此输入控件的属性, ...

  2. Delphi XE2 新控件 布局Panel TGridPanel TFlowPanel

    Delphi XE2 新控件 Firemonkey 布局Panel Windows平台VCl TGridPanel TFlowPanel FMX 跨平台 TLayout TGridLayout TFl ...

  3. delphi使用 第三方控件

    第三方控件安装时必须把所有的pas,dcu,dpk,res等文件复制到你的Lib目录下 然后通过dpk进行安装 安装后会多出来新的控件面板,新控件就在那里了 当然也有一些控件会安装到原有的面板上 比如 ...

  4. Android银联支付控件集成总结

    银联支付 1.概述 银联支付有很多种类型,我们这里主要说的是手机控件支付 银联手机支付控件主要应用于各类手机电子商务平台的支付应用.银联控件合作商户的手机客户端(或网站)内集成(或调用)银联支付控件后 ...

  5. 逆向微信------给微信加上控件之骰子作弊

    严重声明 本文的意图只有一个就是通过分析app学习更多的逆向技术,如果有人利用本文知识和技术进行非法操作进行牟利,带来的任何法律责任都将由操作者本人承担,和本文作者无任何关系,最终还是希望大家能够秉着 ...

  6. 支付宝h5支付,无法调起支付控件问题

    问题描述 支付宝回调的付款页面,首次回调后,安卓系统无法调起支付控件,需重新刷新h5页面. 参考原因 当页面加载完后会创建 AlipayJSBridge对象,同时会触发AlipayJSBridgeRe ...

  7. android+高仿视频录制,Android高仿微信拍照控件,实战推荐!

    原标题:Android高仿微信拍照控件,实战推荐! 作者:陈嘉桐 转自:ttps://github.com/CJT2325 控件介绍 不知道是不是在微信更新到6.0版本之后,微信将它的拍照和录制视频的 ...

  8. Delphi常用通讯控件的应用札记

    Delphi常用通讯控件的应用札记 1.SPComm串口控件 2.TClientSocket

  9. SpreadJS 纯前端表格控件应用案例:在线问卷系统

    由某软件公司研发的在线问卷系统,是一款通过收集网络信息,帮助问卷设计者和数据分析师们分析消费者线上行为特征和态度的系统平台,使用该系统可批量而精确地抽取目标网页中的任何数据及信息,快速实现实时的信息获 ...

最新文章

  1. 防水+四扬声器诺基亚X7细节
  2. 第二章 循环结构程序设计
  3. springboot接收文件_SpringBoot2.x系列教程61--SpringBoot整合MQ之ActiveMQ实现消息传递
  4. SAP成都研究院C4C光明左使:SAP Cloud for Customer 使用SAP UI5的独特之处
  5. transform限制position:fixed的跟随效果
  6. 存储器是计算机的记忆装置,存储器(Memory)
  7. Linux 内核维护缺后浪,前浪Linus缺点Fun
  8. vue项目中简单进行axios封装及响应状态码提示!
  9. 字符串匹配问题 ----- Rabin-Karp算法
  10. NetDevOps常用数据库python实战-influxDB_grafana
  11. jQuery源码解读一
  12. oracle 获取月份_网络工程师干货 | 2020年7月份最新的华为HCIARS培训教程,画质超级好!...
  13. 是妄言还是实话 云电脑将代替传统PC?
  14. 【刘晓燕长难句分析】2.并列句
  15. 阿丹学财报(1)- 财报是用来证伪的
  16. 无界版图:基于版权,才是真正的创作者经济
  17. JAVA一些基础概念
  18. 数据中心机房效果图鉴赏
  19. SpringBoot + Vue实现博文上传+展示+博文列表
  20. 新浪大赚,阿里吃亏------剖析阿里巴巴入股新浪微博

热门文章

  1. Cointelegraph中文HUB | Roxe:全球支付网络的倡导者和领先者暨团队亚太见面会
  2. 爱情树代码的修改(MAC)
  3. STM32输出1-500KHz任意整数频率脉冲,代码时间空间优化实现误差最小频率输出。
  4. Python-将url生成二维码
  5. Unity 之 实现老虎机滚动抽奖效果
  6. 微信公众号自动回复消息如何设置带链接的文字
  7. Latex的使用——目录、参考文献
  8. java浏览器下载_Java浏览器控件下载-JxBrowser(Java浏览器控件)官方下载[Java控件]-天极下载...
  9. MDL4Microbiome:通过多模态深度学习提升宏基因组数据疾病预测的准确性
  10. nhanesA包的介绍及使用