c#生成支付宝签名(hbuilder上调用)
2016-03-18 18:54
363 查看
下了无数次SDK。。。
SDK地址(即时到账):https://doc.open.alipay.com/doc2/detail?treeId=54&articleId=103419&docType=1#s2
其他产品功能中即时到账的DEMO,下载下来放到项目中。
主要是app_code中的AlipayConfig.cs,配置好商户ID、公钥秘钥、回调地址可以不写、签名方式 RSA。
编码格式根据放进去的格式填,我的是utf-8。
公钥秘钥怎么生成:https://help.alipay.com/support/help_detail.htm?help_id=397433&keyword=%C3%DC%D4%BF
照着上面的网站操作就可以了
注意:.NET可以不用pkcs8 加密,JAVA才需要。
发送部分:
price是金额。
hbuilder部分:
地址:http://ask.dcloud.net.cn/article/197
SDK地址(即时到账):https://doc.open.alipay.com/doc2/detail?treeId=54&articleId=103419&docType=1#s2
其他产品功能中即时到账的DEMO,下载下来放到项目中。
主要是app_code中的AlipayConfig.cs,配置好商户ID、公钥秘钥、回调地址可以不写、签名方式 RSA。
编码格式根据放进去的格式填,我的是utf-8。
公钥秘钥怎么生成:https://help.alipay.com/support/help_detail.htm?help_id=397433&keyword=%C3%DC%D4%BF
照着上面的网站操作就可以了
注意:.NET可以不用pkcs8 加密,JAVA才需要。
发送部分:
price是金额。
public object GetPayInfo(HttpContext context)//_amount:付款金额 { string _amount = context.Request["price"]; string orderInfo = OrderInfo(_amount); // 对订单做RSA 签名 string sign = RSAFromPkcs8.sign(orderInfo, Config.private_key, Config.input_charset); //支付宝提供的Config.cs //仅需对sign做URL编码 sign = HttpUtility.UrlEncode(sign, Encoding.UTF8); string payInfo = orderInfo + "&sign=\"" + sign + "\"&" + getSignType(); return payInfo; } public string OrderInfo(string price) { Dictionary<string, string> payinfo = new Dictionary<string, string>(); payinfo.Add("service", "\"mobile.securitypay.pay\""); payinfo.Add("partner", "\"" + Config.partner + "\""); payinfo.Add("seller_id", "\"" + Config.partner + "\""); payinfo.Add("out_trade_no", "\"" + DateTime.Now.ToString("yyyyMMddHHmmssfff")+ "\""); payinfo.Add("subject", "\"上海公司\""); payinfo.Add("body", "\"*****\""); payinfo.Add("total_fee", "\"" + price.ToString() + "\""); payinfo.Add("notify_url", "\"***********\""); payinfo.Add("payment_type", "\"1\""); payinfo.Add("_input_charset", "\"UTF-8\""); payinfo.Add("it_b_pay", "\"30m\""); return Core.CreateLinkString(payinfo); } public String getSignType() { return "sign_type=\"RSA\""; }</span>hbuilder收到这返回值就能支付了。
hbuilder部分:
function topay(rate) { if (w) { return; } //检查是否请求订单中 w = plus.nativeUI.showWaiting(); mui.getJSON("http://************/api/Pay", { _amount: rate }, function(data) { w.close(); w = null; if (data) { plus.payment.request(pays["alipay"], data, function(result) { plus.nativeUI.alert("支付成功:感谢您的支持。", function() { mui.back(); }, "****"); }, function(error) { if (error.code == 62001) { mui.toast("您放弃支付."); mui.back(); } else { plus.nativeUI.alert("支付失败", null, "请前往会员中心再次对该订单尝试支付,支付失败:" + error.code); } }); } }); }
地址:http://ask.dcloud.net.cn/article/197
相关文章推荐
- Arduino通过串口发送结构体
- 探秘Java中String、StringBuilder以及StringBuffer
- hbuilder上传图片
- 45.自定义导航栏 UINavigationBar
- java.lang.IllegalArgumentException: Result Maps collection does not contain value forcom.imooc.bean
- 扣丁学堂笔记第03天基础UI组件(一)
- iOS--通讯录(UITableViewController)
- SystemUI之功能介绍和UI布局实现
- iOS开发——UITableView(未完,待续...)
- UITableViewCell长按才会响应
- 改变UITextField placeHolder颜色、字体 、输入光标位置等
- UIView常用方法之setNeedsDisplay和setNeedsLayout
- easyui datagrid 悬浮事件
- 浅谈ios设计之使用表格UITableVIew设计通讯录的方法
- UnicodeEncodeError: 'gbk' codec can't encode character '\xbb' in position 0: illegal multibyte seque
- 多语言values文件夹创建
- UIBezierPath贝塞尔弧线常用方法记
- ios TableView那些事(三十 五)TableView 单选操作使用Autolayout实现UITableView的Cell动态布局和高度动态改变
- 菜鸟成长记-UICollectionView使用
- DMX512 for Arduino 例子详解