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。