pod "MoPaySDK", "~> 1.0.0"
如果使用 XCode6 以上的项目,可以将 framework 直接添加到 Embedded Binaries。
集成后,如果项目能够顺利构建成功,则说明已成功集成。
在 application:didFinishLaunchingWithOptions:launchOptions 中或其他合适时机初始化 SDK。
[MoPaySDK setupBaseURL:[NSURL URLWithString:@"http://mopayd.apps.toraysoft.com/"]];
[MoPaySDK registerInAppPurchase];
[MoPaySDK registerWeChatPayWithKey:@"wx3bb7d92700919217"];
[MoPaySDK registerAliPayWithUrlSchema:@"MoPayDemo"];
必须使用 URL 回调 SDK,否则支付完成后不会收到回调。
- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url {
[MoPaySDK handleOpenUrl:url];
return YES;
}
配置微信 Schema:Project->Target->Info->URL Types,添加 schema。如果需要使用微信支付,添加微信 schema,格式是 wx+微信 AppKey。
配置支付宝 Schema:Project->Target->Info->URL Types,添加 schema。如果使用支付宝,添加支付宝 schema,格式自定义,与 registerAliPayWithUrlSchema 传入的 schema 相同即可。
MoProduct *product = [MoProduct new];
product.id = 1;
product.name = @"测试1";
product.value = 1;
product.code = @"plan1";
这里只是作为演示,实际商品信息应从服务端获取。
[MoPaySDK payForProduct:product userId:1001 payType:MOPayTypeWeChat handler:^(MOPayType payType, MOPayState state, NSError *error) {
}];
[MoPaySDK payForProduct:product userId:1001 handler:^(MOPayType payType, MOPayState state, NSError *error) {
}];
[MoPaySDK payForProduct:product userId:1001 extraInfo:@{@"test":@"test"} payType:MOPayTypeWeChat|MOPayTypeAliPay|MOPayTypeIAP handler:^(MOPayType payType, MOPayState state, NSError *error) {
}];
答:如果是微信支付,请确保自己的 AppKey 可用并填写正确。如果是支付宝支付,请确保服务器的 PartnerID 和 SellerID 配置正确。如果是 IAP,请确保项目使用 Profile 正确选择,并且该 Profile 已经配置了 IAP 的商品,确保服务端返回的 Product code 是正确的 IAP 商品 code。
答:请确保服务端的 AppKey 和 AppSecret 配置正确。
答:请确保注册SDK的schema与项目中配置的URL type是一致的。
答:如果是客户端没有收到回调,请确保在application:handleOpenURL:中回调了[MoPaySDK handleOpenUrl:url];如果是服务端没有收到回调,请确保服务端的Notify url配置正确。
MoPaySDK错误码
2001 网络请求失败 无法连接网络或网络中断
2002 获取支付签名过程失败 服务获取订单接口或生成签名接口错误
2003 应用内支付被禁用
2004 无法获取商品信息
2005 iap验证失败
微信支付错误码
-1 错误 可能的原因:签名错误、未注册APPID、项目设置APPID不正确、注册的APPID与设置的不匹配、其他异常等。
-2 用户取消 无需处理。发生场景:用户不支付了,点击取消,返回APP。
支付宝错误码
9000 订单支付成功
8000 正在处理中
4000 订单支付失败
6001 用户中途取消
6002 网络连接出错