MoPay 0.0.6

MoPay 0.0.6

测试测试过的
语言语言 Obj-CObjective C
许可证 MIT
发布最新发布2015年5月

javen macbook air 维护。



MoPay 0.0.6

  • 作者
  • Javen_liu

MoPay-iOS

说明

  • SDK 支持 iOS6.0 以上。
  • SDK 包含了微信 SDK(libWeChatSDK.a)和支付宝 SDK(AlipaySDK.framework),如果原始项目中已包含以上两个库,请先从项目中移除。

集成 SDK

使用 pod 集成

pod "MoPaySDK", "~> 1.0.0"

使用 framework 集成

如果使用 XCode6 以上的项目,可以将 framework 直接添加到 Embedded Binaries。

集成后,如果项目能够顺利构建成功,则说明已成功集成。

使用 SDK

1. 注册 Schema 和 Host

在 application:didFinishLaunchingWithOptions:launchOptions 中或其他合适时机初始化 SDK。

[MoPaySDK setupBaseURL:[NSURL URLWithString:@"http://mopayd.apps.toraysoft.com/"]];

[MoPaySDK registerInAppPurchase];

[MoPaySDK registerWeChatPayWithKey:@"wx3bb7d92700919217"];

[MoPaySDK registerAliPayWithUrlSchema:@"MoPayDemo"];

2. 添加 URL 回调处理

必须使用 URL 回调 SDK,否则支付完成后不会收到回调。

- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url {
    [MoPaySDK handleOpenUrl:url];
    return YES;
}

3. 配置 Schema

  • 配置微信 Schema:Project->Target->Info->URL Types,添加 schema。如果需要使用微信支付,添加微信 schema,格式是 wx+微信 AppKey。

  • 配置支付宝 Schema:Project->Target->Info->URL Types,添加 schema。如果使用支付宝,添加支付宝 schema,格式自定义,与 registerAliPayWithUrlSchema 传入的 schema 相同即可。

  • 如果使用 IAP,需要添加 StoreKit,并将 demo 证书换成自己的证书,因为 IAP 的商品与证书相关。Project->Target->Build Phases->Link Binary With Libraries,添加 StoreKit。Project->Target->Build Settings->Provisioning Profile,选择正确的证书。

4. 测试支付

创建一个商品

    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) {

}];
  • 如果需要将额外参数传递到服务器,可以使用 extraInfo 参数。
[MoPaySDK payForProduct:product userId:1001 extraInfo:@{@"test":@"test"} payType:MOPayTypeWeChat|MOPayTypeAliPay|MOPayTypeIAP handler:^(MOPayType payType, MOPayState state, NSError *error) {

}];

常见错误

1. 问:无法调起支付?

答:如果是微信支付,请确保自己的 AppKey 可用并填写正确。如果是支付宝支付,请确保服务器的 PartnerID 和 SellerID 配置正确。如果是 IAP,请确保项目使用 Profile 正确选择,并且该 Profile 已经配置了 IAP 的商品,确保服务端返回的 Product code 是正确的 IAP 商品 code。

2. 调起了支付,但无法成功支付(微信、支付宝)?

答:请确保服务端的 AppKey 和 AppSecret 配置正确。

3.问:支付完成后没有返回到应用?

答:请确保注册SDK的schema与项目中配置的URL type是一致的。

4.问:支付完成,回到应用后没有收到回调?

答:如果是客户端没有收到回调,请确保在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 网络连接出错