[QSDK]使用微信SDK在手机中实现微信支付

QSDK 的微信支付的移动支付版本已经搞定,目前实测工作正常。

关于开通微信支付相关的东西,咱们先不讨论,大家按微信支付的要求就可以了。

先说共同的部分,在代码中调用微信支付的步骤:

一、引用单元

QSDK 中微信相关功能的接口实现单元是 qsdk.wechat.pas,而对应于 Android 和 iOS 版本的具体实现分别是 qsdk.wechat.android.pas 和 qsdk.wechat.ios。所以第一步,我们需要在 我们的程序中首先引用 qsdk.wechat 单元。

二、调用全局函数 WechatService 函数,返回全局的服务实例并配置相关的参数:

  • OnResponse:事件完成事件,处理微信返回的支付结果
  • AppId:您注册的微信 App 编码
  • MchId:您在微信注册的商户编号
  • PayKey:微信分配的支付密钥
with WechatService do
  begin
    OnResponse := DoWechatResponse;
    //这些数据尽量不要在本地保存,而是从服务器端读取后赋值
    AppId := '注册的微信AppId';
    MchId := '注册的商户Id';
    PayKey := '微信分配的支付密钥';
  end

三、调用服务器端统一支付接口,生成支付所需的参数(此步出于安全应在服务器端生成):

  • 预支付代码(prepayId)
  • 随机字符串(nonceStr)
  • 签名(sign)
  • 时间戳(timeStamp)

四、调用 WechatService.Pay 接口,调用微信支付来完成付款。

if WechatService.Pay(prepayId, nonceStr,Sign,timeStamp) then
   begin
   //调起支付成功,实际付款注意此时并未发生
   end;

五、在 DoWechatResponse 事件响应函数中,响应微信支付结果。如果微信支付成功,返回的 ErrorCode 值为0。

procedure TForm1.DoWechatResponse(AResponse: IWechatResponse);
begin
 if AResponse.ErrorCode=0 then
    Workers.Post(DoPayOk,...)
 else
    Workers.Post(DoPayError...);
end;

六、在 DoPayOk 函数中,从服务器端取得支付结果

[注意] 按照官方开发文档里的说法,千万不要以这个第五步中的支付结果做为实际的依据,应该以微信服务器端的通知或查询的结果做为依据,所以在这一步一定要从服务器取支付结果。

七、额外的配置步骤

【iOS版】

iOS 版需要你在 info.plist.TemplateiOS.xml 增加 CFBundleURLTypes 部分的内容,注意替换为你自己的微信 AppId:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<%VersionInfoPListKeys%>
<%ExtraInfoPListKeys%>
    <key>CFBundleURLTypes</key>
    <array>
		<dict>
			<key>CFBundleTypeRole</key>
			<string>Editor</string>
			<key>CFBundleURLName</key>
			<string>weixin</string>
			<key>CFBundleURLSchemes</key>
			<array>
				<string>你的微信AppId</string>
			</array>
		</dict>
	</array>
</dict>
</plist>

【Android】

Android 版需要你做更多的额外步骤:

  1. 修改 QSDK 已经为您提供 WXPayEntryActivity 的源码,让其包名与你应用的包名一样。如你的包名为  cc.qdac.qsdk,则修改结果为 cc.qdac.qsdk.wxapi。如下所示:
    package wxapi;
    ==>
    package cc.qdac.qsdk.wxapi;
  2. 将 WXPayEntryActivity 和微信的 SDK 开发包 libammsdk.jar 合并编译成一个包,假设叫 wxpay.jar。
  3. 将生成的 wxpay.jar 添加到目标平台的 Android  的 Library 结点下。
  4. 修改 AndroidManifest.template.xml 配置文件,默认的 Activity 下面增加 WXPayEntryActivity  的入口定义:
    <activity android:name="com.jlgoldenbay.ddb.wxapi.WXPayEntryActivity"
     android:exported="true" android:launchMode="singleInstance" />

八、编译并发布你的 App。

为了方便大家使用,QDAC 为您提供了专门的工具,来完成上面的工作。

下载微信支付集成辅助工具

分享到: