Giter VIP home page Giter VIP logo

xhpaykit's Introduction

XHPayKit

不用官方SDK,实现微信支付、支付宝支付

AppVeyor Version Status Support Pod Platform Pod License

技术交流群(群号:537476189)

2019.11.08:⚠️警告此库审核时会被检测出来,不要直接使用.解决方案:请看这里>>>

温馨提示

1.使用XHPayKit走不通支付流程的,基本都是所传支付参数有问题,建议你先使用官方SDK调通支付流程后,再删除官方SDK使用XHPaykit.
2.XHPaykit和官方SDK有类似接口,可以实现快速替换.

写在最前

1.此库拥有和官方SDK相似的接口,可以直接替换官方SDK支付接口,如果你使用过官方SDK,那么转换为本库你只需花费极短时间
2.此库只有10kb大小,不用导入任何依赖库,便可实现微信支付、支付宝支付,如果你想为项目瘦身或由于某种原因,不想使用官方SDK实现支付功能,此库将是一个不错的选择.
3.本库使用时,不需要配置微信等平台appid等信息,服务端配置就可以了,支付不同于登录分享,参数均由后台生成,后台签名订单时会返回appid等信息给客户端.

如果你不想让审核人员扫描到APP里面的支付功能请看这里>>>

注意:

1.先在微信、支付宝开放平台注册你的应用,并获得支付能力
2.导入此库,并请将 weixin 、 alipay 字段添加到info.plist白名单
3.并添加两个URL Schemes 如图:
4.XHPayKit在未安装支付宝/微信情况下,不会拉起网页支付

运行Demo注意事项:

由于demo拉起支付时,未传递真实支付参数,所以并不能真正进行支付,请替换为真实订单参数即可(这些参数由后台进行订单签名时生成并返回给客户端).

代码示例

1.微信支付

//以下参数详细介绍见微信官方文档:https://pay.weixin.qq.com/wiki/doc/api/app/app.php?chapter=9_12&index=2

//微信支付参数,下面7个参数,由后台签名订单后生成,并返回给客服端(与官方SDK一致)
//注意:请将下面参数设置为你自己真实订单签名后服务器返回参数,便可进行实际支付

XHPayWxReq *req = [[XHPayWxReq alloc] init];
req.openID = @"";//微信开放平台审核通过的应用APPID
req.partnerId = @"";//商户号
req.prepayId = @"";//交易会话ID
req.nonceStr = @"";//随机串,防重发
req.timeStamp = 1518156229;//时间戳,防重发
req.package = @"";// 扩展字段,暂填写固定值Sign=WXPay
req.sign = @"";//签名
        
//传入订单模型,拉起微信支付
[[XHPayKit defaultManager] wxpayOrder:req completed:^(NSDictionary *resultDict) {
      NSLog(@"支付结果:\n%@",resultDict);
      NSInteger code = [resultDict[@"errCode"] integerValue];
      if(code == 0){//支付成功
                
      }
}];

        

2.支付宝支付

//支付宝订单签名,此签名由后台签名订单后生成,并返回给客户端(与官方SDK一致)
//注意:请将下面值设置为你自己真实订单签名,便可进行实际支付
NSString *orderSign = @"很长的一串支付宝订单签名";
        
//传入支付宝订单签名 和 自己App URL Scheme,拉起支付宝支付
[[XHPayKit defaultManager] alipayOrder:orderSign fromScheme:@"XHPayKitExample" completed:^(NSDictionary *resultDict) {
    NSLog(@"支付结果:\n%@",resultDict);
    NSInteger status = [resultDict[@"resultStatus"] integerValue];
    if(status == 9000){//支付成功
                
    }
}];

3.在Appdelegate中添加以下代码 - 处理第三方支付跳回商户app携带的支付结果Url

#if __IPHONE_OS_VERSION_MAX_ALLOWED >= __IPHONE_9_0
/** iOS9及以后 */
- (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary<UIApplicationOpenURLOptionsKey, id> *)options
{
    BOOL result = [[XHPayKit defaultManager] handleOpenURL:url];
    if (!result) {//这里处理其他SDK(例如QQ登录,微博登录等)
        
    }
    return result;
}
#endif
/** iOS9以下 */
- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation
{
    BOOL result = [[XHPayKit defaultManager] handleOpenURL:url];
    if (!result) {//这里处理其他SDK(例如QQ登录,微博登录等)
        
    }
    return result;
}

其它接口

/**
 是否安装微信

 @return 已安装YES,未安装NO
 */
+(BOOL)isWxAppInstalled;

/**
 是否安装支付宝

 @return 已安装YES,未安装NO
 */
+(BOOL)isAliAppInstalled;

支付结果resultDict释义

微信

{
    "errCode":0,
    "errStr":"成功"
}

//以下状态码含义与官方SDK一致
errCode = 0,成功<br>
errCode = -1,普通错误类型<br>
errCode = -2,用户点击取消并返回<br>
errCode = -3,发送失败<br>
errCode = -4,授权失败 <br>
errCode = -5,微信不支持<br>

支付宝

{
    "result":"",
    "resultStatus":"9000",
    "memo":"支付成功"
}

