微信微信支付统一下单单支付单信息有什么用

微信:微信扫码支付、调用统一下单接口、网站支付 + springmvc
我的图书馆
微信:微信扫码支付、调用统一下单接口、网站支付 + springmvc
Springmvc(6)
Java 基础(36)
版权声明:本文为博主原创文章,未经博主允许不得转载。
一、场景:公司需要在网站上进行微信支付。
二、API:使用微信开放平台的接入微信支付
-扫码支付。
三、分析:
接入扫码支付(包含PC网站支付)包含三个阶段,问这里只讲使用,也就是第2阶段的《启动设计和开发》。点击查看开发者文档(扫码支付)后,这里感觉微信的文档没有支付宝好理解(稍微吐槽下~~~),不过我们忽略一切,直接进入模式二:模式二最简单直接,不需要在商户后台进行配置,推荐大家使用,微信也说流程更为简单,我这里也讲的是模式二,模式一大家有兴趣可以自行研究下。如上图,总流程有14步,主要流程是生成订单、调统一下单API、将返回的支付交易链接生成二维码展示;我这边主要就是将这三步结合springmvc后,成功生儿二维码之后,用户就可以扫码支付了。后面的回调跟跟我的另一篇博文基本类似,大家借鉴下就行了:
四、实现:
准备:根据我先定义了三个对象:UnifiedOrderRequest(统一下单请求参数(必填))、UnifiedOrderRequestExt(统一下单请求参数(非必填))、UnifiedOrderRespose(统一下单返回参数);具体如下代码,get、set方法可自行生产,太占篇幅。
UnifiedOrderRequest.class[javascript]
/**&&*&统一下单请求参数(必填)&&*&@author&Y&&*&&*/&&public&class&UnifiedOrderRequest&{&&&&&&private&String&&&&&&&&&&&&&&&&//公众账号ID&&&&&&private&String&mch_&&&&&&&&&&&&&&//商户号&&&&&&private&String&nonce_&&&&&&&&&&&//随机字符串&&&&&&private&String&&&&&&&&&&&&&&&&&//签名&&&&&&private&String&&&&&&&&&&&&&&&&&//商品描述&&&&&&private&String&out_trade_&&&&&&&&&span&style="white-space:pre"&&&&&&/span&//商户订单号&&&&&&private&String&total_&&&&&&&&&&&//总金额&&&&&&private&String&spbill_create_&&&&&span&style="white-space:pre"&&&&&&/span&//终端IP&&&&&&private&String&notify_&&&&&&&&&&//通知地址&&&&&&private&String&trade_&&&&&&&&&&//交易类型&&}&&UnifiedOrderRequestExt.class[javascript]
/**&&*&统一下单请求参数(非必填)&&*&@author&Y&&*&&*/&&public&class&UnifiedOrderRequestExt&extends&UnifiedOrderRequest{&&&&&&&&&&&&private&String&device_&&&&&&&&&//设备号&&&&&&private&String&&&&&&&&&&&&&&&//商品详情&&&&&&private&String&&&&&&&&&&&&&&&//附加数据&&&&&&private&String&fee_&&&&&&&&&&&&//货币类型&&&&&&private&String&time_&&&&&&&&&&//交易起始时间&&&&&&private&String&time_&&&&&&&&&//交易结束时间&&&&&&private&String&goods_&&&&&&&&&&&//商品标记&&&&&&private&String&product_&&&&&&&&&&//商品ID&&&&&&private&String&limit_&&&&&&&&&&&//指定支付方式&&&&&&private&String&&&&&&&&&&&&&&&//用户标识&&}&&UnifiedOrderRespose.class[javascript]
/**&&*&统一下单返回参数&&*&@author&Y&&*&&*/&&public&class&UnifiedOrderRespose&{&&&&&&private&String&return_&&&&&&&&&&&&&//返回状态码&&&&&&private&String&return_&&&&&&&&&&&&&&//返回信息&&&&&&private&String&&&&&&&&&&&&&&&&&&&&//公众账号ID&&&&&&private&String&mch_&&&&&&&&&&&&&&&&&&//商户号&&&&&&private&String&device_&&&&&&&&&&&&&//设备号&&&&&&private&String&nonce_&&&&&&&&&&&&&&&//随机字符串&&&&&&private&String&&&&&&&&&&&&&&&&&&&&&//签名&&&&&&private&String&result_&&&&&&&&&&&&&//业务结果&&&&&&private&String&err_&&&&&&&&&&&&&&&&//错误代码&&&&&&private&String&err_code_&&&&&&&&&&&&&span&style="white-space:pre"&&&&&&/span&//错误代码描述&&&&&&private&String&trade_&&&&&&&&&&&&&&//交易类型&&&&&&private&String&prepay_&&&&&&&&&&&&&&&//预支付交易会话标识&&&&&&private&String&code_&&&&&&&&&&&&&&&&//二维码链接&&}&&Controller主入口:[javascript]
/**&&*&创建二维码&&*/&&@RequestMapping("createQRCode")&&public&void&createQRCode(String&orderId,&HttpServletResponse&response)&{&&&&&&&&&&&&//生成订单&&&&&&String&orderInfo&=&createOrderInfo(orderId);&&&&&&//调统一下单API&&&&&&String&code_url&=&httpOrder(orderInfo);&&&&&&//将返回预支付交易链接(code_url)生成二维码图片&&&&&&//这里使用的是zxing&&&&span&style="color:#ff0000;"&&strong&说明1(见文末)&/strong&&/span&&&&&&&try&{&&&&&&&&&&int&width&=&200;&&&&&&&&&&int&height&=&200;&&&&&&&&&&String&format&=&"png";&&&&&&&&&&Hashtable&hints&=&new&Hashtable();&&&&&&&&&&hints.put(EncodeHintType.CHARACTER_SET,&"utf-8");&&&&&&&&&&BitMatrix&bitMatrix&=&new&MultiFormatWriter().encode(code_url,&BarcodeFormat.QR_CODE,&width,&height,&hints);&&&&&&&&&&OutputStream&out&=&null;&&&&&&&&&&out&=&response.getOutputStream();&&&&&&&&&&MatrixToImageWriter.writeToStream(bitMatrix,&format,&out);&&&&&&&&&&out.flush();&&&&&&&&&&out.close();&&&&&&}&catch&(Exception&e)&{&&&&&&}&&&&}&&
生成订单:分两部分:一部分是业务需求的订单信息,就是发起支付前的订单信息,业务系统自行创建存储;另一部分是满足统一下单API要求的订单信息(也是我们这里要讲的)。“xxxxxx”:是你需要自己填写的对应信息:[javascript]
/**&&*&生成订单&&*&@param&orderId&&*&@return&&*/&&private&String&createOrderInfo(String&orderId)&{&&&&&&//生成订单对象&&&&&&UnifiedOrderRequest&unifiedOrderRequest&=&new&UnifiedOrderRequest();&&&&&&unifiedOrderRequest.setAppid("xxxxxxxxxxxxx");//公众账号ID&&&&&&unifiedOrderRequest.setMch_id("xxxxxxxxx");//商户号&&&&&&unifiedOrderRequest.setNonce_str(StringUtil.makeUUID());//随机字符串&&&&&&&&span&style="color:#ff0000;"&&strong&说明2(见文末)&/strong&&/span&&&&&&&unifiedOrderRequest.setBody("xxxxxx");//商品描述&&&&&&unifiedOrderRequest.setOut_trade_no(orderId);//商户订单号&&&&&&unifiedOrderRequest.setTotal_fee("x");&&//金额需要扩大100倍:1代表支付时是0.01&&&&&&unifiedOrderRequest.setSpbill_create_ip("xxxxxxxxxxxxx");//终端IP&&&&&&unifiedOrderRequest.setNotify_url("xxxxxxxxxxxxxx");//通知地址&&&&&&unifiedOrderRequest.setTrade_type("NATIVE");//JSAPI--公众号支付、NATIVE--原生扫码支付、APP--app支付&&&&&&unifiedOrderRequest.setSign(createSign(unifiedOrderRequest));//签名&span&style="color:#ff0000;"&&strong&说明5(见文末,签名方法一并给出)&/strong&&/span&&&&&&&//将订单对象转为xml格式&&&&&&XStream&xStream&=&new&XStream(new&XppDriver(new&XmlFriendlyNameCoder("_-",&"_")));&//&span&style="color:#ff0000;"&&strong&说明3(见文末)&/strong&&/span&&&&&&&xStream.alias("xml",&UnifiedOrderRequest.class);//根元素名需要是xml&&&&&&return&xStream.toXML(unifiedOrderRequest);&&}&&
调统一下单API:根据要求将生成订单中返回的xml向微信给定的统一下单URL地址:https://api.mch.weixin.qq.com/pay/unifiedorder,发送请求,成功并获得二维码。[javascript]
/**&&*&调统一下单API&&*&@param&orderInfo&&*&@return&&*/&&private&String&httpOrder(String&orderInfo)&{&&&&&&String&url&=&"https://api.mch.weixin.qq.com/pay/unifiedorder";&&&&&&try&{&&&&&&&&&&HttpURLConnection&conn&=&(HttpURLConnection)&new&URL(url).openConnection();&&&&&&&&&&//加入数据&&&&&&&&&&&&&&&conn.setRequestMethod("POST");&&&&&&&&&&&&&&&conn.setDoOutput(true);&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&BufferedOutputStream&buffOutStr&=&new&BufferedOutputStream(conn.getOutputStream());&&&&&&&&&&&&&&&buffOutStr.write(orderInfo.getBytes());&&&&&&&&&&&&&buffOutStr.flush();&&&&&&&&&&&&&&&buffOutStr.close();&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&//获取输入流&&&&&&&&&&&&&&&BufferedReader&reader&=&new&BufferedReader(new&InputStreamReader(conn.getInputStream()));&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&String&line&=&null;&&&&&&&&&&&&&&&StringBuffer&sb&=&new&StringBuffer();&&&&&&&&&&&&&&&while((line&=&reader.readLine())!=&null){&&&&&&&&&&&&&&&&&&&sb.append(line);&&&&&&&&&&&&&&&}&&&&&&&&&&&&&&&&&&&&&&&&&&&&XStream&xStream&=&new&XStream(new&XppDriver(new&XmlFriendlyNameCoder("_-",&"_")));//说明3(见文末)&&&&&&&&&&&&&//将请求返回的内容通过xStream转换为UnifiedOrderRespose对象&&&&&&&&&&&&&xStream.alias("xml",&UnifiedOrderRespose.class);&&&&&&&&&&&&&UnifiedOrderRespose&unifiedOrderRespose&=&(UnifiedOrderRespose)&xStream.fromXML(sb.toString());&&&&&&&&&&&&&&&&&&&&&&&&&&//根据微信文档return_code&和result_code都为SUCCESS的时候才会返回code_url&&&&&&&&&&&&&//&span&style="color:#ff0000;"&&strong&说明4(见文末)&/strong&&/span&&&&&&&&&&&&&&if(null!=unifiedOrderRespose&&&&&&&&&&&&&&&&&&&&&&"SUCCESS".equals(unifiedOrderRespose.getReturn_code())&&&&&&&&&&&&&&&&&&&&&&"SUCCESS".equals(unifiedOrderRespose.getResult_code())){&&&&&&&&&&&&&&return&unifiedOrderRespose.getCode_url();&&&&&&&&&&&&&}else{&&&&&&&&&&&&&&return&null;&&&&&&&&&&&&&}&&&&&&}&catch&(Exception&e)&{&&&&&&&&&&e.printStackTrace();&&&&&&}&&&&&&return&null;&&}&&
将返回的支付交易链接生成二维码展示:没有异常的情况下,在页面中使用&img&标签接收就行。实际使用时,结合前端和业务的需求放置二维码。可以在中找到部分素材和界面规范来设计微信风格的支付页面。[javascript]
&img&src="${ctx}/wxPay/createQRCode?orderId=1111"&width="174px"&&&
用户可以通过维系客户端进行扫码支付。支付完成后回调我们notify_url设置的url,通过成功的回调来更改业务系统中的订单状态或者一些业务需求。这里回调没有写出可以参考中的回调。
五、说明:
二维码可以查看;微信这边也提供了二维码的学习,大家有兴趣可以看看:&和
随机字符串:微信对随机字符串的要求是不超过32位。我这边是这样生成的,用时间戳。[javascript]
/**&&*&创建UUID&&*&@return&&*/&&public&static&synchronized&String&makeUUID()&{&&&&&&Date&date&=&new&Date();&&&&&&StringBuffer&s&=&new&StringBuffer(DateUtil.formatYmdhmsm(date));&&&&&&return&s.append((new&Random().nextInt(900)&+&100)).toString();&&}&&
使用Xstream时,由于微信定义的变量名大部分使用了“_”,但是在Xstream中它是关键字,所以会自动变为“__”,引起报错。详情请看:
获取二维码链接时,只有在return_code&和result_code都为SUCCESS的时候有返回;这里我就简单的满足时返回,不满足返回null,您写的时候需要结合业务考虑下,是否需要增加判断,从而满足不同的业务场景。
签名在上面一直没有详细说明,首先查看微信的中签名算法。key值,需要自己填写[javascript]
/**&&*&生成签名&&*&&&*&@param&appid_value&&*&@param&mch_id_value&&*&@param&productId&&*&@param&nonce_str_value&&*&@param&trade_type&&&*&@param&notify_url&&&*&@param&spbill_create_ip&&&*&@param&total_fee&&&*&@param&out_trade_no&&&*&@return&&*/&&private&String&createSign(UnifiedOrderRequest&unifiedOrderRequest)&{&&&&&&//根据规则创建可排序的map集合&&&&&&SortedMap&String,&String&&packageParams&=&new&TreeMap&String,&String&();&&&&&&packageParams.put("appid",&unifiedOrderRequest.getAppid());&&&&&&packageParams.put("body",&unifiedOrderRequest.getBody());&&&&&&packageParams.put("mch_id",&unifiedOrderRequest.getMch_id());&&&&&&packageParams.put("nonce_str",&unifiedOrderRequest.getNonce_str());&&&&&&packageParams.put("notify_url",&unifiedOrderRequest.getNotify_url());&&&&&&packageParams.put("out_trade_no",&unifiedOrderRequest.getOut_trade_no());&&&&&&packageParams.put("spbill_create_ip",&unifiedOrderRequest.getSpbill_create_ip());&&&&&&packageParams.put("trade_type",&unifiedOrderRequest.getTrade_type());&&&&&&packageParams.put("total_fee",&unifiedOrderRequest.getTotal_fee());&&&&&&&&StringBuffer&sb&=&new&StringBuffer();&&&&&&Set&es&=&packageParams.entrySet();//字典序&&&&&&Iterator&it&=&es.iterator();&&&&&&while&(it.hasNext())&{&&&&&&&&&&Map.Entry&entry&=&(Map.Entry)&it.next();&&&&&&&&&&String&k&=&(String)&entry.getKey();&&&&&&&&&&String&v&=&(String)&entry.getValue();&&&&&&&&&&//为空不参与签名、参数名区分大小写&&&&&&&&&&if&(null&!=&v&&&&!"".equals(v)&&&&!"sign".equals(k)&&&&&&&&&&&&&&&&&&&&&!"key".equals(k))&{&&&&&&&&&&&&&&sb.append(k&+&"="&+&v&+&"&");&&&&&&&&&&}&&&&&&}&&&&&&//第二步拼接key,key设置路径:微信商户平台(pay.weixin.qq.com)--&账户设置--&API安全--&密钥设置&&&&&&sb.append("key="&+"xxxxxxxxxxxxxxxxx");&&&&&&String&sign&=&MD5Util.MD5Encode(sb.toString(),&"utf-8")&&&&&&&&&&&&&&.toUpperCase();//MD5加密&&&&&&return&&&}&&
喜欢该文的人也喜欢微信支付调用统一下单接口啥也不给我返回
[问题点数:40分,无满意结帖,结帖人fuyang7412]
本版专家分:0
结帖率 25%
CSDN今日推荐
本版专家分:0
本版专家分:0
结帖率 25%
本版专家分:0
本版专家分:10
本版专家分:0
结帖率 25%
本版专家分:0
结帖率 25%
本版专家分:0
本版专家分:0
本版专家分:0
匿名用户不能发表回复!|
CSDN今日推荐&>&微信统一下单接口调用
微信统一下单接口调用
上传大小:284KB
2017年微信最新用于eclipse java开发调用微信统一接口。jar包齐全可以立马运行。只要参数正确就可以了
综合评分:0
{%username%}回复{%com_username%}{%time%}\
/*点击出现回复框*/
$(".respond_btn").on("click", function (e) {
$(this).parents(".rightLi").children(".respond_box").show();
e.stopPropagation();
$(".cancel_res").on("click", function (e) {
$(this).parents(".res_b").siblings(".res_area").val("");
$(this).parents(".respond_box").hide();
e.stopPropagation();
/*删除评论*/
$(".del_comment_c").on("click", function (e) {
var id = $(e.target).attr("id");
$.getJSON('/index.php/comment/do_invalid/' + id,
function (data) {
if (data.succ == 1) {
$(e.target).parents(".conLi").remove();
alert(data.msg);
$(".res_btn").click(function (e) {
var parentWrap = $(this).parents(".respond_box"),
q = parentWrap.find(".form1").serializeArray(),
resStr = $.trim(parentWrap.find(".res_area_r").val());
console.log(q);
//var res_area_r = $.trim($(".res_area_r").val());
if (resStr == '') {
$(".res_text").css({color: "red"});
$.post("/index.php/comment/do_comment_reply/", q,
function (data) {
if (data.succ == 1) {
var $target,
evt = e || window.
$target = $(evt.target || evt.srcElement);
var $dd = $target.parents('dd');
var $wrapReply = $dd.find('.respond_box');
console.log($wrapReply);
//var mess = $(".res_area_r").val();
var mess = resS
var str = str.replace(/{%header%}/g, data.header)
.replace(/{%href%}/g, 'http://' + window.location.host + '/user/' + data.username)
.replace(/{%username%}/g, data.username)
.replace(/{%com_username%}/g, data.com_username)
.replace(/{%time%}/g, data.time)
.replace(/{%id%}/g, data.id)
.replace(/{%mess%}/g, mess);
$dd.after(str);
$(".respond_box").hide();
$(".res_area_r").val("");
$(".res_area").val("");
$wrapReply.hide();
alert(data.msg);
}, "json");
/*删除回复*/
$(".rightLi").on("click", '.del_comment_r', function (e) {
var id = $(e.target).attr("id");
$.getJSON('/index.php/comment/do_comment_del/' + id,
function (data) {
if (data.succ == 1) {
$(e.target).parent().parent().parent().parent().parent().remove();
$(e.target).parents('.res_list').remove()
alert(data.msg);
//填充回复
function KeyP(v) {
var parentWrap = $(v).parents(".respond_box");
parentWrap.find(".res_area_r").val($.trim(parentWrap.find(".res_area").val()));
评论共有0条
VIP会员动态
热门资源标签
CSDN下载频道资源及相关规则调整公告V11.10
下载频道用户反馈专区
下载频道积分规则调整V1710.18
spring mvc+mybatis+mysql+maven+bootstrap 整合实现增删查改简单实例.zip
资源所需积分/C币
当前拥有积分
当前拥有C币
输入下载码
为了良好体验,不建议使用迅雷下载
微信统一下单接口调用
会员到期时间:
剩余下载个数:
剩余积分:0
为了良好体验,不建议使用迅雷下载
积分不足!
资源所需积分/C币
当前拥有积分
您可以选择
程序员的必选
绿色安全资源
资源所需积分/C币
当前拥有积分
当前拥有C币
为了良好体验,不建议使用迅雷下载
资源所需积分/C币
当前拥有积分
当前拥有C币
为了良好体验,不建议使用迅雷下载
资源所需积分/C币
当前拥有积分
当前拥有C币
您的积分不足,将扣除 10 C币
为了良好体验,不建议使用迅雷下载
无法举报自己的资源
你当前的下载分为234。
你还不是VIP会员
开通VIP会员权限,免积分下载
你下载资源过于频繁,请输入验证码
您因违反CSDN下载频道规则而被锁定帐户,如有疑问,请联络:!
若举报审核通过,可返还被扣除的积分
被举报人:
举报的资源分:
请选择类型
资源无法下载 ( 404页面、下载失败、资源本身问题)
资源无法使用 (文件损坏、内容缺失、题文不符)
侵犯版权资源 (侵犯公司或个人版权)
虚假资源 (恶意欺诈、刷分资源)
含色情、危害国家安全内容
含广告、木马病毒资源
*详细原因:
微信统一下单接口调用不忘初心,放飞自我
微信支付--预支付(统一下单)
微信官方文档:
1.按照微信官方文档接口的描述,将请求参数放入Map
protected Map&String, Object&
processPost(HttpServletRequest request, HttpServletResponse response) throws BaseException {
String attach = ConvertUtil.getTrimStringFromRequestParam(request, "attach", "")
String device_info = ConvertUtil.getTrimStringFromRequestParam(request, "device_info", WXPayConstants.DEVICE_INFO_DEFAULT.WEB.toString())
String body = ConvertUtil.getNonEmptyStringFromRequestParam(request, "body")
String detail = ConvertUtil.getTrimStringFromRequestParam(request, "detail", "")
String out_trade_no = ConvertUtil.getNonEmptyStringFromRequestParam(request, "out_trade_no")
String total_fee = ConvertUtil.getNonEmptyStringFromRequestParam(request, "total_fee")
String trade_type = ConvertUtil.getTrimStringFromRequestParam(request, "trade_type", WXPayConstants.TRADE_TYPE.JSAPI.toString())
String product_id = ConvertUtil.getNonEmptyStringFromRequestParam(request, "product_id")
String openid = ConvertUtil.getNonEmptyStringFromRequestParam(request, "openid")
Map&String, Object& parametersMap = CommonUtils.createMap("appid", WXPayConstants.APP_ID)
CommonUtils.generateMap(parametersMap, "attach", attach)
CommonUtils.generateMap(parametersMap, "mch_id", WXPayConstants.PAY_STORE_ID)
CommonUtils.generateMap(parametersMap, "device_info", device_info)
CommonUtils.generateMap(parametersMap, "nonce_str", WXPayUtil.generateNonceStr())
CommonUtils.generateMap(parametersMap, "sign_type", WXPayConstants.SignType.MD5)
CommonUtils.generateMap(parametersMap, "body", body)
CommonUtils.generateMap(parametersMap, "detail", detail)
CommonUtils.generateMap(parametersMap, "out_trade_no", out_trade_no)
CommonUtils.generateMap(parametersMap, "fee_type", WXPayConstants.FEE_TYPE.CNY)
CommonUtils.generateMap(parametersMap, "total_fee", total_fee)
CommonUtils.generateMap(parametersMap, "spbill_create_ip", CommonUtils.getIpAddr(request))
CommonUtils.generateMap(parametersMap, "notify_url", WXPayConstants.NOTIFY_URL)
CommonUtils.generateMap(parametersMap, "trade_type", trade_type)
CommonUtils.generateMap(parametersMap, "product_id", product_id)
CommonUtils.generateMap(parametersMap, "openid", openid)
return WechatService.prepayId(parametersMap)
2.用微信自带的工具类对map进行加密并获取签名
* 统一支付(获取预支付id)
* lichenyi
public static Map&String, Object&
prepayId(Map&String, Object& parametersMap) throws HttpRequestFailedException, MD5Exception {
String resultString = null;
String parameterXML = WXPayUtil.generateSignedXml(parametersMap);
WXPayRequest wxPayRequest = new WXPayRequest(new WXPayConfigBean());
resultString = wxPayRequest.requestWithoutCert(WXPayConstants.UNIFIEDORDER_URL_SUFFIX, WXPayUtil.generateNonceStr(), parameterXML, false);
logger.info("【预支付订单信息】 --& "+WXPayUtil.xmlToMap(resultString));
return WXPayUtil.xmlToMap(resultString);
} catch (Exception e) {
e.printStackTrace();
return null;
写的粗糙,有疑问,可以留言。
如果觉得文章真心好, 请打赏下我吧
没有更多推荐了,
加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!微信支付api中统一下单怎么写_百度知道
微信支付api中统一下单怎么写
api上只写了接口地址和一些参数 那我怎么使用 直接访问?参数1=参数1&参数2=参数2?
我有更好的答案
ictionary&String, String& requestParams = new Dictionary&string, string&();
requestParams.Add(&appid&, AppID);
requestParams.Add(&attach&, record.No);
requestParams.Add(&body&, record.Memo);
requestParams.Add(&mch_id&, mch_id);
requestParams.Add(&nonce_str&, TextHelper.CreateRandString(32));
requestParams.Add(&notify_url&, CallbackUrl + &?id=& + record.Id + &&userid=& + record.UsersId + &&amount=& + record.Amount);
requestParams.Add(&out_trade_no&, record.No);
requestParams.Add(&spbill_create_ip&, RemoteIpAddress);
requestParams.Add(&time_expire&, DateTime.Now.AddMinutes(30).ToString(&yyyyMMddHHmmss&));//订单失效时间30分钟
requestParams.Add(&total_fee&, record.Amount.ToString());
requestParams.Add(&fee_type&, &1&);
requestParams.Add(&trade_type&, &APP&);
requestParams.Add(&sign&, CreateSign(requestParams, true));
String content = HttpHelper.Post(&&, CreateXml(requestParams));
采纳率:37%
找到方法了嘛
1条折叠回答
为您推荐:
其他类似问题
手机型号的相关知识
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。

我要回帖

更多关于 微信支付下单失败 的文章

 

随机推荐