当前位置: 首页 > news >正文

二级域名 wordpress/郑州seo优化阿亮

二级域名 wordpress,郑州seo优化阿亮,黄山旅游攻略 知乎,wordpress 输出豆瓣1.支付流程 https://pay.weixin.qq.com/wiki/doc/api/app.php?chapter8_3 商户系统和微信支付系统主要交互说明: 步骤1:用户在商户APP中选择商品,提交订单,选择微信支付。 步骤2:商户后台收到用户支付单,调…

1.支付流程

https://pay.weixin.qq.com/wiki/doc/api/app.php?chapter=8_3

商户系统和微信支付系统主要交互说明:

步骤1:用户在商户APP中选择商品,提交订单,选择微信支付。

步骤2:商户后台收到用户支付单,调用微信支付统一下单接口。

步骤3:统一下单接口返回正常的prepay_id,再按签名规范重新生成签名后,将数据传输给APP。参与签名的字段名为appId,partnerId,prepayId,nonceStr,timeStamp,package。注意:package的值格式为Sign=WXPay

步骤4:商户APP调起微信支付。

步骤5:商户后台接收支付通知。

步骤6:商户后台查询支付结果。

2. 将微信支付的SDK塞进工程

3.配置info.plist

a.schemes

b.白名单

c.安全配置支持Http

4.配置路径

Library search Paths : $(PROJECT_DIR)/XWMerchant/ThirdParts/Wechat/SDKExport

5. 配置payRequsestHandler.h文件

#define APPP_ID         @""               //APPID

#define APP_SECRET      @"" //appsecret

//商户号,填写商户对应参数

#define MCH_ID          @""

//商户API密钥,填写相应参数为了MD5加密

#define PARTNER_ID      @""

//支付结果回调页面

#define NOTIFY_URL      @"http://wxpay.weixin.qq.com/pub_v2/pay/notify.v2.php"

//获取服务器端支付数据地址(商户自定义)

#define SP_URL          @"http://wxpay.weixin.qq.com/pub_v2/app/app_pay.php"

6.支付

a.在

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 方法中注册一下先:

if ([WXApi registerApp:APPP_ID withDescription:@"weixin"]){

        DLog(@"注册成功");

    }else{

        DLog(@"注册失败");

    }

b.在

- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation代理中

if ([url.host isEqualToString:@"pay"]) {

        [WXApi handleOpenURL:url delegate:self];

    }支持回调

c.在需要支付的页面调用如下方法,记得包含头文件

#pragma mark   ==============微信支付==============- (void) wechatPay:(NSDictionary *)dic{//目前只需要prepay_idNSLog(@"开始微信支付");//首先判断是否安装wechatif([WXApi isWXAppInstalled]){//生成订单
            NSLog(@"l-----:%@ ",dic);NSString *prePayid = dic[@"prepay_id"];//        //获取到prepayid后进行第二次签名
        NSString    *package, *time_stamp, *nonce_str;//设置支付参数
        time_t now;time(&now);time_stamp  = [NSString stringWithFormat:@"%ld", now];nonce_str    = [WXUtil md5:time_stamp];//重新按提交格式组包,微信客户端暂只支持package=Sign=WXPay格式,须考虑升级后支持携带package具体参数的情况//package       = [NSString stringWithFormat:@"Sign=%@",package];package         = @"Sign=WXPay";//第二次签名参数列表NSMutableDictionary *signParams = [NSMutableDictionary dictionary];[signParams setObject: APPP_ID        forKey:@"appid"];[signParams setObject: nonce_str    forKey:@"noncestr"];[signParams setObject: package      forKey:@"package"];[signParams setObject: MCH_ID        forKey:@"partnerid"];[signParams setObject: time_stamp   forKey:@"timestamp"];[signParams setObject: prePayid     forKey:@"prepayid"];//[signParams setObject: @"MD5"       forKey:@"signType"];//生成签名NSString *sign  = [self createMd5Sign:signParams];//获取微信预付款idif ( prePayid != nil && sign != nil) {//调起微信支付PayReq* req             = [[PayReq alloc] init];req.openID              = APPP_ID;//req.partnerId           = MCH_ID;//商户号req.prepayId            = prePayid;//预付订单号,后台返回的req.nonceStr            = nonce_str;//随机串            req.timeStamp           = time_stamp.intValue;//时间戳            req.package             = @"Sign=WXPay";//此地方一定要写成这种格式,后台生成预付订单时也是如此,不要写成prepay_id = @"wx...."req.sign                = sign;            BOOL sendRes = [WXApi sendReq:req];if (sendRes) {NSLog(@"唤起成功");}else {NSLog(@"唤起失败");}//日志输出DLog(@"appid=%@\npartid=%@\nprepayid=%@\nnoncestr=%@\ntimestamp=%ld\npackage=%@\nsign=%@",req.openID,req.partnerId,req.prepayId,req.nonceStr,(long)req.timeStamp,req.package,req.sign );}else{DLog(@"预付订单生成失败");[XWPrompt showPromptMessage:@"订单失败"];}}else{[SMAlertView showAlertWithTitle:@"您还没有安装微信" message:@"是否安装?" cancelTitle:@"" cancelTitleColor:colorForDeepGrayNormal otherTitle:@"" otherTitleColor:colorForNavBgColor completion:^(BOOL cancelled) {if (!cancelled) {DLog(@"%d",cancelled);[[ UIApplication sharedApplication] openURL:[NSURL URLWithString:[WXApi getWXAppInstallUrl]]];}}];}
}//创建package签名
-(NSString*) createMd5Sign:(NSMutableDictionary*)dict
{NSMutableString *contentString  =[NSMutableString string];NSArray *keys = [dict allKeys];//按字母顺序排序NSArray *sortedArray = [keys sortedArrayUsingComparator:^NSComparisonResult(id obj1, id obj2) {return [obj1 compare:obj2 options:NSNumericSearch];}];//拼接字符串for (NSString *categoryId in sortedArray) {if (   ![[dict objectForKey:categoryId] isEqualToString:@""]&& ![categoryId isEqualToString:@"sign"]&& ![categoryId isEqualToString:@"key"]){[contentString appendFormat:@"%@=%@&", categoryId, [dict objectForKey:categoryId]];}}//添加key字段[contentString appendFormat:@"key=%@", PARTNER_ID];//得到MD5 sign签名NSString *md5Sign =[WXUtil md5:contentString];return md5Sign;
}

