互联网科技将来跳槽用微信小程序

小程序,公众号,App的微信支付详解

2018-06-07  本文已影响42人  honey缘木鱼

现在我们好多开发应用几乎80%都用到了支付接口,小程序,公众号,App在微信支付上有什么相似于不同呢?

一.APP支付(https://open.weixin.qq.com
1.项目设置APPID

配置

2.业务流程


流程

3.下载并运行demo
其实把demo看明白了,直接运用到自己的app里,也不是不可以的
4.设置项目

  1. 在Xcode中,projectName-->Info-->URL Types 添加appid。设置之后才能实现应用间跳转
添加

2.导入sdk

2411791-a4695842aaa3155a.png

如果使用了pod,直接在Podfile中添加pod 'WechatOpenSDK' 然后执行 pod update即可。如果没有使用pod,在添加了sdk文件包之后,需要在pojectName-->General-->Linked Frameworks and Libraries 中添加相应内容


添加框架

3.代码
在AppDelegate.m 中的didFinishLaunchingWithOptions方法添加

[WXApi registerApp:@"wx00000000"];//注册appid
- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url {
    return  [WXApi handleOpenURL:url delegate:[PaymentManager sharedManager]];
}

- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation {
    return [WXApi handleOpenURL:url delegate:[PaymentManager sharedManager]];
}
// NOTE: 9.0以后使用新API接口
- (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary<NSString*, id> *)options
{
    return [WXApi handleOpenURL:url delegate:[PaymentManager sharedManager]];
}

作为前端开发,那些麻烦的签名都属于服务器端的,顿时有没有感觉很简单,下面及 就看一下具体。下面的步奏就是 小程序,公众号,App微信支付通用的前端方法。

1.先向服务器端请求接口,拿到订单号

2.根据订单号,再向服务器端请求一次,拿到微信所需要的串,就是各种签名算法

3.调用的微信支付方法分别为:
App代码:

   NSString *res = [WXApiRequestHandler jumpToBizPay:DESDecrypt];
 DESDecrypt就是后台返回的签名字符串。


+ (NSString * )jumpToBizPay:(NSString *)string
{
    if(string!=nil)
    {
        if([self booWeixin])
        {
            NSDictionary *dict = [IHUtility getWXString:string];
            PayReq* req             = [[PayReq alloc] init];
            req.partnerId           =   [dict valueForKey:@"partnerid"];
            req.prepayId            =[dict valueForKey:@"prepayid"];
            req.nonceStr            = [dict valueForKey:@"noncestr"];
            req.timeStamp           =  [[dict valueForKey:@"timestamp"] intValue];
            req.package             =  [dict valueForKey:@"package"];
            req.sign                = [dict valueForKey:@"sign"];
            [WXApi sendReq:req];
            return @"";
        }else
        {
            return @"请安装微信客户端";
        }
    }
   return @"支付失败";
}

+(BOOL)booWeixin{
    // 判断是否安装微信
    if ([WXApi isWXAppInstalled] ){
        return YES;
        //判断当前微信的版本是否支持OpenApi
//        if ([WXApi isWXAppSupportApi]) {
//            return YES;
//        }else{
//            NSLog(@"请升级微信至最新版本!");
//            return NO;
//        }
    }else{
        NSLog(@"请安装微信客户端");
        return NO;
    }
}

公众号代码:

注:JS API的返回结果get_brand_wcpay_request:ok仅在用户成功完成支付时返回。由于前端交互复杂,get_brand_wcpay_request:cancel或者get_brand_wcpay_request:fail可以统一处理为用户遇到错误或者主动放弃,不必细化区分。
示例代码如下:

function onBridgeReady(){
   WeixinJSBridge.invoke(
       'getBrandWCPayRequest', {
           "appId":"wx2421b1c4370ec43b",     //公众号名称,由商户传入     
           "timeStamp":"1395712654",         //时间戳,自1970年以来的秒数     
           "nonceStr":"e61463f8efa94090b1f366cccfbbb444", //随机串     
           "package":"prepay_id=u802345jgfjsdfgsdg888",     
           "signType":"MD5",         //微信签名方式:     
           "paySign":"70EA570631E4BB79628FBCA90534C63FF7FADD89" //微信签名 
       },
       function(res){     
           if(res.err_msg == "get_brand_wcpay_request:ok" ) {}     // 使用以上方式判断前端返回,微信团队郑重提示:res.err_msg将在用户支付成功后返回    ok,但并不保证它绝对可靠。 
       }
   ); 
}
if (typeof WeixinJSBridge == "undefined"){
   if( document.addEventListener ){
       document.addEventListener('WeixinJSBridgeReady', onBridgeReady, false);
   }else if (document.attachEvent){
       document.attachEvent('WeixinJSBridgeReady', onBridgeReady); 
       document.attachEvent('onWeixinJSBridgeReady', onBridgeReady);
   }
}else{
   onBridgeReady();
}

小程序代码:

wx.requestPayment(
{
'timeStamp': '',
'nonceStr': '',
'package': '',
'signType': 'MD5',
'paySign': '',
'success':function(res){},
'fail':function(res){},
'complete':function(res){}
})

注意:appId都是不一样的,在App的在开发平台(https://open.weixin.qq.com),小程序,公众号的在公众平台(https://mp.weixin.qq.com

App的官方demo很类似,,小程序的在我(https://www.jianshu.com/p/b7e841c551e0

如有问题,请多多指教!

上一篇下一篇

猜你喜欢

热点阅读