//以下状态码含义与官方SDK一致
resultStatus = 9000,支付成功<br>
resultStatus = 8000,正在处理中,支付结果未知(有可能已经支付成功),请查询商户订单列表中订单的支付状态<br>
resultStatus = 4000,支付失败<br>
resultStatus = 5000,重复请求<br>
resultStatus = 6001,用户中途取消<br>
resultStatus = 6002,网络连接出错<br>
resultStatus = 6004,支付结果未知(有可能已经支付成功),请查询商户订单列表中订单的支付状态<br>

安装

1.手动添加:

  • 1.将 XHPayKit 文件夹添加到工程目录中
  • 2.导入 XHPayKit.h

2.CocoaPods:

  • 1.在 Podfile 中添加 pod 'XHPayKit'
  • 2.执行 pod install 或 pod update
  • 3.导入 XHPayKit.h

3.Tips

  • 1.如果你pod search XHPayKit 后提示:[!] Unable to find a pod with name, author, summary, or description matching XHPayKit,请在终端上执行 rm ~/Library/Caches/CocoaPods/search_index.json , 后重新pod search XHPayKit
  • 2.如果发现pod search XHPayKit 搜索出来的不是最新版本,需要在终端执行cd ~/desktop退回到desktop,然后执行pod setup命令更新本地spec缓存(需要几分钟),然后再搜索就可以了
  • 3.如果你发现你执行pod install后,导入的不是最新版本,请删除Podfile.lock文件,在执行一次 pod install
  • 4.如果在使用过程中遇到BUG,希望你能Issues我,谢谢(或者尝试下载最新的代码看看BUG修复没有)

系统要求

  • 该项目最低支持 iOS 7.0 和 Xcode 8.0

许可证

XHPayKit 使用 MIT 许可证,详情见 LICENSE 文件

xhpaykit's People

Contributors

coderzhuxh avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

xhpaykit's Issues

ios和安卓的串好像不通用?

服务器端产生了url,在ios端直接openurl可以正常打开,也可以正常支付.完全没问题.
但是在安卓端就不行了.这两端不一样吗?
作者有没有验证过?

最近能过审吗?

我自己混淆了代码,还没送审,怕被打回来。
最近作者有送审吗?

没有安装支付宝要跳h5页面

rt,现在是直接拦截了,但是支付宝是有跳转h5的功能的,希望大大能加上,我们公司的测试跟我说没有安装支付宝也要跳转h5……我也是无语,问了支付宝客服他们说是可以的……

微信支付没有回调 !

大佬 调用微信支付可以成功支付流程可以走通 但是没有回调 需要拿到回调值显示支付成功还是失败

微信登录和微信支付同时存在,微信登录会触发支付的回调

XHPayKit.m 88行
if (self.wxAppid && [urlString rangeOfString:self.wxAppid].location != NSNotFound)
这个if判断可以多判断一个条件:
未屏蔽支付的版本
if (self.wxAppid && [urlString rangeOfString:self.wxAppid].location != NSNotFound && [urlString containsString:@"://pay"])
屏蔽支付的版本
if (self.wxAppid && [urlString rangeOfString:self.wxAppid].location != NSNotFound && ![urlString containsString:@"auth"])

我有微信登录,崩溃了

之前集成了微信登录,现在导入你这个,崩溃在
if ([urlString rangeOfString:self.wxAppid].location != NSNotFound)

openID

你好!审核版跟原版比较只是文件名字变了是吗?我这边调起微信支付没有openID这个参数

这个库不行了,进了苹果黑名单了

Specifically, we found that your app includes XHPayKit, AliPay (支付寶), which provides access to external payment mechanisms and enables the purchase of content, services, or functionality by means other than the in-app purchase API.

'XHPKit','1.0.3'还能继续使用吗

由于iOS13 回收 App 的 bundle ID 的能力,为了保证 App 支付来源的真实性和可认知性,
微信支付在已有 Bundle ID 校验能力的基础上,增加了 Universal Links 校验能力。

商户 App 发起支付时,若没有正确更新 SDK,会出现无 bundle ID、无 Universal Links 的情况。
微信支付无法判定此类订单的交易来源 App,可能会出现实际使用商户号的来源和商户号所属的 App 不一致,
导致商户号被利用于欺诈、赌博等违法违规行为,存在交易风险。

为了保证交易安全,微信支付升级了微信支付 OpenSDK 版本,请您在2022年1月1日之前完成升级,
并合理引导用户升级您的App。逾期未完成的,可能导致用户在您的APP内发起微信支付交易时,
受到风控措施限制。如果贵司是自行开发的 App 支付功能,请联系贵司的 App 开发人员按以下指引完成升级;
如果贵司是委托服务商或其他第三方公司开发的 App 支付功能,请联系服务商或第三方公司协助完成升级。

如果不用微信SDK,是否可以实现多商户支付?

平常我们如果集成微信SDK就要先用AppID注册微信SDK,而且这个AppID一般是写死的,不能动态生成.
用了该框架之后,是否可以动态从服务器取得AppID,不必在客户端写死呢?

    // 注册微信SDK
    [WXApi registerApp:WXAPPID];

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.