NET C#实现微信小微商户进件API,微信小微商户申请
微信支付SDK
图片上传
using Helper.Http; using Model; using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Web; using WxPayAPI; namespace WechatXiaowei.upmedia { class upimage { /// <summary> /// 上传本地图片到微信服务器 /// </summary> /// <param name="filePath"></param> /// <returns></returns> public static result localfile(string filePath) { FileStream file = new FileStream(filePath, FileMode.Open); byte[] bb = new byte[file.Length]; file.Read(bb, 0, (int)file.Length); file.Close(); string fileName = Path.GetFileName(filePath); MsMultiPartFormData form = new MsMultiPartFormData(); string decodeName = HttpUtility.UrlDecode(Path.GetFileName(fileName));//最终服务器会按原文件名保存文件,所以需要将文件名编码下,防止中文乱码 string fileKeyName = "media"; form.AddStreamFile(fileKeyName, fileName, bb); string hashMd5 =HashHelper.ComputeMD5(filePath); WxPayData inputObj = new WxPayData(); inputObj.SetValue("mch_id", Config.GetMchID); inputObj.SetValue("media_hash", hashMd5); inputObj.SetValue("sign_type", "HMAC-SHA256"); //inputObj.SetValue("sign", inputObj.MakeSign());//签名 form.AddFormField("mch_id", Config.GetMchID); form.AddFormField("media_hash", hashMd5); form.AddFormField("sign_type", "HMAC-SHA256"); form.AddFormField("sign", inputObj.MakeSign());//签名 //最终接收文件上传的服务接口 string SERVICE_URL = "https://api.mch.weixin.qq.com/secapi/mch/uploadmedia"; string rst = Http.PostWithMsMultiPartFormData(inputObj.ToXml(), SERVICE_URL, form, true, 10); inputObj = new WxPayData(); inputObj.FromXml(rst); //返回实体结果 result result = null; if (inputObj.GetValue("return_code").ToString() == "SUCCESS") { result = new Model.upimage.result() { code = Result.SUCCESS, media_id = inputObj.GetValue("media_id").ToString() }; } else { result = new Model.upimage.result() { code = Result.FAIL, message = inputObj.GetValue("return_msg").ToString() }; } return result; } } }
关键:multipart/form-data 格式上传图片 + 签名
参考:https://blog.csdn.net/pjj802366/article/details/51645150
证书下载
证书下载接口API文档
关键1:Authorization加密信息生成
关键2:证书解密《通过以下PHP解决》
敏感信息加密(+证书解密)
敏感信息加密API说明
参考:https://blog.csdn.net/u010324331/article/details/81938979
注意:这个功能是通过PHP方式解决加密的问题
使用>Php7.2,开启下libsodium扩展。方法为:在php.ini 增加: extension=php_sodium.dll
$ciphertext = base64_decode($_POST['ciphertext']);
$ciphertext = base64_decode($_POST['ciphertext']); $associated_data= $_POST['associated_data']; $nonce = $_POST['nonce']; $aes_key= '自己设定key'; // sodium_crypto_aead_aes256gcm_decrypt >=7.2版本,去php.ini里面开启下libsodium扩展就可以,之前版本需要安装libsodium扩展, //具体查看php.net(ps.使用这个函数对扩展的版本也有要求哦,扩展版本 >=1.08) //$b= sodium_crypto_aead_aes256gcm_is_available(); $plaintext = sodium_crypto_aead_aes256gcm_decrypt($ciphertext, $associated_data, $nonce, $aes_key); //print_r( $plaintext,false ); //敏感信息加密 $string = $_POST['string']; $publicKeyResource = openssl_get_publickey($plaintext); $f= openssl_public_encrypt($string, $crypted, $publicKeyResource, OPENSSL_PKCS1_PADDING); openssl_free_key($publicKeyResource); if ($f) { print_r( base64_encode($crypted)); } ?>
身份证识别
腾讯云身份证识别API文档,免费次数:1000次/月
待续20180922
.库源码已放到到GitHub
日期: 2019 02 01不依赖PHP 独立完成加密处理
https://github.com/onsuper/XiaoWei