QSDK 的支付宝支付的 iOS 移动支付版本已经搞定,目前实测工作正常。
关于开通支付宝支付相关的东西,咱们先不讨论,大家按支付宝支付的要求就可以了。
先说共同的部分,在代码中调用支付宝支付的步骤:
一、引用单元
QSDK 中支付宝相关功能的接口实现单元是 qsdk.alipay.pas,而对应于 Android 和 iOS 版本的具体实现分别是 qsdk.alipay.android.pas 和 qsdk.alipay.ios。所以第一步,我们需要在 我们的程序中首先引用 qsdk.alipay单元。
二、调用服务器端统一支付接口,生成支付所需的订单字符串(此步出于安全应在服务器端生成):
三、调用 AlipayService.Pay 接口,调用支付宝支付来完成付款。
procedure PayByAlipay;
var
AResult, AItem, AName, AValue: String;
pr: PWideChar;
begin
AResult := AlipayService.Pay(AOrder.PayStr);
// resultStatus={6001};memo={操作已经取消。};result={}
pr := PWideChar(AResult);
while pr^ <> #0 do
begin
AItem := DecodeTokenW(pr, ';', #0, true, true);
AName := NameOfW(AItem, '=');
if AName = 'resultStatus' then
begin
AValue := DeleteSideCharsW(ValueOfW(AItem, '='), '{}');
if AValue = '9000' then // 成功
begin
//支付成功
end
else
begin
//支付失败,根据错误代码自行处理
end;
end
else if AName = 'memo' then
//错误内容
end;
end;
[注意] 按照官方开发文档里的说法,虽然支付返回错误,但支付仍可能成功,应该以服务器端的通知或查询的结果做为依据,所以后面一定要从服务器取支付结果。
四、额外的配置步骤
【iOS版】
iOS 版需要你在 info.plist.TemplateiOS.xml 增加 CFBundleURLTypes 部分的内容,注意替换为你自己的唯一的scheme:
<key>CFBundleURLTypes</key>
<array>
<dict>
<key>CFBundleTypeRole</key>
<string>Editor</string>
<key>CFBundleURLSchemes</key>
<array>
<string>你自己的Scheme</string>
</array>
</dict>
</array>如果同时使用微信的SDK,那么直接使用微信的scheme可能就可以
【Android】
修改 AndroidManifest.template.xml 配置文件,默认的 Activity 下面增加 H5PayActivity和AuthActivity 的入口定义:
<activity android:name="com.alipay.sdk.app.H5PayActivity"
android:configChanges="orientation|keyboardHidden|navigation"
android:exported="false"
android:screenOrientation="behind" >
</activity>
<activity
android:name="com.alipay.sdk.auth.AuthActivity"
android:configChanges="orientation|keyboardHidden|navigation"
android:exported="false"
android:screenOrientation="behind" >
</activity>五、编译并发布你的 App。
