服务器需要接入小米支付, 但是官网只有java和php版本,因此签名解析需要自己写

实行步骤:

1. 用eclipse打开java版本支付用例,加入mainClass文件,代码如下:

package com.xiaomi.migc.server.sdk;
import java.io.File;
import java.util.HashMap;
import java.util.Map;
public class mainClass {
private static String getSign(Mapparams) throws Exception{
String signString = ParamUtil.getSortQueryString(params);
return HmacSHA1Encryption.hmacSHA1Encrypt(signString, "QFehjb0X8qEhbkpi380GTQ=1");
}
public static void main(String args[]){
MapmapInfo = new HashMap();
mapInfo.put("appId", "2882303761517239138");
mapInfo.put("cpOrderId", "9786bffc-996d-4553-aa33-f7e92c0b29d5");
mapInfo.put("orderConsumeType", "10");
mapInfo.put("orderId", "21140990160359583390");
mapInfo.put("orderStatus", "TRADE_SUCCESS");
mapInfo.put("payFee", "1");
mapInfo.put("payTime", "2014-09-05%2015:20:27");
mapInfo.put("productCode", "com.demo_1");
mapInfo.put("productCount", "1");
mapInfo.put("productName", "银子1两");
mapInfo.put("uid", "100010");
try {
System.out.println(mainClass.getSign(mapInfo));
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
生成测试用例:121f401e6e92fa8d8bb45392b8102891a058c1be
2. 编写golang代码,并测试,代码如下:
package main
import (
"crypto/hmac"
"crypto/sha1"
"fmt"
"net/url"
"sort"
)
func CheckXiaoMiPay(urlInfo url.Values) bool {
mapKeyInfo := map[string]string{}
var slKeys sort.StringSlice
for key, _ := range urlInfo {
if key == `signature` {
continue
}
mapKeyInfo[key] = urlInfo.Get(key)
slKeys = append(slKeys, key)
}
//check success
slKeys.Sort()
var sText string
for _, key := range slKeys {
sText = sText + key + `=` + mapKeyInfo[key] + `&`
}
if len(sText) != 0 {
sText = sText[:len(sText)-1]
}
sEncrypt := getEncryptKey(sText, "QFehjb0X8qEhbkpi380GTQ=1")
fmt.Println(sEncrypt)
return sEncrypt == urlInfo.Get(`signature`)
}
func getEncryptKey(sText string, appSecret string) string {
mac := hmac.New(sha1.New, []byte(appSecret))
mac.Write([]byte(sText))
slBytes := mac.Sum(nil)
if slBytes == nil {
return ``
}
var strRtn string
for _, aByte := range slBytes {
strRtn = strRtn + fmt.Sprintf("%02x", aByte)
}
return strRtn
}
func main() {
urlData := url.Values{
"appId":            []string{"2882303761517239138"},
"cpOrderId":        []string{"9786bffc-996d-4553-aa33-f7e92c0b29d5"},
"orderConsumeType": []string{"10"},
"orderId":          []string{"21140990160359583390"},
"orderStatus":      []string{"TRADE_SUCCESS"},
"payFee":           []string{"1"},
"payTime":          []string{"2014-09-05%2015:20:27"},
"productCode":      []string{"com.demo_1"},
"productCount":     []string{"1"},
"productName":      []string{"银子1两"},
"uid":              []string{"100010"},
"signature":        []string{"121f401e6e92fa8d8bb45392b8102891a058c1be"},
}
fmt.Println(CheckXiaoMiPay(urlData))
}

经过测试打印为true,服务器程序只需要复制上面俩个函数,即可对签名进行确认。

go语言 服务器接入小米支付SDK相关推荐

  1. air游戏接入小米支付sdk

    小米支付sdk要求在Application.onCreate中进行初始化 为了这个初始化搞了半天,终于搞定了,今天将更改的步骤记录下了. 1. 创建ANE,ANE的创建就不罗嗦了,这里需要注意一点,这 ...

  2. Unity接入微信支付SDK

    最近1年转了UE开发,博客更新的比较少,技术栈宽了不少,以后有空尽量多更新,也方便总结记忆 Unity接入微信支付整个过程坑比较多,网上之前的教程要么比较老,要么比较零碎,只能东拼西凑摸索,跑通后还是 ...

  3. 小米支付SDK接入注意事项

    因为工作的性质经常会接触android渠道的的支付SDK,所以暂时会做一个小系列的总结,只是对于一些疑难的地方. 小米的SDK接入中经常会出现在确定包名,AppId,AppKey的正确情况下,还是不能 ...

  4. Unity3D游戏接入小米广告SDK

    此文章只讲Unity与Android核心交互代码 详细接入可参考小米广告 SDK Android 集成指南 小米广告常用有四种,1.开屏广告.2.Banner横幅广告.3.插屏广告.4.激励视频广告. ...

  5. cocos creator Android 接入Google支付sdk

    准备工作 1.手机上安装Google服务 2.一个绑定信用卡的Google账号: 3.Google play客户端: 4..Google Play开发者后台创建应用 5.科学上网的工具 -等等 这些就 ...

  6. 微信支付SDK接入流程梳理

    微信SDK的支付功能接入简单梳理. 首先说一下,你需要的官网都有,但是官网提供的东西不管新旧与否先给你放上去,部分地方提供的链接点击时还提示404,不同的页面提示相同的下载内容(demo)还不一样,表 ...

  7. 小米云网站服务器错误代码,小米健康云开放平台iOS SDK使用指南

    概要 现阶段本产品只对小米生态链企业及合作伙伴正式开放. 使用说明 这里介绍如何配置和使用小米健康服务iOS客户端SDK,您也可以参照Demo来配置和使用小米健康服务. 在使用小米健康服务前,开发者需 ...

  8. 支付宝sdk服务器文档,移动支付sdk

    移动支付sdk 内容精选 换一换 物联网企业在拓展全球业务时面临一些挑战,如:需要跨地域采购物理SIM卡,生产地无法测试目的地网络状态.网络和协议复杂多样,设备上云开发量大,全球接入难,工作量大.全球 ...

  9. SDK实战(小米支付流程)

    购买界面 请求服务 服务器返回订单号,给SDK发个消息,去连SDK支付 SDK支付 SDK中的支付调用 结果发回UNITY unity中对结果处理 服务器发货了 小米打包AAR经验 1.和 activ ...

最新文章

  1. php当前日期的时间戳,php – 获取当前的ISO8601日期/时间戳
  2. 【面试精选】关于大型网站系统架构你不得不懂的10个问题
  3. 计算机网络职称可以免考么,谁知道四川职称计算机考试的免考条件啊,我要去评职称,但不想去考职? 爱问知识人...
  4. python3.8新特性 逻辑表达式_python 3.8 新特性
  5. 合并数据 - 方法总结(concat、append、merge、join、combine_first)- Python代码
  6. 企业即时通讯市场增长500%
  7. 4.Java 面试题整理(JSP 篇)
  8. C语言之文件读写探究(五):rewind、ftell、fseek(文件指针偏移)
  9. Java并发笔记-未完待续待详解
  10. H3C 单路径网络中环路产生过程(3)
  11. 怎样定义函数,调用函数
  12. 使用JavaScript调用手机平台上的原生API 1
  13. 编译DXperience 7.1源码和升级原有的应用程序
  14. OutMan——Foundation框架中的NSDate类、NSCalendar类以及NSFileManager类
  15. Java常见问题之Data too long for column 'orResponse' at row 1
  16. 把你问到哑口无言,HR是专业的!
  17. GPS设置及原理教程-如何通过修改gps.conf文件来提高搜星速度
  18. 微信公众号post方法Java_Java HttpClient 如何伪装微信浏览器进行POST请求
  19. 华为服务器扩容内存进不去系统,服务器内存扩容难点
  20. 我的世界java活板门会被烧没_《我的世界》新版1.14的活板门特性改变了?玩家开发出新的玩法!...

热门文章

  1. surface安linux双系统,1月 23 surface pro 3. windows ubuntu 双系统安装
  2. Hadoop大数据平台搭建(一)
  3. 实现类似塔读掌阅的Toast
  4. 活动:CEO德州扑克大赛 营销大课
  5. Java实现读者写者问题--读者优先
  6. Python学生通讯录管理系统案例(文件版)
  7. 小白web学习笔记--信息收集
  8. H5跳转小程序 小程序跳转小程序(通用,包括企微和浏览器)
  9. 如何从u盘启动选择修复计算机,电脑设置从u盘启动蓝屏怎么修复_电脑进入u盘启动蓝屏如何解决...
  10. GsonFormat.jar下载与安装