基本上就能支付成功了,如不成功,请仔细检查一下plist文件的配置白名单,安全,sechems,路径,密钥PARTNER_ID,一定要二次签名,要不支付不成功,特别是唤起支付时[WXApi sendReq:req];总是不成功,而且后台生成预付订单时一定要package = @"Sign=WXPay" ,另一个最他妈坑的就是一定不要用shareSDK,它里面的微信分享的包和微信支付的包冲突,会唤起失败,我就是把shareSDK删除了就能唤起支付页面。微信分享用官网自带的吧,不要用第三分的集成了,太他妈的坑了,坑了半天的时间。就此支付成功了。。。。

转载于:https://www.cnblogs.com/yyzanll/p/4981465.html

http://www.lbrq.cn/news/1600057.html

相关文章:

  • 沈阳网站制作平台/谷歌广告联盟
  • 搭建论坛网站/百度助手下载
  • 做网赌网站怎么推广拉人/杭州seo推广服务
  • 中国4a广告公司有哪些/东莞seo推广
  • 廊坊怎么做网站/北京刚刚宣布比疫情更可怕的事情
  • 企业网站建设的常见流程/广东百度推广的代理商
  • 网站建设狼雨/海淀网站建设公司
  • 做搞基视频网站/推广营销app
  • 电商网站网址大全/关键字挖掘
  • 武冈 网站建设/app推广文案
  • 毕节市建设厅网站/百度搜索广告怎么收费
  • 重庆网站设计方案/公司软文代写
  • 做的好的ppt下载网站/百度站长收录提交入口
  • 网站怎么做发送邮件的超链接/东莞seo建站公司哪家好
  • 后台更改公司网站背景图片/百度推广手机版
  • 影视网站怎么做app/5118大数据平台官网
  • wordpress 本地运行慢/郑州网络seo公司
  • 微网站建设开发/推广方案设计
  • 苏州专业做网站/爱站网seo工具包
  • 一流的商城网站建设/台州网站建设方案推广
  • 微知微网站建设实训平台/朋友圈广告推广文字
  • 浙江做网站公司/百度一下网页版浏览器
  • 网站设计的流程简答题/天津seo优化公司
  • 专业网站设计专业服务/seo排名方案
  • 效果好企业营销型网站建设/数据交换平台
  • 企业做网站哪家好/济南新站seo外包
  • 淮南市住房与城乡建设部网站/百度首页纯净版
  • asp 网站路径泄露 解决/嘉兴关键词优化报价
  • 免费企业网站程序上传/武汉seo技术
  • 网站做报表/高清视频网络服务器
  • vllm启动Qwen/Qwen3-Coder-30B-A3B-Instruct并支持工具调用
  • 计算机网络(TCP篇)
  • io_setup系统调用及示例
  • 线程锁-互斥、自旋、读写、原子操作、线程池
  • 解锁智能油脂润滑系统:加速度与温振传感器选型协同攻略
  • 深入 Go 底层原理(三):Goroutine 的调度策略