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 版需要你做更多的额外步骤:
- 修改 QSDK 已经为您提供 WXPayEntryActivity 的源码,让其包名与你应用的包名一样。如你的包名为 cc.qdac.qsdk,则修改结果为 cc.qdac.qsdk.wxapi。如下所示:
package wxapi; ==> package cc.qdac.qsdk.wxapi;
- 将 WXPayEntryActivity 和微信的 SDK 开发包 libammsdk.jar 合并编译成一个包,假设叫 wxpay.jar。
- 将生成的 wxpay.jar 添加到目标平台的 Android 的 Library 结点下。
- 修改 AndroidManifest.template.xml 配置文件,默认的 Activity 下面增加 WXPayEntryActivity 的入口定义:
<activity android:name="com.jlgoldenbay.ddb.wxapi.WXPayEntryActivity" android:exported="true" android:launchMode="singleInstance" />
八、编译并发布你的 App。
为了方便大家使用,QDAC 为您提供了专门的工具,来完成上面的工作。
0 条评论
沙发空缺中,还不快抢~