zoukankan      html  css  js  c++  java
  • netsuite与首信易支付(v4.3)接口

    问题1 ,文档中提及了 URL参数是以http://开头的完整URL地址。 而netsuite中向外开放的可用的地址都是https://,难道首信就不支持?这个问题需要与首信确认。 已答复:支持,曾经只有发现一个https无法返回的案例。说明此问题不是主要问题。

    问题2,步骤一, 用户从客户中心中自己下了订单后,决定支付,于是到订单页面点'前往支付'按钮,系统要传递订单信息,到suitelet来读取订单的资料,并展示给客户(下方定有一个'确认支付'),内容大致如下:

    <form name=form method=post
    action="http://pay.beijing.com.cn/prs/user_payment.checkit">
    <input type=hidden name=v_mid value="888"> 商户编号
    <input type=hidden name=v_oid value="19990720-888-000001234"> 订单编号
    <input type=hidden name=v_rcvname value="888"> 收货人姓名
    <input type=hidden name=v_rcvaddr value="北京海淀"> 收货人地址
    <input type=hidden name=v_rcvtel value="68475566"> 收货人电话
    <input type=hidden name=v_rcvpost value="100036"> 收货人邮编
    <input type=hidden name=v_amount value="13.45"> 订单总金额
    <input type=hidden name=v_ymd value="19990720"> 订单产生日期
    <input type=hidden name=v_orderstatus value="0"> 配货状态
    <input type=hidden name=v_ordername value="李四"> 订货人姓名
    <input type=hidden name=v_moneytype value="0"> 币种,0为人民币,1为美元
    <input type=hidden name=v_url value="http://domain/program"> //支付动作完成后返回到该url,支付结果以GET方式发送
    <input type=hidden name=v_md5info value="1630dc083d70a1e8af60f49c143a7b95"> //订单数字指纹
    <img src="../path/../首信易支付.gif" width="150" height="30"
    onClick="document.form.submit();>"
    </form>

    这个时候这个页面上这些input 可以显示但是已经是不可以修改的form;一旦用户点击这个图片 submit给首信。这个步骤就完毕了,

    步骤二,接收返回的页面一,支付完成后页面转到商户时,从首信易支付返回的消息格式(注意,与后台接口程序文档第三部分定时发送方式使用的消息格式有区别); 这个时候要做的事情 ,可能不是告诉netsuite已经支付成功,有可能还只是提交成功,因为首信返回了付款的方式如那家银行等等。这个时候netsuite需要记录这些信息到特定so的特定字段上,

    步骤三,

    问题3,<SCRIPT language="vbscript" type="text/vbscript" runat=server>
    function str2binlExpress(str) 是在md5.inc中定义的,也就是说验证的程序需要调用vbscript 这样netsuite支持吗?
    javascript中只有Unicode转换没有ascii码转换,所以要用vbscript中的代码来实现...加了这段代码后,最好在页面中有脚本的地方都写清楚脚本语言,否则可能会出现错误。

    解决:c=String.fromCharCode(65)
    ---------------------------------------------------------------

    str.charCodeAt(x),表示将字符串str中的第x个字符转变成ASCII值
    求ASCII转字符:javascript用String.fromCharCode(x);vbscript用chr(x)或chrw(x)
    求字符转ASCII:javascript用??;vbscript用asc('字符')

    chr Asc 这两个函数很难转的 ??碰到了Asc

    function str2binlExpress(str)
    result = ""
    a = ""
    b = 0
    for i = 1 to len(str)

    a = mid(str,i,1)
    b = asc(a)

    if b > -1 and b < 255 then
    result = result & b & ","
    end if

    if b<0 then
    result = result & int((b + 65536)/256) & ","
    result = result & (b and 255) & ","
    end if

    if(b > 255) then
    result = result & int((b)/256) & ","
    result = result & (b and 255) & ","
    end if
    next
    str2binlExpress = result
    end function

    将被从vbscript转化为javascript 转化结果如下:

    function str2binlExpress(str)
    {
    result = "";
    var a = "";
    var b = 0;
    for( var i=0; i<str.length; i++)
    {
    //a = mid(str,i,1); //mid 是从第i位往后的i位
    //b = asc(a);
    a=str.substr(i,1); //substr 是从i位往后的1位
    b = a.charCodeAt(0); //绝对是从0开始的.

    if ( b > -1 && b < 255) result = result + b + "," ;

    if ( b<0 ) {
    result = result + parseInt( (parseInt(b) + 65536)/256 ) + ","; //result = result + int((b + 65536)/256) + ",";
    result = result + (b & 255) + "," ;
    }

    if( b > 255) {
    result = result + parseInt( b/256 ) + ","; //result = result + int((b)/256) + ",";
    result = result + (b & 255) + ",";
    }
    }
    var str2binlExpress = result;
    //alert('str:'+str+'a:'+a+'b:'+b+'str2binlExpress:'+str2binlExpress);
    return str2binlExpress;
    }

    英文状态下是ok的,询问易支付后得知,他们都使用gb2312来校验的,我需要做的就是发送时v_rcvname涉及字符装换;接收时涉及 v_pmode 和 v_pstring的字符转化。

    问题4:已确认发送成功,并且银行支付成功,但是没有取得实时的返回,那么原因已排出url是带119个字符并且有参数的原因,那么需要继续测试银行支付成功以后,银行给我中转值的情况。

  • 相关阅读:
    count(*) 和 count(1)和count(列名)区别
    网页横向滚动条
    发送公众号模板消息
    tp中S与session()
    php 判断sql执行时间
    thinkphp联查
    php 获取当前时间
    微信分享
    测试用手机奇怪问题
    翻译|多少植物才能净化室内空气?
  • 原文地址:https://www.cnblogs.com/backuper/p/1373743.html
Copyright © 2011-2022 走看看